use super::super::super::*;
use super::super::*;
pub struct Builder<'a> {
flickr: &'a mut FlickrAPI,
}
impl<'a> Builder<'a> {
pub fn new(flickr: &mut FlickrAPI) -> Builder {
Builder {
flickr: flickr,
}
}
pub fn check_token(&mut self) -> CheckTokenBuilder {
CheckTokenBuilder {flickr: self.flickr}
}
}
pub struct CheckTokenBuilder<'a> {
flickr: &'a mut FlickrAPI,
}
impl<'a> CheckTokenBuilder<'a> {
pub fn perform(&'a mut self) -> Result<CheckTokenResult, FlickrError> {
let content = self.flickr.call_method("flickr.auth.oauth.checkToken", BTreeMap::new())?;
debug!("content: {}", content);
let r: CheckTokenResult = serde_json::from_str(&content)?;
debug!("de: {:#?}", r);
return Ok(r);
}
}
#[derive(Deserialize, Debug)]
pub struct CheckTokenResult {
#[serde(default)]
pub stat: String,
#[serde(default)]
pub code: i32,
#[serde(default)]
pub message: String,
#[serde(default)]
pub oauth: Option<Oauth>,
}
#[derive(Deserialize, Debug)]
pub struct Oauth {
#[serde(deserialize_with = "string_from_content_block", default)]
pub token: String,
#[serde(deserialize_with = "string_from_content_block", default)]
pub perms: String,
pub user: User,
}
#[derive(Deserialize, Debug)]
pub struct User {
#[serde(default)]
pub nsid: String,
#[serde(default)]
pub username: String,
#[serde(default)]
pub fullname: String,
}