package org.springframework.social.flickr.api.impl; import org.springframework.social.flickr.api.Perms; import org.springframework.social.flickr.api.Photo; import org.springframework.social.flickr.api.Photos; import org.springframework.social.flickr.api.PhotosGeoOperations; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; /** * @author HemantS * */ public class PhotosGeoTemplate extends AbstractFlickrOperations implements PhotosGeoOperations { private final RestTemplate restTemplate; public PhotosGeoTemplate(RestTemplate restTemplate, boolean isAuthorizedForUser,String consumerKey) { super(isAuthorizedForUser,consumerKey); this.restTemplate = restTemplate; } @Override public void batchCorrectLocation(String lat, String lon, String accuracy, String placeId, String woeId) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (lat != null) parameters.set("lat", lat); if (lon != null) parameters.set("lon", lon); if (accuracy != null) parameters.set("accuracy", accuracy); if (placeId != null) parameters.set("place_id", placeId); if (woeId != null) parameters.set("woe_id", woeId); restTemplate.postForObject( buildUri("flickr.photos.geo.batchCorrectLocation"), parameters, Object.class); } @Override public boolean correctLocation(String photoId, String placeId, String woeId,String foursquareId) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (photoId != null) parameters.set("photo_id", photoId); if (placeId != null) parameters.set("place_id", placeId); if (woeId != null) parameters.set("woe_id", woeId); if(foursquareId !=null) parameters.set("foursquare_id", foursquareId); restTemplate.postForObject( buildUri("flickr.photos.geo.correctLocation"), parameters, Object.class); return true; } @Override public Photo getLocation(String photoId) { MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (photoId != null) parameters.set("photo_id", photoId); return restTemplate.getForObject( buildUri("flickr.photos.geo.getLocation", parameters), Photo.class); } @Override public Perms getPerms(String photoId) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (photoId != null) parameters.set("photo_id", photoId); return restTemplate .getForObject( buildUri("flickr.photos.geo.getPerms", parameters), Perms.class); } @Override public Photos photosForLocation(String lat, String lon, String accuracy, String extras, String perPage, String page) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (lat != null) parameters.set("lat", lat); if (lon != null) parameters.set("lon", lon); if (accuracy != null) parameters.set("accuracy", accuracy); 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.photos.geo.photosForLocation", parameters), Photos.class); } @Override public boolean removeLocation(String photoId) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (photoId != null) parameters.set("photo_id", photoId); restTemplate.postForObject( buildUri("flickr.photos.geo.removeLocation"), parameters, Object.class); return true; } @Override public boolean setContext(String photoId, String context) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (photoId != null) parameters.set("photo_id", photoId); if (context != null) parameters.set("context", context); restTemplate.postForObject(buildUri("flickr.photos.geo.setContext"), parameters, Object.class); return true; } @Override public boolean setLocation(String photoId, String lat, String lon, String accuracy, String context) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (photoId != null) parameters.set("photo_id", photoId); if (lat != null) parameters.set("lat", lat); if (lon != null) parameters.set("lon", lon); if (accuracy != null) parameters.set("accuracy", accuracy); if (context != null) parameters.set("context", context); restTemplate.postForObject(buildUri("flickr.photos.geo.setLocation"), parameters, Object.class); return true; } @Override public boolean setPerms(String isPublic, String isContact, String isFriend, String isFamily, String photoId) { requireAuthorization(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); if (isPublic != null) parameters.set("is_public", isPublic); if (isContact != null) parameters.set("is_contact", isContact); if (isFriend != null) parameters.set("is_friend", isFriend); if (isFamily != null) parameters.set("is_family", isFamily); if (photoId != null) parameters.set("photo_id", photoId); restTemplate.postForObject(buildUri("flickr.photos.geo.setPerms"), parameters, Object.class); return true; } }