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.PagedMediaList;
import org.springframework.social.instagram.api.Tag;
import org.springframework.social.instagram.api.TagOperations;
/**
* Implementation of {@link TagOperations}, providing a binding to Instagram's tag-oriented REST resources.
*/
public class TagTemplate extends AbstractInstagramOperations implements TagOperations {
public TagTemplate(InstagramTemplate instagram, boolean isAuthorizedForUser) {
super(instagram, isAuthorizedForUser);
}
public Tag getTag(String tagName) {
return get(buildUri(TAGS_ENDPOINT + tagName +"/"), TagContainer.class).getObject();
}
public PagedMediaList getRecentMedia(String tagName) {
return getRecentMedia(tagName, 0, 0);
}
public PagedMediaList getRecentMedia(String tagName, long maxId, long minId) {
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));
return get(buildUri(TAGS_ENDPOINT + tagName + "/media/recent/", params), PagedMediaList.class);
}
public List<Tag> search(String query) {
return get(buildUri(TAGS_ENDPOINT + "search/", Collections.singletonMap("q", query)), TagList.class).getList();
}
}