Panagiotis Triantafyllou

new version

......@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
ext {
PUBLISH_GROUP_ID = 'ly.warp'
PUBLISH_VERSION = '4.5.4-cosbeta10'
PUBLISH_VERSION = '4.5.4-cosbeta11'
PUBLISH_ARTIFACT_ID = 'warply-android-sdk'
}
......
......@@ -180,11 +180,11 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene
mAdapterMergedGifts.getPositionClicks()
.doOnNext(dataItem -> {
if (dataItem.getDataType() == 1) {
EventBus.getDefault().post(new WarplyEventBusManager().postWarplyEventBus("gifts", new LoyaltyGiftsForYouOfferClickEvent()));
EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltyGiftsForYouOfferClickEvent()));
startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
} else if (dataItem.getDataType() == 2) {
EventBus.getDefault().post(new WarplyEventBusManager().postWarplyEventBus("ccms", new LoyaltyContextualOfferModel()));
EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltyContextualOfferModel()));
Intent intent = new Intent(GiftsForYouActivity.this, CouponsetInfoActivity.class);
intent.putExtra("couponset", (Serializable) dataItem.getCouponset());
......
......@@ -90,7 +90,7 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
mRecyclerMore.setAdapter(mAdapterMore);
mAdapterMore.getPositionClicks()
.doOnNext(gift -> {
EventBus.getDefault().post(new WarplyEventBusManager().postWarplyEventBus("firebase", new LoyaltySDKFirebaseEventModel()));
EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltySDKFirebaseEventModel()));
startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(gift)));
})
.doOnError(error -> {
......
......@@ -9,10 +9,14 @@ import java.util.ArrayList;
public class CustomerStateModel {
private boolean nonTelco = false;
private boolean acceptedConsent = false;
private ArrayList<String> msisdnList = new ArrayList<>();
private String guid = "";
public CustomerStateModel() {
this.nonTelco = false;
this.acceptedConsent = false;
this.msisdnList = new ArrayList<>();
this.guid = "";
}
public boolean isNonTelco() {
......@@ -30,4 +34,20 @@ public class CustomerStateModel {
public void setAcceptedConsent(boolean acceptedConsent) {
this.acceptedConsent = acceptedConsent;
}
public ArrayList<String> getMsisdnList() {
return msisdnList;
}
public void setMsisdnList(ArrayList<String> msisdnList) {
this.msisdnList = msisdnList;
}
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
}
......
package ly.warp.sdk.io.request;
import android.util.Base64;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import ly.warp.sdk.utils.WarplyManagerHelper;
import ly.warp.sdk.utils.constants.WarpConstants;
/**
* Created by Panagiotis Triantafyllou on 15-June-22.
*/
public class WarplyIntegrationRequest {
// ===========================================================
// Constants
// ===========================================================
private final String KEY_MAPP = "consumer_data";
private final String KEY_ACTION = "action";
private final String KEY_ACTION_VALUE = "integration";
private final String KEY_DATA = "data";
// ===========================================================
// Fields
// ===========================================================
private HashMap<String, String> mFilters;
private long mCacheUpdateInterval = 0;
// ===========================================================
// Constructor
// ===========================================================
/**
* Default constructor of WarplyIntegrationRequest, initializes an empty filters HashMap
*/
public WarplyIntegrationRequest() {
mFilters = new HashMap<>();
}
public WarplyIntegrationRequest(WarplyIntegrationRequest copy) {
if (copy != null) {
this.mFilters = copy.mFilters;
this.mCacheUpdateInterval = copy.mCacheUpdateInterval;
}
}
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public boolean equals(Object object) {
if (object instanceof WarplyIntegrationRequest) {
WarplyIntegrationRequest other = (WarplyIntegrationRequest) object;
return other == this || (this.mFilters == other.mFilters || (this.mFilters != null && this.mFilters.equals(other.mFilters)));
}
return false;
}
@Override
public int hashCode() {
return mFilters.hashCode();
}
// ===========================================================
// Methods
// ===========================================================
// ===========================================================
// Getter & Setter
// ===========================================================
/**
* Call this to get how often the cached data will be updated.
*
* @return mCacheUpdateInterval
*/
public long getCacheUpdateInterval() {
return mCacheUpdateInterval;
}
/**
* Call this to set how often the cached data will be updated.
*
* @param updateInterval The time that data will be cached
* @return WarplyIntegrationRequest
*/
public WarplyIntegrationRequest setCacheUpdateInterval(long updateInterval) {
this.mCacheUpdateInterval = updateInterval;
if (mCacheUpdateInterval < 0) {
mCacheUpdateInterval = 0;
}
return this;
}
/**
* Call this to check if the Application uses Cache
*
* @return <p>true - the Application is using Cache</p>
* <p>false - the Application is not using Cache</p>
*/
public boolean isUseCache() {
return mCacheUpdateInterval > 0;
}
/**
* Call this to check whether the cached data need to be updated
*
* @param useCache <p>true - the Application is using Cache</p>
* <p>false - the Application is not using Cache</p>
* @return WarplyIntegrationRequest
*/
public WarplyIntegrationRequest setUseCache(boolean useCache) {
if (useCache) {
mCacheUpdateInterval = mCacheUpdateInterval > 0 ? mCacheUpdateInterval
: WarpConstants.INBOX_UPDATE_INTERVAL;
} else {
mCacheUpdateInterval = 0;
}
return this;
}
/**
* Call this to build the offers Json object
*
* @return bodyJsonObject
*/
public JSONObject toJson() {
JSONObject bodyJsonObject = new JSONObject();
try {
JSONObject extraJson = new JSONObject();
extraJson.putOpt(KEY_ACTION, KEY_ACTION_VALUE);
JSONObject data = new JSONObject();
data.putOpt("nonTelco", WarplyManagerHelper.loadCustomerState().isNonTelco());
data.putOpt("acceptedConsent", WarplyManagerHelper.loadCustomerState().isAcceptedConsent());
data.putOpt("msisdnList", new JSONArray(WarplyManagerHelper.loadCustomerState().getMsisdnList()));
data.putOpt("guid", WarplyManagerHelper.loadCustomerState().getGuid());
extraJson.putOpt(KEY_DATA, data);
bodyJsonObject.putOpt(KEY_MAPP, extraJson);
} catch (JSONException e) {
if (WarpConstants.DEBUG)
e.printStackTrace();
}
return bodyJsonObject;
}
public String getSignature() {
String signature = mFilters != null && mFilters.size() > 0 ? String.valueOf(mFilters.hashCode()) : "default_integration_request";
try {
byte[] hash = MessageDigest.getInstance("SHA-256").digest(signature.getBytes("UTF-8"));
signature = Base64.encodeToString(hash, Base64.NO_WRAP);
} catch (NullPointerException | NoSuchAlgorithmException
| UnsupportedEncodingException e) {
e.printStackTrace();
}
return signature;
}
}
......@@ -56,6 +56,7 @@ public class WarplyManagerHelper {
private static HashMap<String, CampaignList> mUniqueCampaignList = new HashMap<String, CampaignList>();
private static CouponList mCouponList = new CouponList();
private static CouponsetsList mCouponsetsList = new CouponsetsList();
private static CustomerStateModel mCustomerStateModel;
// ===========================================================
// Methods for/from SuperClass/Interfaces
......@@ -89,6 +90,30 @@ public class WarplyManagerHelper {
}
/**
* Open Warply campaign with sharing id
*/
public static String constructCampaignUrlForShare(Campaign item, String deeplink) {
item.setNew(false);
String url = item.getIndexUrl()
+ "?web_id=" + WarpUtils.getWebId(Warply.getWarplyContext())
+ "&app_uuid=" + WarplyProperty.getAppUuid(Warply.getWarplyContext())
+ "&api_key=" + WarpUtils.getApiKey(Warply.getWarplyContext())
+ "&session_uuid=" + item.getSessionUUID()
+ "&access_token=" + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token")
+ "&refresh_token=" + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("refresh_token")
+ "&client_id=" + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getClientValue("client_id")
+ "&client_secret=" + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getClientValue("client_secret");
/*+ "&sharing_id=" + sharingId;*/
if (mConsumer != null)
url = url + "&auth_token=" + (mConsumer.getUuid());
else
url = url + "&auth_token=";
return url;
}
/**
* Open CCMS campaign
*/
public static String constructCcmsUrl(LoyaltyContextualOfferModel item) {
......@@ -108,14 +133,25 @@ public class WarplyManagerHelper {
* Open Questionnaire
*/
public static void openQuestionnaire() {
if (mUniqueCampaignList != null && mUniqueCampaignList.get("questionnaire") != null && mUniqueCampaignList.get("questionnaire").size() > 0) {
constructCampaignUrl(mUniqueCampaignList.get("questionnaire").get(0));
}
}
/**
* Save if customer is nonTelco and if he/she has accepted the consents,
* And his msisdn list
*/
public static void saveCustomerState(CustomerStateModel customerState) {
mCustomerStateModel = customerState;
}
/**
* Save if customer is nonTelco and if he/she has accepted the consents
* Get if customer is nonTelco and if he/she has accepted the consents
* And his msisdn list
*/
public static void loadCustomerState(CustomerStateModel customerState) {
//TODO: write code to save the parameter
public static CustomerStateModel loadCustomerState() {
return mCustomerStateModel;
}
/**
......
......@@ -22,6 +22,7 @@ public class WarplyEventBusManager {
private WarplyPacingCardServiceEnabledModel pacingService;
private WarplyDealsAnalysisEventModel dealsAnalysis;
private WarplyCCMSEnabledModel ccmsActivated;
private LoyaltyGiftsForYouOfferClickEvent giftsYou;
public WarplyEventBusManager() {
......@@ -73,6 +74,10 @@ public class WarplyEventBusManager {
return this;
}
public WarplyEventBusManager(LoyaltyGiftsForYouOfferClickEvent giftsYou) {
this.giftsYou = giftsYou;
}
public HashMap<String, Object> subscribeWarplyEventBus() {
return mWarplyEventBusManager;
}
......
......@@ -76,6 +76,7 @@ import ly.warp.sdk.io.request.WarplyGetAddressRequest;
import ly.warp.sdk.io.request.WarplyGetCampaignsRequest;
import ly.warp.sdk.io.request.WarplyGetCardsRequest;
import ly.warp.sdk.io.request.WarplyGetCouponsetsRequest;
import ly.warp.sdk.io.request.WarplyIntegrationRequest;
import ly.warp.sdk.io.request.WarplyLoginRequest;
import ly.warp.sdk.io.request.WarplyMerchantCategoriesRequest;
import ly.warp.sdk.io.request.WarplyMerchantsRequest;
......@@ -1309,4 +1310,43 @@ public class WarplyManager {
},
request.getSignature()));
}
public static void consumerIntegration(WarplyIntegrationRequest request, final CallbackReceiver<JSONObject> receiver) {
WarpUtils.log("************* WARPLY Integration Consumer Request ********************");
WarpUtils.log("[WARP Trace] WARPLY Integration Consumer Request is active");
WarpUtils.log("**************************************************");
Warply.postReceiveMicroappData(true, "context", request.toJson(), new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
int status = result.optInt("status", 2);
if (status == 1)
receiver.onSuccess(result);
else
receiver.onFailure(status);
}
@Override
public void onFailure(int errorCode) {
if (errorCode == 401) {
refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
int status = result.optInt("status", 2);
if (status == 1)
consumerIntegration(request, receiver);
else
receiver.onFailure(status);
}
@Override
public void onFailure(int errorCode) {
receiver.onFailure(errorCode);
}
});
} else
receiver.onFailure(errorCode);
}
});
}
}
......