package org.springframework.social.instagram.api.impl;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.social.instagram.api.Location;
import org.springframework.social.instagram.api.LocationOperations;
import org.springframework.social.instagram.api.PagedMediaList;
/**
* Implementation of {@link LocationOperations}, providing a binding to Instagram's location-oriented REST resources.
*/
public class LocationTemplate extends AbstractInstagramOperations implements LocationOperations {
public LocationTemplate(InstagramTemplate instagram, boolean isAuthorizedForUser) {
super(instagram, isAuthorizedForUser);
}
public Location getLocation(long locationId) {
return get(buildUri(LOCATIONS_ENDPOINT + Long.toString(locationId) +"/"), LocationContainer.class).getObject();
}
public PagedMediaList getRecentMedia(long locationId) {
return getRecentMedia(locationId, 0, 0, 0, 0);
}
public PagedMediaList getRecentMedia(long locationId, long maxId, long minId, long minTimeStamp, long maxTimeStamp) {
Map<String,String> params = new HashMap<String,String>();
if(maxId > 0) params.put("max_id", Long.toString(maxId));
if(minId > 0) params.put("min_id", Long.toString(minId));
if(minTimeStamp > 0) params.put("min_timestamp", Long.toString(minTimeStamp));
if(maxTimeStamp > 0) params.put("max_timestamp", Long.toString(maxTimeStamp));
return get(buildUri(LOCATIONS_ENDPOINT + Long.toString(locationId) + "/media/recent/", params), PagedMediaList.class);
}
public List<Location> search(double latitude, double longitude) {
return search(latitude, longitude, 0);
}
public List<Location> search(double latitude, double longitude, int distance) {
Map<String,String> params = new HashMap<String,String>();
params.put("lat", Double.toString(latitude));
params.put("lng", Double.toString(longitude));
if(distance > 0) params.put("distance", Integer.toString(distance));
return get(buildUri(LOCATIONS_ENDPOINT + "search/", params), LocationList.class).getList();
}
public List<Location> search(long foursquareId) {
return get(buildUri(LOCATIONS_ENDPOINT + "search/", Collections.singletonMap("foursquare_id", Long.toString(foursquareId))), LocationList.class).getList();
}
}