diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-12 03:51:32 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-12 03:51:32 +0900 |
| commit | 0c5593f66a11eb63e9d92b0fc6fc8aa460c4b1f4 (patch) | |
| tree | 0f5953607b052acbc63520e70e59e2f92d5c14ba /crates/shirabe | |
| parent | adeeed0e989a6643862cb2cd8f885edd03105bc1 (diff) | |
| download | php-shirabe-0c5593f66a11eb63e9d92b0fc6fc8aa460c4b1f4.tar.gz php-shirabe-0c5593f66a11eb63e9d92b0fc6fc8aa460c4b1f4.tar.zst php-shirabe-0c5593f66a11eb63e9d92b0fc6fc8aa460c4b1f4.zip | |
feat(port): port IgnoredSecurityAdvisory.php
Diffstat (limited to 'crates/shirabe')
| -rw-r--r-- | crates/shirabe/Cargo.toml | 1 | ||||
| -rw-r--r-- | crates/shirabe/src/advisory/ignored_security_advisory.rs | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/crates/shirabe/Cargo.toml b/crates/shirabe/Cargo.toml index 8ff50f0..6117540 100644 --- a/crates/shirabe/Cargo.toml +++ b/crates/shirabe/Cargo.toml @@ -7,6 +7,7 @@ edition.workspace = true shirabe-php-shim.workspace = true anyhow.workspace = true base64.workspace = true +chrono.workspace = true indexmap.workspace = true md5.workspace = true regex.workspace = true 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<String>, +} + +impl IgnoredSecurityAdvisory { + pub fn new( + package_name: String, + advisory_id: String, + affected_versions: Box<dyn ConstraintInterface>, + title: String, + sources: Vec<IndexMap<String, String>>, + reported_at: DateTime<Utc>, + cve: Option<String>, + link: Option<String>, + ignore_reason: Option<String>, + severity: Option<String>, + ) -> 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 + } +} |
