ephemeris_forge_github/reconcile/
security.rs1use ephemeris_forge::RepoRef;
2
3use super::Client;
4use crate::api::{Api, ForgeError};
5use crate::operation::security::Operation;
6use crate::{Live, Security};
7
8impl<A: Api> Client<A> {
9 pub(super) async fn read_security(
10 &self,
11 repository: &RepoRef,
12 config: &Security,
13 live: &mut Live,
14 ) -> Result<(), ForgeError> {
15 if config.vulnerability_alerts.is_some() {
16 live.security.vulnerability_alerts = self.api.vulnerability_alerts(repository).await?;
17 }
18 if config.automated_security_fixes.is_some() {
19 live.security.automated_security_fixes =
20 self.api.automated_security_fixes(repository).await?;
21 }
22 if config.private_vulnerability_reporting.is_some() {
23 live.security.private_vulnerability_reporting =
24 self.api.private_vulnerability_reporting(repository).await?;
25 }
26 if config.code_scanning_default_setup.is_some() {
27 live.security.code_scanning_default_setup =
28 self.api.code_scanning_default_setup(repository).await?;
29 }
30 Ok(())
31 }
32
33 pub(super) async fn apply_security(
34 &self,
35 repository: &RepoRef,
36 operation: &Operation,
37 ) -> Result<(), ForgeError> {
38 match operation {
39 Operation::PatchAnalysis(patch) => {
40 self.api.patch_security_analysis(repository, patch).await
41 }
42 Operation::SetVulnerabilityAlerts(enabled) => {
43 self.api
44 .set_vulnerability_alerts(repository, *enabled)
45 .await
46 }
47 Operation::SetAutomatedSecurityFixes(enabled) => {
48 self.api
49 .set_automated_security_fixes(repository, *enabled)
50 .await
51 }
52 Operation::SetPrivateVulnerabilityReporting(enabled) => {
53 self.api
54 .set_private_vulnerability_reporting(repository, *enabled)
55 .await
56 }
57 Operation::PatchCodeScanning(patch) => {
58 self.api
59 .patch_code_scanning_default_setup(repository, patch)
60 .await
61 }
62 }
63 }
64}