use std::fmt;
#[derive(Debug, Default, Serialize)]
pub struct AppBuilder<'a> {
pub client_name: &'a str,
pub redirect_uris: &'a str,
pub scopes: Scopes,
#[serde(skip_serializing_if="Option::is_none")]
pub website: Option<&'a str>,
}
#[derive(Debug, Clone, Copy, Serialize)]
pub enum Scopes {
#[serde(rename = "read write follow")]
All,
#[serde(rename = "follow")]
Follow,
#[serde(rename = "read")]
Read,
#[serde(rename = "read follow")]
ReadFollow,
#[serde(rename = "read write")]
ReadWrite,
#[serde(rename = "write")]
Write,
#[serde(rename = "write follow")]
WriteFollow,
}
impl fmt::Display for Scopes {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use self::Scopes::*;
write!(f, "{}", match *self {
All => "read%20write%20follow",
Follow => "follow",
Read => "read",
ReadFollow => "read%20follow",
ReadWrite => "read%20write",
Write => "write",
WriteFollow => "write%20follow"
})
}
}
impl Default for Scopes {
fn default() -> Self {
Scopes::Read
}
}