smbcloud_model/
signup.rs

1use crate::account::{Data, Status};
2use serde::{Deserialize, Serialize};
3use std::fmt::{Display, Formatter};
4
5pub struct SignupArgs {
6    pub email: String,
7    pub password: Option<String>,
8    pub password_confirmation: Option<String>,
9    pub authorizations_attributes: Vec<Provider>,
10}
11
12#[derive(Debug, Serialize)]
13pub struct Provider {
14    pub uid: String,
15    pub provider: i8,
16}
17
18#[derive(Debug, Serialize)]
19pub struct SignupGithubParams {
20    pub user: SignupUserGithub,
21}
22
23#[derive(Debug, Serialize)]
24pub struct SignupEmailParams {
25    pub user: SignupUserEmail,
26}
27
28#[derive(Debug, Serialize)]
29pub struct SignupUserGithub {
30    pub email: String,
31    pub authorizations_attributes: Vec<Provider>,
32}
33
34#[derive(Debug, Serialize)]
35pub struct SignupUserEmail {
36    pub email: String,
37    pub password: String,
38}
39
40#[derive(Debug, Serialize, Deserialize)]
41pub struct SignupResult {
42    pub status: Status,
43    pub data: Option<Data>,
44}
45
46#[derive(Debug, Serialize, Deserialize)]
47pub struct GithubUser {
48    pub email: Option<String>,
49    pub name: String,
50}
51
52#[derive(Debug, Serialize, Deserialize)]
53pub struct GithubEmail {
54    pub email: String,
55    primary: bool,
56    verified: bool,
57    visibility: Option<String>,
58}
59
60impl Display for GithubEmail {
61    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
62        write!(f, "{}", self.email)
63    }
64}
65
66#[cfg(test)]
67mod tests {}