diff --git a/src/gdpr/endpoints.rs b/src/gdpr/endpoints.rs new file mode 100644 index 0000000..7360f53 --- /dev/null +++ b/src/gdpr/endpoints.rs @@ -0,0 +1,63 @@ +use std::marker::PhantomData; + +use crate::{ContentType, Endpoint, GdprCommissioners, GdprConsents}; + +pub const SEND_GDPR_OBJECTION_ENDPOINT: Endpoint<(), String> = Endpoint::Post { + url: "/api/3/payments/classfund/paymentsinfo", + auth: true, + content_type: ContentType::Json, + _types: PhantomData, +}; + +pub const GDPR_CONSENT_REVOKE_ENDPOINT: Endpoint<(), ()> = Endpoint::Put { + url: "/api/3/gdpr/consent/{id}/revoke-request", + auth: true, + content_type: ContentType::Json, + _types: PhantomData, +}; + +pub const GDPR_CONSENT_AGREE_ENDPOINT: Endpoint<(), ()> = Endpoint::Put { + url: "/api/3/gdpr/consent/{id}/agree", + auth: true, + content_type: ContentType::Json, + _types: PhantomData, +}; + +pub const GDPR_CONSENT_DISAGREE_ENDPOINT: Endpoint<(), ()> = Endpoint::Put { + url: "/api/3/gdpr/consent/{id}/disagree", + auth: true, + content_type: ContentType::Json, + _types: PhantomData, +}; + +pub const GDPR_CONSENTS_COUNT_ENDPOINT: Endpoint = Endpoint::Get { + url: "/api/3/gdpr/consents/person/new", + auth: true, + _types: PhantomData, +}; + +pub const SEND_GDPR_REPORT_ENDPOINT: Endpoint<(), ()> = Endpoint::Post { + // unknown request type + url: "/api/3/gdpr/commissioner/send-report", + auth: true, + content_type: ContentType::Json, + _types: PhantomData, +}; + +pub const GET_GDPR_COMMISSIONERS_ENDPOINT: Endpoint = Endpoint::Get { + url: "/api/3/gdpr/commissioners", + auth: true, + _types: PhantomData, +}; + +pub const GET_GDPR_CHILD_CONSENTS_ENDPOINT: Endpoint = Endpoint::Get { + url: "/api/3/gdpr/consents/person/child", + auth: true, + _types: PhantomData, +}; + +pub const GET_GDPR_CONSENTS_ENDPOINT: Endpoint = Endpoint::Get { + url: "/api/3/gdpr/consents/person", + auth: true, + _types: PhantomData, +}; diff --git a/src/gdpr.rs b/src/gdpr/gdpr.rs similarity index 91% rename from src/gdpr.rs rename to src/gdpr/gdpr.rs index 959f4ee..a2bedaf 100644 --- a/src/gdpr.rs +++ b/src/gdpr/gdpr.rs @@ -70,3 +70,9 @@ pub struct GdprConsentRights { pub can_disagree: bool, pub can_revoke_request: bool, } + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct GdprConsents { + pub person_consents: Vec, +} diff --git a/src/gdpr/mod.rs b/src/gdpr/mod.rs new file mode 100644 index 0000000..2079a5b --- /dev/null +++ b/src/gdpr/mod.rs @@ -0,0 +1,5 @@ +mod endpoints; +mod gdpr; + +pub use endpoints::*; +pub use gdpr::*; diff --git a/src/lib.rs b/src/lib.rs index 8e67459..18023de 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,10 +30,7 @@ pub use campaign::Campaign; pub use endpoints::*; pub use error::{Error, ModelState, StringArray}; pub use events::*; -pub use gdpr::{ - GdprCommissioner, GdprCommissioners, GdprConsent, GdprConsentRights, GdprConsentState, - GdprValidity, -}; +pub use gdpr::*; pub use homework::*; pub use marks::*; pub use others::*;