rosu_render/model/
user_preset.rs

1use std::collections::HashMap;
2
3use hyper::{body::Bytes, StatusCode};
4use serde::Deserialize;
5use serde_json::Value;
6use time::OffsetDateTime;
7
8use crate::{request::Requestable, util::datetime::deserialize_datetime, ClientError};
9
10/// Preset render settings of a user
11#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
12pub struct UserPreset {
13    /// Name of the preset
14    #[serde(rename = "presetName")]
15    pub name: String,
16    /// Timestamp of last preset save
17    #[serde(rename = "lastSavedOn", deserialize_with = "deserialize_datetime")]
18    pub last_saved_on: OffsetDateTime,
19    /// All setting values
20    #[serde(flatten)]
21    pub settings: HashMap<String, Value>,
22}
23
24impl Requestable for UserPreset {
25    fn response_error(status: StatusCode, bytes: Bytes) -> ClientError {
26        if status == StatusCode::NOT_FOUND {
27            ClientError::PresetNotFound
28        } else {
29            ClientError::response_error(bytes, status.as_u16())
30        }
31    }
32}