package org.springframework.social.flickr.api.impl;
import org.springframework.social.flickr.api.Clusters;
import org.springframework.social.flickr.api.Hottags;
import org.springframework.social.flickr.api.Photo;
import org.springframework.social.flickr.api.Photos;
import org.springframework.social.flickr.api.Rsp;
import org.springframework.social.flickr.api.Tags;
import org.springframework.social.flickr.api.TagsOperations;
import org.springframework.social.flickr.api.Who;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
/**
* @author HemantS
*
*/
public class TagsTemplate extends AbstractFlickrOperations implements
TagsOperations {
private final RestTemplate restTemplate;
public TagsTemplate(RestTemplate restTemplate, boolean isAuthorizedForUser,String consumerKey) {
super(isAuthorizedForUser,consumerKey);
this.restTemplate = restTemplate;
}
@Override
public Photos getClusterPhotos(String tag, String clusterId) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (tag != null)
parameters.set("tag", tag);
if (clusterId != null)
parameters.set("cluster_id", clusterId);
return restTemplate.getForObject(
buildUri("flickr.tags.getClusterPhotos", parameters),
Photos.class);
}
@Override
public Clusters getClusters(String tag) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (tag != null)
parameters.set("tag", tag);
return restTemplate
.getForObject(buildUri("flickr.tags.getClusters", parameters),
Clusters.class);
}
@Override
public Hottags getHotList(String period, String count) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (period != null)
parameters.set("period", period);
if (count != null)
parameters.set("count", count);
return restTemplate.getForObject(
buildUri("flickr.tags.getHotList", parameters), Hottags.class);
}
@Override
public Photo getListPhoto(String photoId) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (photoId != null)
parameters.set("photo_id", photoId);
return restTemplate.getForObject(
buildUri("flickr.tags.getListPhoto", parameters), Photo.class);
}
@Override
public Who getListUser(String userId) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (userId != null)
parameters.set("user_id", userId);
return restTemplate.getForObject(
buildUri("flickr.tags.getListUser", parameters), Who.class);
}
@Override
public Who getListUserPopular(String userId, String count) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (userId != null)
parameters.set("user_id", userId);
if (count != null)
parameters.set("count", count);
return restTemplate.getForObject(
buildUri("flickr.tags.getListUserPopular", parameters),
Who.class);
}
@Override
public Who getListUserRaw(String tag) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (tag != null)
parameters.set("tag", tag);
return restTemplate.getForObject(
buildUri("flickr.tags.getListUserRaw", parameters), Who.class);
}
@Override
public Rsp getMostFrequentlyUsed() {
requireAuthorization();
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
return restTemplate.getForObject(
buildUri("flickr.tags.getMostFrequentlyUsed", parameters),
Rsp.class);
}
@Override
public Tags getRelated(String tag) {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
if (tag != null)
parameters.set("tag", tag);
return restTemplate.getForObject(
buildUri("flickr.tags.getRelated", parameters), Tags.class);
}
}