package com.codepath.apps.tumblrsnap.models;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Photo {
private String id;
private String blogName;
private long timestamp;
private String caption;
private JSONArray tagsArray;
private JSONArray photoArray;
public String getId() {
return id;
}
public String getBlogName() {
return blogName;
}
public long getTimestamp() {
return timestamp;
}
public String getCaption() {
return caption;
}
public boolean isSnap() {
boolean isSnap = false;
for (int i = 0; i < tagsArray.length(); i++) {
try {
if (tagsArray.getString(i).equals("cptumblrsnap")) { isSnap = true; }
} catch (JSONException e) {
e.printStackTrace();
}
}
return isSnap;
}
public String getAvatarUrl() {
return String.format(
"http://api.tumblr.com/v2/blog/%s.tumblr.com/avatar/64",
blogName);
}
public String getPhotoUrl() {
try {
return getPhotoMeta().getString("url");
} catch (Exception e) {
return null;
}
}
public int getPhotoHeight() {
try {
return getPhotoMeta().getInt("height");
} catch (Exception e) {
return 0;
}
}
public int getPhotoWidth() {
try {
return getPhotoMeta().getInt("width");
} catch (Exception e) {
return 0;
}
}
private JSONObject getPhotoMeta() {
try {
JSONArray altSizes = ((JSONObject) photoArray.get(0))
.getJSONArray("alt_sizes");
for (int i = 0; i < altSizes.length(); i++) {
JSONObject altSize = (JSONObject) altSizes.get(i);
int width = altSize.getInt("width");
if (width < 1000) {
return altSize;
}
}
} catch (Exception e) {
return null;
}
return null;
}
public static Photo fromJson(JSONObject jsonObject) {
Photo photo = new Photo();
try {
photo.id = jsonObject.getString("id");
photo.blogName = jsonObject.getString("blog_name");
photo.timestamp = jsonObject.getLong("timestamp");
photo.caption = jsonObject.getString("caption");
photo.photoArray = jsonObject.getJSONArray("photos");
photo.tagsArray = jsonObject.getJSONArray("tags");
} catch (JSONException e) {
e.printStackTrace();
}
return photo;
}
public static ArrayList<Photo> fromJson(JSONArray jsonArray) {
ArrayList<Photo> photos = new ArrayList<Photo>();
try {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject photoJson = jsonArray.getJSONObject(i);
if (photoJson.getString("type").equals("photo")) {
photos.add(Photo.fromJson(photoJson));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return photos;
}
}