From e2098f2662bdd9d68821c378d69c02a096774884 Mon Sep 17 00:00:00 2001 From: Haidar Hammoud Date: Mon, 22 Apr 2019 20:33:49 -0400 Subject: [PATCH 1/2] Added serialized size to Image and Media (Issue #5) --- .../java/com/tenor/android/core/model/impl/Image.java | 11 +++++++++++ .../java/com/tenor/android/core/model/impl/Media.java | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/src/main/java/com/tenor/android/core/model/impl/Image.java b/src/main/java/com/tenor/android/core/model/impl/Image.java index 9a05d3e..61a1395 100644 --- a/src/main/java/com/tenor/android/core/model/impl/Image.java +++ b/src/main/java/com/tenor/android/core/model/impl/Image.java @@ -15,6 +15,9 @@ public class Image implements Serializable { private static final long serialVersionUID = -8616498739266612929L; private String url; + @SerializedName("size") + private long size; + @SerializedName("dims") private int[] dimensions; @@ -26,6 +29,7 @@ public String getUrl() { return StringConstant.getOrEmpty(url); } + public int getWidth() { return dimensions != null && dimensions.length == 2 ? dimensions[0] : -1; } @@ -42,4 +46,11 @@ public float getAspectRatio() { final float aspectRatio = (float) getWidth() / getHeight(); return aspectRatio >= 0.01f && aspectRatio <= 5.01f ? aspectRatio : 1.778f; } + + /** + * @return size of this {@link Image} or -1 if it doesn't exist + */ + public long getSize() { + return size != 0 ? size : -1; + } } diff --git a/src/main/java/com/tenor/android/core/model/impl/Media.java b/src/main/java/com/tenor/android/core/model/impl/Media.java index 86841e9..07c6a48 100644 --- a/src/main/java/com/tenor/android/core/model/impl/Media.java +++ b/src/main/java/com/tenor/android/core/model/impl/Media.java @@ -11,6 +11,7 @@ public class Media extends Image { private static final long serialVersionUID = -8616498739266612929L; private String preview; private double duration; + private long size; /** * @return url of a static image preview @@ -26,4 +27,11 @@ public String getPreviewUrl() { public double getDuration() { return duration; } + + /** + * @return size of this {@link Image} or -1 if it doesn't exist + */ + public long getSize() { + return size != 0 ? size : -1; + } } From eb266d93aee6681d986b7b8da85f456f55bcf568 Mon Sep 17 00:00:00 2001 From: Haidar Hammoud Date: Mon, 22 Apr 2019 20:52:10 -0400 Subject: [PATCH 2/2] ContentFilter added to SDK (Issue #11) --- .../tenor/android/core/model/ContentFilter.java | 5 +++++ .../com/tenor/android/core/network/ApiClient.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/main/java/com/tenor/android/core/model/ContentFilter.java diff --git a/src/main/java/com/tenor/android/core/model/ContentFilter.java b/src/main/java/com/tenor/android/core/model/ContentFilter.java new file mode 100644 index 0000000..badcb64 --- /dev/null +++ b/src/main/java/com/tenor/android/core/model/ContentFilter.java @@ -0,0 +1,5 @@ +package com.tenor.android.core.model; + +public enum ContentFilter { + high, medium, low, off +} diff --git a/src/main/java/com/tenor/android/core/network/ApiClient.java b/src/main/java/com/tenor/android/core/network/ApiClient.java index a61d8d0..e751d9c 100644 --- a/src/main/java/com/tenor/android/core/network/ApiClient.java +++ b/src/main/java/com/tenor/android/core/network/ApiClient.java @@ -11,6 +11,7 @@ import com.tenor.android.core.constant.StringConstant; import com.tenor.android.core.constant.ViewAction; import com.tenor.android.core.measurable.MeasurableViewHolderEvent; +import com.tenor.android.core.model.ContentFilter; import com.tenor.android.core.model.impl.Result; import com.tenor.android.core.response.WeakRefCallback; import com.tenor.android.core.response.impl.AnonIdResponse; @@ -98,6 +99,18 @@ public static synchronized IApiClient getInstance(@NonNull Context context) { * content delivery experience */ public static Map getServiceIds(@NonNull final Context context) { + return getServiceIds(context, ContentFilter.off); + } + + /** + * Get service ids that can delivery a more accurate and better experience + * Allows for content filtering + * + * @return a {@link Map} with {@code key} (API Key), {@code anon_id}, + * {@code aaid} (Android Advertise Id) and {@code locale } for authentication and better + * content delivery experience + */ + public static Map getServiceIds(@NonNull final Context context, @NonNull final ContentFilter contentFilter) { final ArrayMap map = new ArrayMap<>(4); // API Key @@ -110,6 +123,7 @@ public static Map getServiceIds(@NonNull final Context context) * 2. `aaid`, Android Advertise Id, is also used in case "keyboardid" or "anon_id" mutates * 3. `locale` is used to deliver curated language/regional specific contents to users * 4. `screen_density` is used to optimize the content size to the device + * 5. 'contentfilter' is used to specify the content safety filter level */ final String id = AbstractSessionUtils.getAnonId(context); map.put(id.length() <= 20 ? "keyboardid" : "anon_id", id); @@ -119,6 +133,7 @@ public static Map getServiceIds(@NonNull final Context context) map.put("aaid", AbstractSessionUtils.getAndroidAdvertiseId(context)); map.put("locale", AbstractLocaleUtils.getCurrentLocaleName(context)); map.put("screen_density", ScreenDensity.get(context)); + map.put("contentfilter", contentFilter.name()); return map; }