Panagiotis Triantafyllou

sm coupons history request and response model

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="21" />
<bytecodeTargetLevel target="17" />
</component>
</project>
\ No newline at end of file
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>
\ No newline at end of file
......@@ -184,7 +184,7 @@
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="zulu-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
......
......@@ -5,7 +5,7 @@ android.buildFeatures.buildConfig = true
ext {
PUBLISH_GROUP_ID = 'ly.warp'
PUBLISH_VERSION = '4.5.5.4r46'
PUBLISH_VERSION = '4.5.5.4m1'
PUBLISH_ARTIFACT_ID = 'warply-android-sdk'
}
......
......@@ -23,6 +23,7 @@ import ly.warp.sdk.db.WarplyDBHelper;
import ly.warp.sdk.fragments.HomeFragment;
import ly.warp.sdk.io.callbacks.CallbackReceiver;
import ly.warp.sdk.io.models.Campaign;
import ly.warp.sdk.io.models.RedeemedSMHistoryModel;
import ly.warp.sdk.utils.managers.WarplyManager;
public class BaseFragmentActivity extends FragmentActivity implements NavigationBarView.OnItemSelectedListener {
......@@ -52,6 +53,7 @@ public class BaseFragmentActivity extends FragmentActivity implements Navigation
if (WarplyDBHelper.getInstance(this).isTableNotEmpty("auth")) {
WarplyManager.getSupermarketCampaign(mCampaignsCallback);
WarplyManager.getRedeemedSMHistory(mSMHistoryReceiver);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
......@@ -147,4 +149,16 @@ public class BaseFragmentActivity extends FragmentActivity implements Navigation
Toast.makeText(BaseFragmentActivity.this, "Campaigns Error", Toast.LENGTH_SHORT).show();
}
};
private final CallbackReceiver<RedeemedSMHistoryModel> mSMHistoryReceiver = new CallbackReceiver<RedeemedSMHistoryModel>() {
@Override
public void onSuccess(RedeemedSMHistoryModel result) {
Toast.makeText(BaseFragmentActivity.this, "SM HISTORY SUCCESS", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int errorCode) {
Toast.makeText(BaseFragmentActivity.this, "SM HISTORY ERROR", Toast.LENGTH_SHORT).show();
}
};
}
......
......@@ -23,6 +23,7 @@ import ly.warp.sdk.R;
import ly.warp.sdk.db.WarplyDBHelper;
import ly.warp.sdk.io.callbacks.CallbackReceiver;
import ly.warp.sdk.io.models.Campaign;
import ly.warp.sdk.io.models.RedeemedSMHistoryModel;
import ly.warp.sdk.utils.WarplyManagerHelper;
import ly.warp.sdk.utils.managers.WarplyManager;
......@@ -100,6 +101,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener, Swip
public void onRefresh() {
if (WarplyDBHelper.getInstance(getActivity()).isTableNotEmpty("auth")) {
WarplyManager.getSupermarketCampaign(mCampaignsCallback);
WarplyManager.getRedeemedSMHistory(mSMHistoryReceiver);
mSwipeRefresh.setRefreshing(false);
} else {
mSwipeRefresh.setRefreshing(false);
......@@ -182,6 +184,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener, Swip
// }
WarplyManager.getSupermarketCampaign(mCampaignsCallback);
WarplyManager.getRedeemedSMHistory(mSMHistoryReceiver);
}
@Override
......@@ -190,4 +193,16 @@ public class HomeFragment extends Fragment implements View.OnClickListener, Swip
Toast.makeText(getActivity(), "LOGIN ERROR", Toast.LENGTH_SHORT).show();
}
};
private final CallbackReceiver<RedeemedSMHistoryModel> mSMHistoryReceiver = new CallbackReceiver<RedeemedSMHistoryModel>() {
@Override
public void onSuccess(RedeemedSMHistoryModel result) {
Toast.makeText(getActivity(), "SM HISTORY SUCCESS", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int errorCode) {
Toast.makeText(getActivity(), "SM HISTORY ERROR", Toast.LENGTH_SHORT).show();
}
};
}
\ No newline at end of file
......
/*
* Copyright 2010-2013 Warply Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL WARPLY LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ly.warp.sdk.io.models;
/**
* Created by Panagiotis Triantafyllou on 05-Mar-25.
*/
public class RedeemedSMHistoryModel {
private CouponList redeemedCouponList = new CouponList();
private float totalRedeemedValue = 0.0f;
public RedeemedSMHistoryModel() {
this.redeemedCouponList = new CouponList();
this.totalRedeemedValue = 0.0f;
}
// ================================================================================
// Getters
// ================================================================================
public CouponList getRedeemedCouponList() {
return redeemedCouponList;
}
public void setRedeemedCouponList(CouponList redeemedCouponList) {
this.redeemedCouponList = redeemedCouponList;
}
public float getTotalRedeemedValue() {
return totalRedeemedValue;
}
public void setTotalRedeemedValue(float totalRedeemedValue) {
this.totalRedeemedValue = totalRedeemedValue;
}
}
......@@ -65,6 +65,7 @@ import ly.warp.sdk.io.models.CouponList;
import ly.warp.sdk.io.models.LoyaltySDKDynatraceEventModel;
import ly.warp.sdk.io.models.MarketPassDetailsModel;
import ly.warp.sdk.io.models.NewCampaign;
import ly.warp.sdk.io.models.RedeemedSMHistoryModel;
import ly.warp.sdk.io.request.WarplyRefreshTokenRequest;
import ly.warp.sdk.io.volley.ApiClient;
import ly.warp.sdk.io.volley.ApiService;
......@@ -94,53 +95,49 @@ public class WarplyManager {
WarpUtils.log("[WARP Trace] WARPLY Refresh Authorize Request is active");
WarpUtils.log("**************************************************");
Warply.postReceiveMicroappData(false, "token", request.toJson(),
new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
if (result.has("token_type")) {
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveAuthAccess(
result.optString("access_token", ""),
result.optString("refresh_token", "")
);
JSONObject newResult = new JSONObject();
try {
newResult.putOpt("status", 1);
newResult.putOpt("message", "Success");
Warply.postReceiveMicroappData(false, "token", request.toJson(), new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
if (result.has("token_type")) {
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveAuthAccess(result.optString("access_token", ""), result.optString("refresh_token", ""));
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
JSONObject newResult = new JSONObject();
try {
newResult.putOpt("status", 1);
newResult.putOpt("message", "Success");
receiver.onSuccess(newResult);
} catch (JSONException e) {
e.printStackTrace();
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
receiver.onFailure(2);
}
} else {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
receiver.onFailure(2);
}
}
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
@Override
public void onFailure(int errorCode) {
receiver.onSuccess(newResult);
} catch (JSONException e) {
e.printStackTrace();
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
if (errorCode == 401) {
WarplyDBHelper.getInstance(Warply.getWarplyContext()).deleteAuth();
WarplyDBHelper.getInstance(Warply.getWarplyContext()).deleteClient();
receiver.onFailure(errorCode);
}
receiver.onFailure(2);
}
});
} else {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
receiver.onFailure(2);
}
}
@Override
public void onFailure(int errorCode) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_refresh_token_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
if (errorCode == 401) {
WarplyDBHelper.getInstance(Warply.getWarplyContext()).deleteAuth();
WarplyDBHelper.getInstance(Warply.getWarplyContext()).deleteClient();
receiver.onFailure(errorCode);
}
}
});
}
public static void logout(final CallbackReceiver<JSONObject> receiver) {
......@@ -166,28 +163,7 @@ public class WarplyManager {
RequestBody loginRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParams)).toString());
Call<ResponseBody> logoutCall = WarpUtils.isJWTEnabled(Warply.getWarplyContext()) ?
service.logoutUserJwt(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
loginRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp)
)
:
service.logoutUser(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
loginRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp)
);
Call<ResponseBody> logoutCall = WarpUtils.isJWTEnabled(Warply.getWarplyContext()) ? service.logoutUserJwt(WarplyProperty.getAppUuid(Warply.getWarplyContext()), loginRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp)) : service.logoutUser(WarplyProperty.getAppUuid(Warply.getWarplyContext()), loginRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp));
logoutCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -261,17 +237,7 @@ public class WarplyManager {
RequestBody loginRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParams)).toString());
Call<ResponseBody> loginCall = service.cosmoteUser(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
loginRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp),
"Basic MVBQNFhCQzhFYTJBaUdCNkJWZGFGUERlTTNLQ3kzMjU6YzViMzAyZDY5N2FiNGY3NzhiNThhMTg0YzBkZWRmNGU="
);
Call<ResponseBody> loginCall = service.cosmoteUser(WarplyProperty.getAppUuid(Warply.getWarplyContext()), loginRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp), "Basic MVBQNFhCQzhFYTJBaUdCNkJWZGFGUERlTTNLQ3kzMjU6YzViMzAyZDY5N2FiNGY3NzhiNThhMTg0YzBkZWRmNGU=");
loginCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -287,15 +253,9 @@ public class WarplyManager {
if (jobjLoginResponse != null && jobjLoginResponse.has("status") && jobjLoginResponse.optString("status", "2").equals("1")) {
JSONObject tokens = jobjLoginResponse.optJSONObject("result");
if (tokens != null) {
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveClientAccess(
tokens.optString("client_id", ""),
tokens.optString("client_secret", "")
);
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveClientAccess(tokens.optString("client_id", ""), tokens.optString("client_secret", ""));
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveAuthAccess(
tokens.optString("access_token", ""),
tokens.optString("refresh_token", "")
);
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveAuthAccess(tokens.optString("access_token", ""), tokens.optString("refresh_token", ""));
JSONObject newResult = new JSONObject();
try {
......@@ -306,8 +266,7 @@ public class WarplyManager {
e.printStackTrace();
receiver.onFailure(2);
}
} else
receiver.onFailure(2);
} else receiver.onFailure(2);
} else {
receiver.onFailure(2);
}
......@@ -364,15 +323,7 @@ public class WarplyManager {
RequestBody loginRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParams)).toString());
Call<ResponseBody> loginCall = service.verifyUser(
loginRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp)
);
Call<ResponseBody> loginCall = service.verifyUser(loginRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp));
loginCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -388,15 +339,9 @@ public class WarplyManager {
if (jobjLoginResponse != null && jobjLoginResponse.has("result") && jobjLoginResponse.optString("result", "2").equals("1")) {
JSONObject tokens = jobjLoginResponse.optJSONObject("tokens");
if (tokens != null) {
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveClientAccess(
tokens.optString("client_id", ""),
tokens.optString("client_secret", "")
);
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveClientAccess(tokens.optString("client_id", ""), tokens.optString("client_secret", ""));
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveAuthAccess(
tokens.optString("access_token", ""),
tokens.optString("refresh_token", "")
);
WarplyDBHelper.getInstance(Warply.getWarplyContext()).saveAuthAccess(tokens.optString("access_token", ""), tokens.optString("refresh_token", ""));
JSONObject newResult = new JSONObject();
try {
......@@ -504,14 +449,10 @@ public class WarplyManager {
ListenableFuture<CouponList> futureCoupons = getCouponsUniversalRetro(service, 0, futureUniversal);
ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureCoupons);
ListenableFuture<CouponList> mergedResultFuture = Futures.transformAsync(
allResultsFuture,
results -> {
CouponList resultCoupons = (CouponList) results.get(0);
return executorService.submit(() -> resultCoupons);
},
executorService
);
ListenableFuture<CouponList> mergedResultFuture = Futures.transformAsync(allResultsFuture, results -> {
CouponList resultCoupons = (CouponList) results.get(0);
return executorService.submit(() -> resultCoupons);
}, executorService);
Futures.addCallback(mergedResultFuture, new FutureCallback<CouponList>() {
@Override
......@@ -542,16 +483,12 @@ public class WarplyManager {
ListenableFuture<JSONObject> futureCampaignAvailability = getCampaignAvailability(service);
ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureCampaigns, futurePersonalizedCampaigns, futureCampaignAvailability);
ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync(
allResultsFuture,
results -> {
ArrayList<Campaign> resultCampaigns = (ArrayList<Campaign>) results.get(0);
ArrayList<Campaign> resultPersonalizedCampaigns = (ArrayList<Campaign>) results.get(1);
JSONObject resultCampaignsAvailability = (JSONObject) results.get(2);
return executorService.submit(() -> mergeCampaignResults(resultCampaigns, resultPersonalizedCampaigns, resultCampaignsAvailability));
},
executorService
);
ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync(allResultsFuture, results -> {
ArrayList<Campaign> resultCampaigns = (ArrayList<Campaign>) results.get(0);
ArrayList<Campaign> resultPersonalizedCampaigns = (ArrayList<Campaign>) results.get(1);
JSONObject resultCampaignsAvailability = (JSONObject) results.get(2);
return executorService.submit(() -> mergeCampaignResults(resultCampaigns, resultPersonalizedCampaigns, resultCampaignsAvailability));
}, executorService);
Futures.addCallback(mergedResultFuture, new FutureCallback<ArrayList<Campaign>>() {
@Override
......@@ -584,16 +521,7 @@ public class WarplyManager {
jsonParamsCampaigns.put("campaigns", jsonParams);
RequestBody campaignsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaigns)).toString());
Call<ResponseBody> campaignsCall = service.getCampaigns(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
campaignsRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp)
);
Call<ResponseBody> campaignsCall = service.getCampaigns(WarplyProperty.getAppUuid(Warply.getWarplyContext()), campaignsRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp));
campaignsCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -732,17 +660,7 @@ public class WarplyManager {
jsonParamsCampaigns.put("campaigns", jsonParams);
RequestBody campaignsPersonalizedRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaigns)).toString());
Call<ResponseBody> campaignsPersonalizedCall = service.getCampaignsPersonalized(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
campaignsPersonalizedRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp),
"Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token")
);
Call<ResponseBody> campaignsPersonalizedCall = service.getCampaignsPersonalized(WarplyProperty.getAppUuid(Warply.getWarplyContext()), campaignsPersonalizedRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp), "Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token"));
campaignsPersonalizedCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -914,16 +832,7 @@ public class WarplyManager {
jsonParamsCampaignsAvailability.put("coupon", jsonParams);
RequestBody campaignsAvailabilityRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaignsAvailability)).toString());
Call<ResponseBody> campaignsAvailabilityCall = service.getCampaignsAvailability(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
campaignsAvailabilityRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp)
);
Call<ResponseBody> campaignsAvailabilityCall = service.getCampaignsAvailability(WarplyProperty.getAppUuid(Warply.getWarplyContext()), campaignsAvailabilityRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp));
campaignsAvailabilityCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -999,17 +908,7 @@ public class WarplyManager {
jsonParamsMarketPassDetails.put("consumer_data", jsonParams);
RequestBody marketPassDetailsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsMarketPassDetails)).toString());
Call<ResponseBody> marketPassDetailsCall = service.getMarketPassDetails(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
marketPassDetailsRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp),
"Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token")
);
Call<ResponseBody> marketPassDetailsCall = service.getMarketPassDetails(WarplyProperty.getAppUuid(Warply.getWarplyContext()), marketPassDetailsRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp), "Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token"));
marketPassDetailsCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -1076,6 +975,132 @@ public class WarplyManager {
return future;
}
private static ListenableFuture<RedeemedSMHistoryModel> getSMCouponsUniversalRetro(ApiService service, int tries, SettableFuture<RedeemedSMHistoryModel> future) {
String timeStamp = DateFormat.format("yyyy-MM-dd hh:mm:ss", System.currentTimeMillis()).toString();
String apiKey = WarpUtils.getApiKey(Warply.getWarplyContext());
String webId = WarpUtils.getWebId(Warply.getWarplyContext());
Map<String, Object> jsonParamsCoupons = new ArrayMap<>();
Map<String, Object> jsonParams = new ArrayMap<>();
jsonParams.put("action", "user_coupons");
JSONArray jArr = new JSONArray();
jArr.put("merchant");
jArr.put("redemption");
jsonParams.put("details", jArr);
jsonParams.put("language", WarplyProperty.getLanguage(Warply.getWarplyContext()));
jsonParams.put("couponset_types", new JSONArray().put("supermarket"));
jsonParamsCoupons.put("coupon", jsonParams);
RequestBody couponsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCoupons)).toString());
Call<ResponseBody> couponsCall = service.getUserCoupons(WarplyProperty.getAppUuid(Warply.getWarplyContext()), couponsRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp), "Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token"));
couponsCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
if (response.code() == 200 && response.body() != null) {
JSONObject jobjCouponsResponse = null;
try {
jobjCouponsResponse = new JSONObject(response.body().string());
} catch (Exception e) {
e.printStackTrace();
}
if (jobjCouponsResponse != null && jobjCouponsResponse.has("status") && jobjCouponsResponse.optString("status", "2").equals("1")) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_user_sm_coupons_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
JSONArray jCouponsBody = null;
try {
jCouponsBody = jobjCouponsResponse.optJSONArray("result");
} catch (Exception e) {
e.printStackTrace();
}
if (jCouponsBody != null) {
RedeemedSMHistoryModel redeemedSMHistoryModel = new RedeemedSMHistoryModel();
CouponList mCouponRedeemedList = new CouponList();
final ExecutorService executorCoupons = Executors.newFixedThreadPool(1);
JSONArray finalJCouponsBody = jCouponsBody;
executorCoupons.submit(() -> {
float couponValue = 0.0f;
for (int i = 0; i < finalJCouponsBody.length(); ++i) {
Coupon tempCoupon = new Coupon(finalJCouponsBody.optJSONObject(i), true);
if (tempCoupon.getStatus() == 0) {
mCouponRedeemedList.add(tempCoupon);
couponValue += (float) tempCoupon.getCouponsetDetails().getFinal_price();
}
}
Collections.sort(mCouponRedeemedList, (coupon1, coupon2) -> coupon1.getRedeemDate().compareTo(coupon2.getRedeemDate()));
redeemedSMHistoryModel.setTotalRedeemedValue(couponValue);
redeemedSMHistoryModel.setRedeemedCouponList(mCouponRedeemedList);
executorCoupons.shutdownNow();
future.set(redeemedSMHistoryModel);
});
} else {
LoyaltySDKDynatraceEventModel dynatraceEventElse = new LoyaltySDKDynatraceEventModel();
dynatraceEventElse.setEventName("custom_error_user_sm_coupons_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEventElse));
future.set(new RedeemedSMHistoryModel());
}
} else {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_user_sm_coupons_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
future.set(new RedeemedSMHistoryModel());
}
} else if (response.code() == 401) {
refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
int status = result.optInt("status", 2);
if (status == 1)
getSMCouponsUniversalRetro(service, tries/*, receiver*/, future);
else {
// receiver.onFailure(status);
if (tries < MAX_RETRIES) {
getSMCouponsUniversalRetro(service, (tries + 1), future);
} else {
// future.set(new CouponList());
future.setException(new Throwable());
}
}
}
@Override
public void onFailure(int errorCode) {
// receiver.onFailure(errorCode);
if (tries < MAX_RETRIES) {
getSMCouponsUniversalRetro(service, (tries + 1), future);
} else {
// future.set(new CouponList());
future.setException(new Throwable());
}
}
});
} else {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_user_sm_coupons_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
// future.set(new CouponList());
future.setException(new Throwable());
}
}
@Override
public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_error_user_sm_coupons_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
// future.set(new CouponList());
future.setException(new Throwable());
}
});
return future;
}
private static ListenableFuture<CouponList> getCouponsUniversalRetro(ApiService service, int tries, SettableFuture<CouponList> future) {
String timeStamp = DateFormat.format("yyyy-MM-dd hh:mm:ss", System.currentTimeMillis()).toString();
String apiKey = WarpUtils.getApiKey(Warply.getWarplyContext());
......@@ -1101,17 +1126,7 @@ public class WarplyManager {
jsonParamsCoupons.put("coupon", jsonParams);
RequestBody couponsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCoupons)).toString());
Call<ResponseBody> couponsCall = service.getUserCoupons(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
couponsRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp),
"Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token")
);
Call<ResponseBody> couponsCall = service.getUserCoupons(WarplyProperty.getAppUuid(Warply.getWarplyContext()), couponsRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp), "Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token"));
couponsCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -1160,6 +1175,11 @@ public class WarplyManager {
future.set(mCouponRedeemedList);
});
} else {
LoyaltySDKDynatraceEventModel dynatraceEventElse = new LoyaltySDKDynatraceEventModel();
dynatraceEventElse.setEventName("custom_error_user_coupons_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEventElse));
future.set(new CouponList());
}
} else {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
......@@ -1225,24 +1245,23 @@ public class WarplyManager {
String url = WarplyProperty.getBaseUrl(Warply.getWarplyContext()) + WarpConstants.BASE_REMOTE_PAGE_URL + sessionUuid;
Warply.INSTANCE.getSingleCampaign(null, url,
new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_read_campaign_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
}
Warply.INSTANCE.getSingleCampaign(null, url, new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_read_campaign_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
}
@Override
public void onFailure(int errorCode) {
if (errorCode == 301 || errorCode == 302 || errorCode == 307 || errorCode == 308) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_read_campaign_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
}
}
}, null);
@Override
public void onFailure(int errorCode) {
if (errorCode == 301 || errorCode == 302 || errorCode == 307 || errorCode == 308) {
LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
dynatraceEvent.setEventName("custom_success_read_campaign_loyalty");
EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
}
}
}, null);
}
public static void getMarketPassDetails(final CallbackReceiver<MarketPassDetailsModel> receiver) {
......@@ -1256,14 +1275,10 @@ public class WarplyManager {
ListenableFuture<MarketPassDetailsModel> futureMarketPassDetails = getMarketPassDetails(service);
ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureMarketPassDetails);
ListenableFuture<MarketPassDetailsModel> mergedResultFuture = Futures.transformAsync(
allResultsFuture,
results -> {
MarketPassDetailsModel resultMarketPassDetails = (MarketPassDetailsModel) results.get(0);
return executorService.submit(() -> resultMarketPassDetails);
},
executorService
);
ListenableFuture<MarketPassDetailsModel> mergedResultFuture = Futures.transformAsync(allResultsFuture, results -> {
MarketPassDetailsModel resultMarketPassDetails = (MarketPassDetailsModel) results.get(0);
return executorService.submit(() -> resultMarketPassDetails);
}, executorService);
Futures.addCallback(mergedResultFuture, new FutureCallback<MarketPassDetailsModel>() {
@Override
......@@ -1306,16 +1321,7 @@ public class WarplyManager {
jsonParamsCampaigns.put("campaigns", jsonParams);
RequestBody campaignsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaigns)).toString());
Call<ResponseBody> campaignsCall = service.getCampaigns(
WarplyProperty.getAppUuid(Warply.getWarplyContext()),
campaignsRequest,
timeStamp,
"android:" + Warply.getWarplyContext().getPackageName(),
new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
"mobile",
webId,
WarpUtils.produceSignature(apiKey + timeStamp)
);
Call<ResponseBody> campaignsCall = service.getCampaigns(WarplyProperty.getAppUuid(Warply.getWarplyContext()), campaignsRequest, timeStamp, "android:" + Warply.getWarplyContext().getPackageName(), new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), "mobile", webId, WarpUtils.produceSignature(apiKey + timeStamp));
campaignsCall.enqueue(new Callback<ResponseBody>() {
@Override
......@@ -1451,14 +1457,10 @@ public class WarplyManager {
ListenableFuture<ArrayList<Campaign>> futureCampaigns = getSupermarketCampaignRetro(service);
ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureCampaigns);
ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync(
allResultsFuture,
results -> {
ArrayList<Campaign> resultCampaigns = (ArrayList<Campaign>) results.get(0);
return executorService.submit(() -> resultCampaigns);
},
executorService
);
ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync(allResultsFuture, results -> {
ArrayList<Campaign> resultCampaigns = (ArrayList<Campaign>) results.get(0);
return executorService.submit(() -> resultCampaigns);
}, executorService);
Futures.addCallback(mergedResultFuture, new FutureCallback<ArrayList<Campaign>>() {
@Override
......@@ -1475,4 +1477,36 @@ public class WarplyManager {
}
}, executorService);
}
public static void getRedeemedSMHistory(final CallbackReceiver<RedeemedSMHistoryModel> receiver) {
WarpUtils.log("************* WARPLY User Redeemed History Request ********************");
WarpUtils.log("[WARP Trace] WARPLY User Redeemed History Request is active");
WarpUtils.log("**************************************************");
ApiService service = ApiClient.getRetrofitInstance().create(ApiService.class);
ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
SettableFuture<RedeemedSMHistoryModel> futureUniversal = SettableFuture.create();
ListenableFuture<RedeemedSMHistoryModel> futureCoupons = getSMCouponsUniversalRetro(service, 0, futureUniversal);
ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureCoupons);
ListenableFuture<RedeemedSMHistoryModel> mergedResultFuture = Futures.transformAsync(allResultsFuture, results -> {
RedeemedSMHistoryModel resultCoupons = (RedeemedSMHistoryModel) results.get(0);
return executorService.submit(() -> resultCoupons);
}, executorService);
Futures.addCallback(mergedResultFuture, new FutureCallback<RedeemedSMHistoryModel>() {
@Override
public void onSuccess(RedeemedSMHistoryModel mergedResult) {
executorService.shutdownNow();
new Handler(Looper.getMainLooper()).post(() -> receiver.onSuccess(mergedResult));
}
@Override
public void onFailure(Throwable throwable) {
executorService.shutdownNow();
new Handler(Looper.getMainLooper()).post(() -> receiver.onFailure(2));
}
}, executorService);
}
}
......