1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//! Error types

use crate::resource::ErrorResponse;
use reqwest::header::InvalidHeaderValue;
use thiserror::Error;

/// Error type
#[derive(Error, Debug)]
pub enum Error {
    /// Missing resource data
    #[error("Missing resource data on a resource")]
    MissingResourceData,
    /// Invalid resource type error
    #[error("Invalid resource type")]
    InvalidResourceType,
    /// Apple music error
    #[error("Apple music error: {0:#?}")]
    MusicError(ErrorResponse),
    /// Invalid header value
    #[error("Invalid header value")]
    InvalidHeaderValue(#[from] InvalidHeaderValue),
    /// A [`reqwest::Error`] occured
    #[error(transparent)]
    Reqwest(#[from] reqwest::Error),
    /// A [`tinytemplate::error::Error`] occurred
    #[error(transparent)]
    TinyTemplate(#[from] tinytemplate::error::Error),
    /// A [`serde_json::Error`] occured
    #[error(transparent)]
    Json(#[from] serde_json::Error),
}