package com.pocketreddit.library.things.factories; import java.net.MalformedURLException; import java.net.URL; import org.json.JSONException; import org.json.JSONObject; import com.pocketreddit.library.things.Link; public class LinkFactory implements ThingFactory { private JSONObject json; public LinkFactory(JSONObject json) { this.json = json; } public Link createThing() throws ThingFactoryException { Link link = new Link(); try { JSONObject data = json.getJSONObject("data"); link.setDomain(data.getString("domain")); link.setClicked(data.getBoolean("clicked")); link.setHidden(data.getBoolean("hidden")); link.setSelfPost(data.getBoolean("is_self")); link.setMedia(data.optJSONObject("media")); link.setNumComments(data.getInt("num_comments")); link.setOver18(data.optBoolean("over18", false)); link.setPermalink(data.getString("permalink")); link.setSaved(data.getBoolean("saved")); link.setScore(data.getInt("score")); String thumbString = data.optString("thumbnail"); //FIXME should not ignore self/default/nsfw thumbnails if (thumbString != null && !"".equals(thumbString) && !"self".equals(thumbString) && !"default".equals(thumbString) && !"nsfw".equals(thumbString)) { link.setThumbnail(new URL(thumbString)); } link.setTitle(data.getString("title")); link.setUrl(data.getString("url")); } catch (JSONException e) { throw new ThingFactoryException("Couldn't parse JSON object into link.", e); } catch (MalformedURLException e) { throw new ThingFactoryException("Couldn't parse URL for thumbnail in JSON value.", e); } return link; } }