use 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 get_list(&mut self) -> GetListBuilder {
GetListBuilder::new(self.flickr)
}
pub fn get_context(&mut self) -> GetContextBuilder {
GetContextBuilder::new(self.flickr)
}
pub fn add(&mut self) -> AddBuilder {
AddBuilder::new(self.flickr)
}
pub fn remove(&mut self) -> RemoveBuilder {
RemoveBuilder::new(self.flickr)
}
pub fn get_public_list(&mut self) -> GetPublicListBuilder {
GetPublicListBuilder::new(self.flickr)
}
}
pub struct GetListBuilder<'a> {
flickr: &'a mut FlickrAPI,
user_id: Option<String>,
min_fave_date: Option<u128>,
max_fave_date: Option<u128>,
extras: Option<String>,
per_page: Option<i32>,
page: Option<i32>,
}
impl<'a> GetListBuilder<'a> {
pub fn new(flickr: &mut FlickrAPI) -> GetListBuilder {
GetListBuilder {
flickr: flickr,
user_id: Option::None,
min_fave_date: Option::None,
max_fave_date: Option::None,
extras: Option::None,
per_page: Option::None,
page: Option::None,
}
}
implement_setters!(self
;
; user_id: String, min_fave_date: u128, max_fave_date: u128, extras: String, per_page: i32, page: i32
);
implement_perform!(self, GetListResult, "flickr.favorites.getList"
;
; user_id: String, min_fave_date: u128, max_fave_date: u128, extras: String, per_page: i32, page: i32
);
}
#[derive(Deserialize, Debug)]
pub struct GetListResult {
#[serde(default)]
pub stat: String,
#[serde(default)]
pub code: i32,
#[serde(default)]
pub message: String,
#[serde(default)]
pub photos: Option<Photos>,
}
#[derive(Deserialize, Debug)]
pub struct Photos {
#[serde(default)]
pub page: i32,
#[serde(default)]
pub pages: i32,
#[serde(default)]
pub perpage: i32,
#[serde(deserialize_with = "i32_from_string", default)]
pub total: i32,
#[serde(default)]
pub photo: Vec<Photo>,
}
#[derive(Deserialize, Debug)]
pub struct Photo {
pub id: String,
pub owner: String,
#[serde(default)]
pub secret: String,
#[serde(default)]
pub server: String,
#[serde(default)]
pub farm: i32,
#[serde(default)]
pub title: String,
#[serde(deserialize_with = "bool_from_int", default)]
pub ispublic: bool,
#[serde(deserialize_with = "bool_from_int", default)]
pub isfriend: bool,
#[serde(deserialize_with = "bool_from_int", default)]
pub isfamily: bool,
#[serde(deserialize_with = "date_from_string")]
pub date_faved: DateTime<Local>,
}
pub struct GetContextBuilder<'a> {
flickr: &'a mut FlickrAPI,
photo_id: String,
user_id: String,
}
impl<'a> GetContextBuilder<'a> {
pub fn new(flickr: &mut FlickrAPI) -> GetContextBuilder {
GetContextBuilder {
flickr: flickr,
photo_id: String::new(),
user_id: String::new(),
}
}
implement_setters!(self
; photo_id: String, user_id: String
;
);
implement_perform!(self, GetContextResult, "flickr.favorites.getContext"
; photo_id: String, user_id: String
;
);
}
#[derive(Deserialize, Debug)]
pub struct GetContextResult {
#[serde(default)]
pub stat: String,
#[serde(default)]
pub code: i32,
#[serde(default)]
pub message: String,
#[serde(deserialize_with = "i32_from_content_block", default)]
pub count: i32,
#[serde(default)]
pub prevphoto: Option<ContextPhoto>,
#[serde(default)]
pub nextphoto: Option<ContextPhoto>,
}
#[derive(Deserialize, Debug)]
pub struct ContextPhoto {
pub id: String,
pub owner: String,
#[serde(default)]
pub secret: String,
#[serde(default)]
pub server: String,
#[serde(default)]
pub farm: i32,
#[serde(default)]
pub title: String,
#[serde(default)]
pub url: String,
#[serde(default)]
pub thumb: String,
#[serde(deserialize_with = "i32_from_string", default)]
pub license: i32,
#[serde(default)]
pub media: String,
#[serde(deserialize_with = "bool_from_int", default)]
pub is_faved: bool,
}
pub struct AddBuilder<'a> {
flickr: &'a mut FlickrAPI,
photo_id: String,
}
impl<'a> AddBuilder<'a> {
pub fn new(flickr: &mut FlickrAPI) -> AddBuilder {
AddBuilder {
flickr: flickr,
photo_id: String::new(),
}
}
implement_setters!(self
; photo_id: String
;
);
implement_perform!(self, AddResult, "flickr.favorites.add"
; photo_id: String
;
);
}
#[derive(Deserialize, Debug)]
pub struct AddResult {
#[serde(default)]
pub stat: String,
#[serde(default)]
pub code: i32,
#[serde(default)]
pub message: String,
}
pub struct RemoveBuilder<'a> {
flickr: &'a mut FlickrAPI,
photo_id: String,
}
impl<'a> RemoveBuilder<'a> {
pub fn new(flickr: &mut FlickrAPI) -> RemoveBuilder {
RemoveBuilder {
flickr: flickr,
photo_id: String::new(),
}
}
implement_setters!(self
; photo_id: String
;
);
implement_perform!(self, RemoveResult, "flickr.favorites.remove"
; photo_id: String
;
);
}
#[derive(Deserialize, Debug)]
pub struct RemoveResult {
#[serde(default)]
pub stat: String,
#[serde(default)]
pub code: i32,
#[serde(default)]
pub message: String,
}
pub struct GetPublicListBuilder<'a> {
flickr: &'a mut FlickrAPI,
user_id: Option<String>,
min_fave_date: Option<u128>,
max_fave_date: Option<u128>,
extras: Option<String>,
per_page: Option<i32>,
page: Option<i32>,
}
impl<'a> GetPublicListBuilder<'a> {
pub fn new(flickr: &mut FlickrAPI) -> GetPublicListBuilder {
GetPublicListBuilder {
flickr: flickr,
user_id: Option::None,
min_fave_date: Option::None,
max_fave_date: Option::None,
extras: Option::None,
per_page: Option::None,
page: Option::None,
}
}
implement_setters!(self
;
; user_id: String, min_fave_date: u128, max_fave_date: u128, extras: String, per_page: i32, page: i32
);
implement_perform!(self, GetListResult, "flickr.favorites.getPublicList"
;
; user_id: String, min_fave_date: u128, max_fave_date: u128, extras: String, per_page: i32, page: i32
);
}
#[cfg(test)]
mod tests;