From 0c5593f66a11eb63e9d92b0fc6fc8aa460c4b1f4 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 12 May 2026 03:51:32 +0900 Subject: feat(port): port IgnoredSecurityAdvisory.php --- .../src/advisory/ignored_security_advisory.rs | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'crates/shirabe/src') diff --git a/crates/shirabe/src/advisory/ignored_security_advisory.rs b/crates/shirabe/src/advisory/ignored_security_advisory.rs index 37ba7fa..b260644 100644 --- a/crates/shirabe/src/advisory/ignored_security_advisory.rs +++ b/crates/shirabe/src/advisory/ignored_security_advisory.rs @@ -1 +1,44 @@ //! ref: composer/src/Composer/Advisory/IgnoredSecurityAdvisory.php + +use chrono::{DateTime, Utc}; +use indexmap::IndexMap; +use shirabe_php_shim::PhpMixed; +use shirabe_semver::constraint::constraint_interface::ConstraintInterface; +use crate::advisory::security_advisory::SecurityAdvisory; + +#[derive(Debug)] +pub struct IgnoredSecurityAdvisory { + inner: SecurityAdvisory, + pub ignore_reason: Option, +} + +impl IgnoredSecurityAdvisory { + pub fn new( + package_name: String, + advisory_id: String, + affected_versions: Box, + title: String, + sources: Vec>, + reported_at: DateTime, + cve: Option, + link: Option, + ignore_reason: Option, + severity: Option, + ) -> Self { + let inner = SecurityAdvisory::new(package_name, advisory_id, affected_versions, title, sources, reported_at, cve, link, severity); + Self { + inner, + ignore_reason, + } + } + + pub fn json_serialize(&self) -> PhpMixed { + let mut data = self.inner.json_serialize(); + if self.ignore_reason.is_none() { + if let PhpMixed::Array(ref mut map) = data { + map.remove("ignoreReason"); + } + } + data + } +} -- cgit v1.3.1