mangadex_api/v5/
upload.rs

1//! Upload endpoint handler.
2//!
3//! <https://api.mangadex.org/docs/swagger.html#/Upload>
4
5use uuid::Uuid;
6
7use crate::v5::cover::manga_id::post::UploadCoverBuilder;
8
9use crate::HttpClientRef;
10
11pub mod begin;
12pub mod check_approval_required;
13pub mod get;
14pub mod upload_session_id;
15
16use self::begin::BeginEndpoint;
17use self::check_approval_required::CheckApprovalRequiredEndpoint;
18use self::get::GetUploadSessionBuilder;
19use self::upload_session_id::UploadSessionIdEndpoint;
20
21/// Upload endpoint handler builder.
22#[derive(Debug)]
23pub struct UploadBuilder {
24    http_client: HttpClientRef,
25}
26
27impl UploadBuilder {
28    #[doc(hidden)]
29    pub(crate) fn new(http_client: HttpClientRef) -> Self {
30        Self { http_client }
31    }
32
33    /// Upload a manga cover image.
34    ///
35    /// <https://api.mangadex.org/swagger.html#/Upload/upload-cover>
36    pub fn cover(&self, manga_id: Uuid) -> UploadCoverBuilder {
37        UploadCoverBuilder::default()
38            .manga_id(manga_id)
39            .http_client(self.http_client.clone())
40    }
41
42    pub fn get(&self) -> GetUploadSessionBuilder {
43        GetUploadSessionBuilder::default().http_client(self.http_client.clone())
44    }
45
46    pub fn begin(&self) -> BeginEndpoint {
47        BeginEndpoint::new(self.http_client.clone())
48    }
49
50    pub fn upload_session_id(&self, upload_session_id: Uuid) -> UploadSessionIdEndpoint {
51        UploadSessionIdEndpoint::new(self.http_client.clone(), upload_session_id)
52    }
53    pub fn check_approval_required(&self) -> CheckApprovalRequiredEndpoint {
54        CheckApprovalRequiredEndpoint::new(self.http_client.clone())
55    }
56}