package org.springframework.social.flickr.api.impl;
import org.springframework.social.flickr.api.FavoritesOperations;
import org.springframework.social.flickr.api.Photos;
import org.springframework.social.flickr.api.Rsp;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* @author HemantS
*
*/
public class FavoritesTemplate extends AbstractFlickrOperations implements
FavoritesOperations {
private final RestTemplate restTemplate;
public FavoritesTemplate(RestTemplate restTemplate,
boolean isAuthorizedForUser,String consumerKey) {
super(isAuthorizedForUser,consumerKey);
this.restTemplate = restTemplate;
}
@Override
public boolean add(String photoId) {
requireAuthorization();
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (photoId != null)
parameters.set("photo_id", photoId);
restTemplate.postForObject(buildUri("flickr.favorites.add"),
parameters, Object.class);
return true;
}
@Override
public Rsp getContext(String photoId, String userId) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (photoId != null)
parameters.set("photo_id", photoId);
if (userId != null)
parameters.set("user_id", userId);
return restTemplate.getForObject(
buildUri("flickr.favorites.getContext", parameters), Rsp.class);
}
@Override
public Photos getList(String userId, String minFaveDate,
String maxFaveDate, String extras, String perPage, String page) {
requireAuthorization();
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (userId != null)
parameters.set("user_id", userId);
if (minFaveDate != null)
parameters.set("min_fave_date", minFaveDate);
if (maxFaveDate != null)
parameters.set("max_fave_date", maxFaveDate);
if (extras != null)
parameters.set("extras", extras);
if (perPage != null)
parameters.set("per_page", perPage);
if (page != null)
parameters.set("page", page);
return restTemplate.getForObject(
buildUri("flickr.favorites.getList", parameters), Photos.class);
}
@Override
public Photos getPublicList(String userId, String minFaveDate,
String maxFaveDate, String extras, String perPage, String page) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (userId != null)
parameters.set("user_id", userId);
if (minFaveDate != null)
parameters.set("min_fave_date", minFaveDate);
if (maxFaveDate != null)
parameters.set("max_fave_date", maxFaveDate);
if (extras != null)
parameters.set("extras", extras);
if (perPage != null)
parameters.set("per_page", perPage);
if (page != null)
parameters.set("page", page);
return restTemplate.getForObject(
buildUri("flickr.favorites.getPublicList", parameters),
Photos.class);
}
@Override
public boolean remove(String photoId) {
requireAuthorization();
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (photoId != null)
parameters.set("photo_id", photoId);
restTemplate.postForObject(buildUri("flickr.favorites.remove"),
parameters, Object.class);
return true;
}
}