rusty_dropbox_sdk 0.8.2

Unofficial SDK for dropbox in Rust
Documentation
use super::{PaperUpdateArgs as Args, PaperUpdateResult as RequestResult};

use crate::{
    anyhow::Result,
    endpoints::headers::Headers,
    endpoints::{get_endpoint_url, Endpoint},
    errors::ApiError,
    implement_content_upload_utils, implement_service,
    traits::{Service, Utils},
    AsyncClient, SyncClient,
};
use serde::Deserialize;
use std::{future::Future, pin::Pin};

/// Type aliases for readability
type Request<'a> = PaperUpdateRequest<'a>;
type Response = PaperUpdateResponse;
type RequestPayload = Args;
type ResponsePayload = RequestResult;

/// Paper update
/// <https://www.dropbox.com/developers/documentation/http/documentation#files-paper-update>
#[derive(Debug)]
pub struct PaperUpdateRequest<'a> {
    pub access_token: &'a str,
    pub payload: Option<RequestPayload>,
    /// Binary body bytes.
    pub data: Option<Vec<u8>>,
}

/// Response struct for adding properties
#[derive(Deserialize, Debug)]
#[allow(dead_code)]
pub struct PaperUpdateResponse {
    pub payload: ResponsePayload,
}

// Impl utils trait
implement_content_upload_utils!(Request<'_>, RequestPayload);

// Impl service trait
implement_service!(
    Request<'_>,
    Response,
    ResponsePayload,
    Endpoint::FilesPaperUpdatePost,
    vec![
        Headers::ContentTypeAppOctetStream,
        Headers::DropboxApiArg("".to_string())
    ]
);

#[cfg(all(test, feature = "test-utils"))]
mod tests {
    use crate::TEST_AUTH_TOKEN;

    use super::{Request, RequestPayload};

    use tokio;

    use crate::{
        endpoints::{get_endpoint_url, headers::Headers, Endpoint},
        implement_tests,
        tests_utils::get_endpoint_test_body_response,
        traits::Service,
    };

    implement_tests!(
        Endpoint::FilesPaperUpdatePost,
        vec![
            Headers::TestAuthorization,
            Headers::ContentTypeAppOctetStream,
            Headers::DropboxApiArg("".to_string())
        ],
        Request,
        RequestPayload
    );
}