psn_api_rs 0.3.0

A simple PSN Network API wrapper
Documentation
use crate::models::MessageDetail;

#[cfg(feature = "default")]
#[derive(Deserialize, Debug)]
pub(crate) struct Tokens {
    pub(crate) access_token: Option<String>,
    pub(crate) refresh_token: Option<String>,
}

#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PSNResponseError {
    pub(crate) error: PSNResponseErrorInner,
}

#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PSNResponseErrorInner {
    pub(crate) code: u32,
    pub(crate) message: String,
}

#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub(crate) struct SendMessage {
    message_event_detail: SendMessageEventDetail,
}

#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
struct SendMessageEventDetail {
    event_category_code: u8,
    message_detail: MessageDetail,
}

impl SendMessage {
    pub(crate) fn new(body: Option<&str>, event_category_code: u8) -> Self {
        SendMessage {
            message_event_detail: SendMessageEventDetail {
                event_category_code,
                message_detail: MessageDetail {
                    body: Some(body.unwrap_or("").to_owned()),
                },
            },
        }
    }
}

#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
pub(crate) struct GenerateNewThread<'a> {
    thread_detail: NewThreadMembers<'a>,
}

#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
struct NewThreadMembers<'a> {
    thread_members: Vec<NewThreadMember<'a>>,
}

#[derive(Serialize, Debug)]
#[serde(rename_all = "camelCase")]
struct NewThreadMember<'a> {
    online_id: &'a str,
}

impl<'a> GenerateNewThread<'a> {
    pub(crate) fn new(other_id: &'a str, self_id: &'a str) -> Self {
        GenerateNewThread {
            thread_detail: NewThreadMembers {
                thread_members: vec![
                    NewThreadMember {
                        online_id: other_id,
                    },
                    NewThreadMember { online_id: self_id },
                ],
            },
        }
    }
}