gapirs-common 0.0.1

Common library for gapirs
Documentation
use derive_more::{Display, Error, From};
use hyper::{http, http::uri::InvalidUri, StatusCode};
pub(crate) use std::error::Error as StdError;
use std::num::NonZeroU16;
pub(crate) use std::result::Result as StdResult;

#[derive(Debug, Display, Error, From)]
pub enum ApiError {
    ApiCall(ApiCallError),
}

#[derive(Debug, Display, Error, From)]
pub enum ApiCallError {
    SerializeBody(#[error(source)] serde_json::Error),
    GetUrl(GetUrlError),
    Call(CallError),
    GetToken(GetTokenError),
    NoHub,
    MultipleMediaUploads,
    ResumableUpload(ResumableUploadError),
}

#[derive(Debug, Display, Error, From)]
pub enum ResumableUploadError {
    NoOrInvalidLocationHeader,
    ParseSessionUrl(#[error(source)] url::ParseError),
    ParseRangesHeader,
    ResolveRange,
    NoMediaBody,
    NoUrl,
    SeekPosition(#[error(source)] std::io::Error),
    ParseRange(ParseRangeError),
}
#[derive(Debug, Display, Error, From)]
pub enum ParseRangeError {
    StartAndEndEmpty,
}
#[derive(Debug, Display, Error, From)]
pub enum GetTokenError {
    Auth(yup_oauth2::Error),
    TokenExpired,
    NoToken,
}

#[derive(Debug, Display, Error, From)]
pub enum CallError {
    ParseResponse(serde_json::Error),
    WriteBodyToStream(#[error(source)] std::io::Error),
    NonSuccessStatusCode(NonSuccessStatusCodeError),
    InvalidRequest(#[error(source)] http::Error),
    Request(#[error(source)] hyper_util::client::legacy::Error),
    GetBody(#[error(source)] hyper::Error),
    NoDownloadTarget,
    DownloadSetInNotDownloadCall,
}

#[derive(Debug, Display, Error, From)]
#[display("code:{} message:{}", status_code, message)]
pub struct NonSuccessStatusCodeError {
    status_code: StatusCode,
    message: String,
}

#[derive(Debug, Display, Error, From)]
pub enum GetUrlError {
    GetBase,
    GetPath,
    NoMediaPath,
    Parse(#[error(source)] url::ParseError),
    Build(#[error(source)] http::Error),
    FromStr(#[error(source)] InvalidUri),
}