package com.piusvelte.sonet.social;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.piusvelte.sonet.R;
import com.piusvelte.sonet.SonetHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
import static com.piusvelte.sonet.Sonet.Sboard;
import static com.piusvelte.sonet.Sonet.Scomments;
import static com.piusvelte.sonet.Sonet.Scounts;
import static com.piusvelte.sonet.Sonet.Screated_at;
import static com.piusvelte.sonet.Sonet.Sdescription;
import static com.piusvelte.sonet.Sonet.Sid;
import static com.piusvelte.sonet.Sonet.Simage;
import static com.piusvelte.sonet.Sonet.Simage_url;
import static com.piusvelte.sonet.Sonet.Simages;
import static com.piusvelte.sonet.Sonet.Smobile;
import static com.piusvelte.sonet.Sonet.Suser;
import static com.piusvelte.sonet.Sonet.Susername;
/**
* Created by bemmanuel on 2/15/15.
*/
public class Pinterest extends Client {
private static final String PINTEREST_BASE_URL = "https://api.pinterest.com/v2/";
private static final String PINTEREST_URL_FEED = "%spopular/";
public static final String PINTEREST_PIN = "https://pinterest.com/pin/%s/";
private static final String PINTEREST_PROFILE = "https://pinterest.com/%s/";
private static final String PINTEREST_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
public Pinterest(Context context, String token, String secret, String accountEsid, int network) {
super(context, token, secret, accountEsid, network);
}
@Nullable
@Override
public String getProfileUrl(@NonNull String esid) {
if (esid != null) {
return String.format(PINTEREST_PROFILE, esid);
} else {
return "https://pinterest.com";
}
}
@Nullable
@Override
public String getProfilePhotoUrl() {
return getProfilePhotoUrl(mAccountEsid);
}
@Nullable
@Override
public String getProfilePhotoUrl(String esid) {
return null;
}
@Nullable
@Override
public Uri getCallback() {
return null;
}
@Override
String getRequestUrl() {
return null;
}
@Override
String getAccessUrl() {
return null;
}
@Override
String getAuthorizeUrl() {
return null;
}
@Override
public String getCallbackUrl() {
return null;
}
@Override
public MemberAuthentication getMemberAuthentication(@NonNull String authenticatedUrl) {
return null;
}
@Override
String getFirstPhotoUrl(String[] parts) {
if (parts.length > 0 && parts[0].equals(Simage)) {
return parts[1];
}
return super.getFirstPhotoUrl(parts);
}
@Nullable
@Override
public Set<String> getNotificationStatusIds(long account, String[] notificationMessage) {
return null;
}
@Nullable
@Override
public String getFeedResponse(int status_count) {
return SonetHttpClient.httpResponse(String.format(PINTEREST_URL_FEED, PINTEREST_BASE_URL));
}
@Nullable
@Override
public JSONArray parseFeed(@NonNull String response) throws JSONException {
JSONObject pins = new JSONObject(response);
if (pins.has("pins")) {
return pins.getJSONArray("pins");
}
return null;
}
@Nullable
@Override
public void addFeedItem(@NonNull JSONObject item,
boolean display_profile,
boolean time24hr,
int appWidgetId,
long account,
Set<String> notificationSids,
String[] notificationMessage,
boolean doNotify) throws JSONException {
ArrayList<String[]> links = new ArrayList<>();
JSONObject friendObj = item.getJSONObject(Suser);
long date = parseDate(item.getString(Screated_at), PINTEREST_DATE_FORMAT);
int commentCount = 0;
if (item.has(Scounts)) {
JSONObject counts = item.getJSONObject(Scounts);
if (counts.has(Scomments)) {
commentCount = counts.getInt(Scomments);
}
}
if (item.has(Simages)) {
JSONObject images = item.getJSONObject(Simages);
if (images.has(Smobile)) {
links.add(new String[] { Simage, images.getString(Smobile) });
} else if (images.has(Sboard)) {
links.add(new String[] { Simage, images.getString(Sboard) });
}
}
addStatusItem(date,
friendObj.getString(Susername),
display_profile ? friendObj.getString(Simage_url) : null,
String.format(getString(R.string.messageWithCommentCount), item.getString(Sdescription), commentCount),
time24hr,
appWidgetId,
account,
item.getString(Sid),
friendObj.getString(Sid),
links
);
}
@Nullable
@Override
public void getNotificationMessage(long account, String[] notificationMessage) {
// NO-OP
}
@Override
public void getNotifications(long account, String[] notificationMessage) {
// NO-OP
}
@Override
public boolean createPost(String message, String placeId, String latitude, String longitude, String photoPath, String[] tags) {
return false;
}
@Override
public boolean isLikeable(String statusId) {
return false;
}
@Override
public boolean isLiked(String statusId, String accountId) {
return false;
}
@Override
public boolean likeStatus(String statusId, String accountId, boolean doLike) {
return false;
}
@Override
public String getLikeText(boolean isLiked) {
return null;
}
@Override
public boolean isCommentable(String statusId) {
return false;
}
@Override
public String getCommentPretext(String accountId) {
return null;
}
@Override
public void onDelete() {
}
@Nullable
@Override
public String getCommentsResponse(String statusId) {
return null;
}
@Nullable
@Override
public JSONArray parseComments(@NonNull String response) throws JSONException {
return null;
}
@Nullable
@Override
public HashMap<String, String> parseComment(@NonNull String statusId, @NonNull JSONObject jsonComment, boolean time24hr) throws JSONException {
return null;
}
@Override
public LinkedHashMap<String, String> getLocations(String latitude, String longitude) {
return null;
}
@Override
public boolean sendComment(@NonNull String statusId, @NonNull String message) {
return false;
}
@Override
public List<HashMap<String, String>> getFriends() {
return null;
}
@Override
String getApiKey() {
return null;
}
@Override
String getApiSecret() {
return null;
}
}