syno_api/
lib.rs

1//! An incomplete set of data transfer objects (DTOs) and errors for
2//! Synology DSM APIs.
3//!
4//! ## Features
5//!
6//! By default, all of the following features are enabled.
7//!
8//! * `dto` - provides DTOs for various JSON responses produced by
9//!   Synology DSM APIs
10//! * `error` - provides enums implementing `Error` and `Display` traits,
11//!   and `From`/`TryFrom` for `u16` to convert from error codes returned
12//!   by the API to enum values
13//! * `serde` - adds `Serialize` and `Deserialize` trait implementations
14//!   to DTOs (adds dependency on `serde` library).
15
16pub mod auth;
17#[cfg(feature = "error")]
18pub mod error;
19pub mod foto;
20pub mod foto_team;
21
22#[cfg(feature = "dto")]
23pub mod dto {
24    //! Generic types applicable to all sub-APIs
25
26    #[cfg(feature = "serde")]
27    use serde::{Deserialize, Serialize};
28
29    #[derive(Debug, Eq, PartialEq, Hash)]
30    #[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
31    pub struct ApiResponse<D> {
32        pub success: bool,
33        pub data: Option<D>,
34        pub error: Option<Error>,
35    }
36
37    pub type ApiResponseWithList<T> = ApiResponse<List<T>>;
38
39    #[derive(Debug, Default, Eq, PartialEq, Hash)]
40    #[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
41    pub struct List<T> {
42        pub list: Vec<T>,
43    }
44
45    #[derive(Debug, Eq, PartialEq, Hash)]
46    #[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
47    pub struct Error {
48        pub code: u16,
49    }
50}