Showing
2 changed files
with
115 additions
and
14 deletions
| ... | @@ -100,6 +100,17 @@ public interface ApiService { | ... | @@ -100,6 +100,17 @@ public interface ApiService { |
| 100 | @Header(WarpConstants.HEADER_SIGNATURE) String signature); | 100 | @Header(WarpConstants.HEADER_SIGNATURE) String signature); |
| 101 | 101 | ||
| 102 | @Headers("Content-Type: application/json") | 102 | @Headers("Content-Type: application/json") |
| 103 | + @POST("/api/mobile/v2/{appUuid}/context/") | ||
| 104 | + Call<ResponseBody> getCampaignsAvailability(@Path("appUuid") String appUuid, | ||
| 105 | + @Body RequestBody request, | ||
| 106 | + @Header(WarpConstants.HEADER_DATE) String timeStamp, | ||
| 107 | + @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, | ||
| 108 | + @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId, | ||
| 109 | + @Header(WarpConstants.HEADER_CHANNEL) String channel, | ||
| 110 | + @Header(WarpConstants.HEADER_WEB_ID) String webId, | ||
| 111 | + @Header(WarpConstants.HEADER_SIGNATURE) String signature); | ||
| 112 | + | ||
| 113 | + @Headers("Content-Type: application/json") | ||
| 103 | @POST("/oauth/{appUuid}/context") | 114 | @POST("/oauth/{appUuid}/context") |
| 104 | Call<ResponseBody> getCampaignsPersonalized(@Path("appUuid") String appUuid, | 115 | Call<ResponseBody> getCampaignsPersonalized(@Path("appUuid") String appUuid, |
| 105 | @Body RequestBody request, | 116 | @Body RequestBody request, | ... | ... |
| ... | @@ -1565,7 +1565,7 @@ public class WarplyManager { | ... | @@ -1565,7 +1565,7 @@ public class WarplyManager { |
| 1565 | request.getSignature())); | 1565 | request.getSignature())); |
| 1566 | } | 1566 | } |
| 1567 | 1567 | ||
| 1568 | - private static ArrayList<Campaign> mergeCampaignResults(ArrayList<Campaign> resultCampaigns, ArrayList<Campaign> resultPersonalizedCampaigns) { | 1568 | + private static ArrayList<Campaign> mergeCampaignResults(ArrayList<Campaign> resultCampaigns, ArrayList<Campaign> resultPersonalizedCampaigns, JSONObject resultCampaignsAvailability) { |
| 1569 | ArrayList<Campaign> newCampaignList = new ArrayList<Campaign>(); | 1569 | ArrayList<Campaign> newCampaignList = new ArrayList<Campaign>(); |
| 1570 | ArrayList<Campaign> campaignLoyaltyList = new ArrayList<>(); | 1570 | ArrayList<Campaign> campaignLoyaltyList = new ArrayList<>(); |
| 1571 | newCampaignList.clear(); | 1571 | newCampaignList.clear(); |
| ... | @@ -1619,14 +1619,16 @@ public class WarplyManager { | ... | @@ -1619,14 +1619,16 @@ public class WarplyManager { |
| 1619 | 1619 | ||
| 1620 | ListenableFuture<ArrayList<Campaign>> futureCampaigns = getCampaignsRetro(service); | 1620 | ListenableFuture<ArrayList<Campaign>> futureCampaigns = getCampaignsRetro(service); |
| 1621 | ListenableFuture<ArrayList<Campaign>> futurePersonalizedCampaigns = getCampaignsPersonalizedRetro(service); | 1621 | ListenableFuture<ArrayList<Campaign>> futurePersonalizedCampaigns = getCampaignsPersonalizedRetro(service); |
| 1622 | + ListenableFuture<JSONObject> futureCampaignAvailability = getCampaignAvailability(service); | ||
| 1622 | 1623 | ||
| 1623 | - ListenableFuture<List<ArrayList<Campaign>>> allResultsFuture = Futures.allAsList(futureCampaigns, futurePersonalizedCampaigns); | 1624 | + ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureCampaigns, futurePersonalizedCampaigns, futureCampaignAvailability); |
| 1624 | ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync( | 1625 | ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync( |
| 1625 | allResultsFuture, | 1626 | allResultsFuture, |
| 1626 | results -> { | 1627 | results -> { |
| 1627 | - ArrayList<Campaign> resultCampaigns = results.get(0); | 1628 | + ArrayList<Campaign> resultCampaigns = (ArrayList<Campaign>) results.get(0); |
| 1628 | - ArrayList<Campaign> resultPersonalizedCampaigns = results.get(1); | 1629 | + ArrayList<Campaign> resultPersonalizedCampaigns = (ArrayList<Campaign>) results.get(1); |
| 1629 | - return executorService.submit(() -> mergeCampaignResults(resultCampaigns, resultPersonalizedCampaigns)); | 1630 | + JSONObject resultCampaignsAvailability = (JSONObject) results.get(2); |
| 1631 | + return executorService.submit(() -> mergeCampaignResults(resultCampaigns, resultPersonalizedCampaigns, resultCampaignsAvailability)); | ||
| 1630 | }, | 1632 | }, |
| 1631 | executorService | 1633 | executorService |
| 1632 | ); | 1634 | ); |
| ... | @@ -1650,8 +1652,8 @@ public class WarplyManager { | ... | @@ -1650,8 +1652,8 @@ public class WarplyManager { |
| 1650 | // getCampaignsPersonalizedRetro(service, new CallbackReceiver<ArrayList<Campaign>>() { | 1652 | // getCampaignsPersonalizedRetro(service, new CallbackReceiver<ArrayList<Campaign>>() { |
| 1651 | // @Override | 1653 | // @Override |
| 1652 | // public void onSuccess(ArrayList<Campaign> resultPersonalized) { | 1654 | // public void onSuccess(ArrayList<Campaign> resultPersonalized) { |
| 1653 | -// final ExecutorService executorShops = Executors.newFixedThreadPool(1); | 1655 | +// final ExecutorService executorCampaigns = Executors.newFixedThreadPool(1); |
| 1654 | -// executorShops.submit(() -> { | 1656 | +// executorCampaigns.submit(() -> { |
| 1655 | // ArrayList<Campaign> newCampaignList = new ArrayList<Campaign>(); | 1657 | // ArrayList<Campaign> newCampaignList = new ArrayList<Campaign>(); |
| 1656 | // newCampaignList.clear(); | 1658 | // newCampaignList.clear(); |
| 1657 | // newCampaignList.addAll(result); | 1659 | // newCampaignList.addAll(result); |
| ... | @@ -1686,7 +1688,7 @@ public class WarplyManager { | ... | @@ -1686,7 +1688,7 @@ public class WarplyManager { |
| 1686 | // Set<Campaign> set = new LinkedHashSet<>(campaignLoyaltyList); | 1688 | // Set<Campaign> set = new LinkedHashSet<>(campaignLoyaltyList); |
| 1687 | // campaignLoyaltyList.clear(); | 1689 | // campaignLoyaltyList.clear(); |
| 1688 | // campaignLoyaltyList.addAll(set); | 1690 | // campaignLoyaltyList.addAll(set); |
| 1689 | -// executorShops.shutdownNow(); | 1691 | +// executorCampaigns.shutdownNow(); |
| 1690 | // new Handler(Looper.getMainLooper()).post(() -> receiver.onSuccess(campaignLoyaltyList));//resultPersonalized | 1692 | // new Handler(Looper.getMainLooper()).post(() -> receiver.onSuccess(campaignLoyaltyList));//resultPersonalized |
| 1691 | // }); | 1693 | // }); |
| 1692 | // } | 1694 | // } |
| ... | @@ -1759,9 +1761,9 @@ public class WarplyManager { | ... | @@ -1759,9 +1761,9 @@ public class WarplyManager { |
| 1759 | ArrayList<NewCampaign> tempCampaigns = new ArrayList<>(); | 1761 | ArrayList<NewCampaign> tempCampaigns = new ArrayList<>(); |
| 1760 | ArrayList<Campaign> mCampaignsList = new ArrayList<>(); | 1762 | ArrayList<Campaign> mCampaignsList = new ArrayList<>(); |
| 1761 | 1763 | ||
| 1762 | - final ExecutorService executorShops = Executors.newFixedThreadPool(1); | 1764 | + final ExecutorService executorCampaigns = Executors.newFixedThreadPool(1); |
| 1763 | JSONArray finalCampaignsJBody = jCampaignsBody; | 1765 | JSONArray finalCampaignsJBody = jCampaignsBody; |
| 1764 | - executorShops.submit(() -> { | 1766 | + executorCampaigns.submit(() -> { |
| 1765 | for (int i = 0; i < finalCampaignsJBody.length(); ++i) { | 1767 | for (int i = 0; i < finalCampaignsJBody.length(); ++i) { |
| 1766 | tempCampaigns.add(new NewCampaign(finalCampaignsJBody.optJSONObject(i))); | 1768 | tempCampaigns.add(new NewCampaign(finalCampaignsJBody.optJSONObject(i))); |
| 1767 | } | 1769 | } |
| ... | @@ -1809,7 +1811,7 @@ public class WarplyManager { | ... | @@ -1809,7 +1811,7 @@ public class WarplyManager { |
| 1809 | mCampaignsList.add(camp); | 1811 | mCampaignsList.add(camp); |
| 1810 | } | 1812 | } |
| 1811 | 1813 | ||
| 1812 | - executorShops.shutdownNow(); | 1814 | + executorCampaigns.shutdownNow(); |
| 1813 | // receiver.onSuccess(mCampaignsList); | 1815 | // receiver.onSuccess(mCampaignsList); |
| 1814 | future.set(mCampaignsList); | 1816 | future.set(mCampaignsList); |
| 1815 | }); | 1817 | }); |
| ... | @@ -1853,6 +1855,7 @@ public class WarplyManager { | ... | @@ -1853,6 +1855,7 @@ public class WarplyManager { |
| 1853 | Map<String, Object> jsonParamsCampaigns = new ArrayMap<>(); | 1855 | Map<String, Object> jsonParamsCampaigns = new ArrayMap<>(); |
| 1854 | Map<String, Object> jsonParams = new ArrayMap<>(); | 1856 | Map<String, Object> jsonParams = new ArrayMap<>(); |
| 1855 | jsonParams.put("action", "retrieve"); | 1857 | jsonParams.put("action", "retrieve"); |
| 1858 | + jsonParams.put("filters", new JSONObject()); | ||
| 1856 | jsonParams.put("language", WarplyProperty.getLanguage(Warply.getWarplyContext())); | 1859 | jsonParams.put("language", WarplyProperty.getLanguage(Warply.getWarplyContext())); |
| 1857 | 1860 | ||
| 1858 | jsonParamsCampaigns.put("campaigns", jsonParams); | 1861 | jsonParamsCampaigns.put("campaigns", jsonParams); |
| ... | @@ -1897,9 +1900,9 @@ public class WarplyManager { | ... | @@ -1897,9 +1900,9 @@ public class WarplyManager { |
| 1897 | ArrayList<NewCampaign> tempCampaigns = new ArrayList<>(); | 1900 | ArrayList<NewCampaign> tempCampaigns = new ArrayList<>(); |
| 1898 | ArrayList<Campaign> mCampaignsList = new ArrayList<>(); | 1901 | ArrayList<Campaign> mCampaignsList = new ArrayList<>(); |
| 1899 | 1902 | ||
| 1900 | - final ExecutorService executorShops = Executors.newFixedThreadPool(1); | 1903 | + final ExecutorService executorPersonalizedCampaigns = Executors.newFixedThreadPool(1); |
| 1901 | JSONArray finalCampaignsJBody = jCampaignsBody; | 1904 | JSONArray finalCampaignsJBody = jCampaignsBody; |
| 1902 | - executorShops.submit(() -> { | 1905 | + executorPersonalizedCampaigns.submit(() -> { |
| 1903 | for (int i = 0; i < finalCampaignsJBody.length(); ++i) { | 1906 | for (int i = 0; i < finalCampaignsJBody.length(); ++i) { |
| 1904 | tempCampaigns.add(new NewCampaign(finalCampaignsJBody.optJSONObject(i))); | 1907 | tempCampaigns.add(new NewCampaign(finalCampaignsJBody.optJSONObject(i))); |
| 1905 | } | 1908 | } |
| ... | @@ -1947,7 +1950,7 @@ public class WarplyManager { | ... | @@ -1947,7 +1950,7 @@ public class WarplyManager { |
| 1947 | mCampaignsList.add(camp); | 1950 | mCampaignsList.add(camp); |
| 1948 | } | 1951 | } |
| 1949 | 1952 | ||
| 1950 | - executorShops.shutdownNow(); | 1953 | + executorPersonalizedCampaigns.shutdownNow(); |
| 1951 | // receiver.onSuccess(mCampaignsList); | 1954 | // receiver.onSuccess(mCampaignsList); |
| 1952 | future.set(mCampaignsList); | 1955 | future.set(mCampaignsList); |
| 1953 | }); | 1956 | }); |
| ... | @@ -2000,6 +2003,93 @@ public class WarplyManager { | ... | @@ -2000,6 +2003,93 @@ public class WarplyManager { |
| 2000 | return future; | 2003 | return future; |
| 2001 | } | 2004 | } |
| 2002 | 2005 | ||
| 2006 | + private static ListenableFuture<JSONObject> getCampaignAvailability(ApiService service) { | ||
| 2007 | + SettableFuture<JSONObject> future = SettableFuture.create(); | ||
| 2008 | + | ||
| 2009 | + String timeStamp = DateFormat.format("yyyy-MM-dd hh:mm:ss", System.currentTimeMillis()).toString(); | ||
| 2010 | + String apiKey = WarpUtils.getApiKey(Warply.getWarplyContext()); | ||
| 2011 | + String webId = WarpUtils.getWebId(Warply.getWarplyContext()); | ||
| 2012 | + | ||
| 2013 | + Map<String, Object> jsonParamsCampaignsAvailability = new ArrayMap<>(); | ||
| 2014 | + Map<String, Object> jsonParams = new ArrayMap<>(); | ||
| 2015 | + jsonParams.put("action", "availability"); | ||
| 2016 | + Map<String, Object> jsonParamsFilters = new ArrayMap<>(); | ||
| 2017 | + jsonParams.put("uuids", null); | ||
| 2018 | + jsonParams.put("availability_enabled", true); | ||
| 2019 | + jsonParams.put("filters", jsonParamsFilters); | ||
| 2020 | + jsonParams.put("language", WarplyProperty.getLanguage(Warply.getWarplyContext())); | ||
| 2021 | + | ||
| 2022 | + jsonParamsCampaignsAvailability.put("coupon", jsonParams); | ||
| 2023 | + RequestBody campaignsAvailabilityRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaignsAvailability)).toString()); | ||
| 2024 | + | ||
| 2025 | + Call<ResponseBody> campaignsAvailabilityCall = service.getCampaignsAvailability( | ||
| 2026 | + WarplyProperty.getAppUuid(Warply.getWarplyContext()), | ||
| 2027 | + campaignsAvailabilityRequest, | ||
| 2028 | + timeStamp, | ||
| 2029 | + "android:" + Warply.getWarplyContext().getPackageName(), | ||
| 2030 | + new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), | ||
| 2031 | + "mobile", | ||
| 2032 | + webId, | ||
| 2033 | + WarpUtils.produceSignature(apiKey + timeStamp) | ||
| 2034 | + ); | ||
| 2035 | + | ||
| 2036 | + campaignsAvailabilityCall.enqueue(new Callback<ResponseBody>() { | ||
| 2037 | + @Override | ||
| 2038 | + public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { | ||
| 2039 | + if (response.code() == 200 && response.body() != null) { | ||
| 2040 | + JSONObject jobjCampaignsAvailabilityResponse = null; | ||
| 2041 | + try { | ||
| 2042 | + jobjCampaignsAvailabilityResponse = new JSONObject(response.body().string()); | ||
| 2043 | + } catch (Exception e) { | ||
| 2044 | + e.printStackTrace(); | ||
| 2045 | + } | ||
| 2046 | + | ||
| 2047 | + if (jobjCampaignsAvailabilityResponse != null && jobjCampaignsAvailabilityResponse.has("status") && jobjCampaignsAvailabilityResponse.optString("status", "2").equals("1")) { | ||
| 2048 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
| 2049 | + dynatraceEvent.setEventName("custom_success_available_coupons"); | ||
| 2050 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
| 2051 | + | ||
| 2052 | + final ExecutorService executorCampaignsAvailability = Executors.newFixedThreadPool(1); | ||
| 2053 | + final JSONObject finalJobjCampaignsAvailabilityResponse = jobjCampaignsAvailabilityResponse; | ||
| 2054 | + executorCampaignsAvailability.submit(() -> { | ||
| 2055 | + JSONObject jCampaignsAvailabilityBody = null; | ||
| 2056 | + try { | ||
| 2057 | + jCampaignsAvailabilityBody = finalJobjCampaignsAvailabilityResponse.optJSONObject("context").optJSONObject("MAPP_COUPON").optJSONObject("availability"); | ||
| 2058 | + } catch (Exception e) { | ||
| 2059 | + e.printStackTrace(); | ||
| 2060 | + } | ||
| 2061 | + | ||
| 2062 | + if (jCampaignsAvailabilityBody != null) { | ||
| 2063 | + executorCampaignsAvailability.shutdownNow(); | ||
| 2064 | + future.set(jCampaignsAvailabilityBody); | ||
| 2065 | + } | ||
| 2066 | + }); | ||
| 2067 | + } else { | ||
| 2068 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
| 2069 | + dynatraceEvent.setEventName("custom_error_available_coupons"); | ||
| 2070 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
| 2071 | + future.set(new JSONObject()); | ||
| 2072 | + } | ||
| 2073 | + } else { | ||
| 2074 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
| 2075 | + dynatraceEvent.setEventName("custom_error_available_coupons"); | ||
| 2076 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
| 2077 | + future.set(new JSONObject()); | ||
| 2078 | + } | ||
| 2079 | + } | ||
| 2080 | + | ||
| 2081 | + @Override | ||
| 2082 | + public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) { | ||
| 2083 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
| 2084 | + dynatraceEvent.setEventName("custom_error_available_coupons"); | ||
| 2085 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
| 2086 | + future.set(new JSONObject()); | ||
| 2087 | + } | ||
| 2088 | + }); | ||
| 2089 | + | ||
| 2090 | + return future; | ||
| 2091 | + } | ||
| 2092 | + | ||
| 2003 | public static void getCampaignsPersonalized(WarplyGetCampaignsRequest request, final CallbackReceiver<ArrayList<Campaign>> receiver) { | 2093 | public static void getCampaignsPersonalized(WarplyGetCampaignsRequest request, final CallbackReceiver<ArrayList<Campaign>> receiver) { |
| 2004 | WarpUtils.log("************* WARPLY Get Campaigns Request ********************"); | 2094 | WarpUtils.log("************* WARPLY Get Campaigns Request ********************"); |
| 2005 | WarpUtils.log("[WARP Trace] WARPLY Get Campaigns Request is active"); | 2095 | WarpUtils.log("[WARP Trace] WARPLY Get Campaigns Request is active"); | ... | ... |
-
Please register or login to post a comment