/* * Copyright 2007 Yusuke Yamamoto * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package twitter4j.internal.json; import org.json.JSONException; import org.json.JSONObject; import twitter4j.OEmbed; import twitter4j.TwitterException; import twitter4j.conf.Configuration; import twitter4j.http.HttpResponse; /** * @author Yusuke Yamamoto - yusuke at mac.com * @since Twitter4J 3.0.2 */ public class OEmbedJSONImpl extends TwitterResponseImpl implements OEmbed, java.io.Serializable { private static final long serialVersionUID = -675438169712979958L; private String html; private String authorName; private String url; private String version; private long cacheAge; private String authorURL; private int width; /* package */OEmbedJSONImpl(final HttpResponse res, final Configuration conf) throws TwitterException { super(res); final JSONObject json = res.asJSONObject(); init(json); } /* package */OEmbedJSONImpl(final JSONObject json) throws TwitterException { super(); init(json); } @Override public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final OEmbedJSONImpl that = (OEmbedJSONImpl) o; if (cacheAge != that.cacheAge) return false; if (width != that.width) return false; if (authorName != null ? !authorName.equals(that.authorName) : that.authorName != null) return false; if (authorURL != null ? !authorURL.equals(that.authorURL) : that.authorURL != null) return false; if (html != null ? !html.equals(that.html) : that.html != null) return false; if (url != null ? !url.equals(that.url) : that.url != null) return false; if (version != null ? !version.equals(that.version) : that.version != null) return false; return true; } @Override public String getAuthorName() { return authorName; } @Override public String getAuthorURL() { return authorURL; } @Override public long getCacheAge() { return cacheAge; } @Override public String getHtml() { return html; } @Override public String getURL() { return url; } @Override public String getVersion() { return version; } @Override public int getWidth() { return width; } @Override public int hashCode() { int result = html != null ? html.hashCode() : 0; result = 31 * result + (authorName != null ? authorName.hashCode() : 0); result = 31 * result + (url != null ? url.hashCode() : 0); result = 31 * result + (version != null ? version.hashCode() : 0); result = 31 * result + (int) (cacheAge ^ cacheAge >>> 32); result = 31 * result + (authorURL != null ? authorURL.hashCode() : 0); result = 31 * result + width; return result; } @Override public String toString() { return "OEmbedJSONImpl{" + "html='" + html + '\'' + ", authorName='" + authorName + '\'' + ", url='" + url + '\'' + ", version='" + version + '\'' + ", cacheAge=" + cacheAge + ", authorURL='" + authorURL + '\'' + ", width=" + width + '}'; } private void init(final JSONObject json) throws TwitterException { try { html = json.getString("html"); authorName = json.getString("author_name"); url = json.getString("url"); version = json.getString("version"); cacheAge = json.getLong("cache_age"); authorURL = json.getString("author_url"); width = json.getInt("width"); // provider_url provider_name, type always return same value // there is no need to parse them and expose the values via OEmbed // interface // providerURL = json.getString("provider_url"); // providerName = json.getString("provider_name"); // type = json.getString("type"); } catch (final JSONException jsone) { throw new TwitterException(jsone); } } }