/// <summary> /// Send an arbitrary string to the user's sandbox /// </summary> /// <param name="data"></param> /// <returns></returns> private IEnumerator SetUserSandboxDataCor(string data) { var requestData = RewardMobWebRequestFactory.CreateSendSandboxDataRequest(data); WWW postUserDataRequest = new WWW(RewardMobEndpoints.GetSendUserDataEndpoint(), requestData.Payload, requestData.Headers); yield return(postUserDataRequest); }
/// <summary> /// Get the user data stored in the user's sandbox /// </summary> /// <param name="callback"></param> /// <returns></returns> private IEnumerator GetUserSandboxDataCor(Action <string> callback) { var requestData = RewardMobWebRequestFactory.CreateGetSandboxDataRequest(); WWW postUserDataRequest = new WWW(RewardMobEndpoints.GetSendUserDataEndpoint(), requestData.Payload, requestData.Headers); yield return(postUserDataRequest); callback(postUserDataRequest.text); }
/// <summary> /// Send off POST request for cached rewards /// </summary> private IEnumerator PostCachedRewards(List <Reward> backupContainer = null) { //create the headers/payload var requestData = RewardMobWebRequestFactory.CreateCachedRewardsRequest(cachedRewards.ToArray()); WWW bulkPostRewards = new WWW(RewardMobEndpoints.GetMultiRewardEndpoint(), requestData.Payload, requestData.Headers); //halt for request to finish yield return(bulkPostRewards); //check if succeeded or not if (!string.IsNullOrEmpty(bulkPostRewards.error) && backupContainer != null) { cachedRewards = backupContainer; } }
/// <summary> /// Asynchronous method to send Reward off to API /// /// TODO: Should be split into more defined methods. /// </summary> /// <param name="rewardAmount">The amount of rewards to send.</param> /// <param name="rewardMessage">A short description explaining why the rewards were earned.</param> /// <returns>Cor</returns> private IEnumerator SendRewardCor(int rewardAmount, string rewardMessage, Action <Reward> onSuccess, Action <string> onFailed) { //check time remaining var webRequest = new WWW(RewardMobEndpoints.GetTournamentTimeRemainingEndpoint() + RewardMob.instance.gameID); //halt execution until request returns yield return(webRequest); float secondsRemaining; float.TryParse(webRequest.text, out secondsRemaining); //if there's no time remaining, don't bother if (secondsRemaining <= 0) { yield break; } //check if the reward is "cacheworthy" if (ShouldCache()) { Cache(new Reward(RewardMob.instance.platformID, rewardAmount, rewardMessage, System.DateTime.UtcNow.ToString())); //update the user onSuccess(new Reward(RewardMob.instance.platformID, rewardAmount, rewardMessage)); yield break; } //prepare the request var requestData = RewardMobWebRequestFactory.CreateRewardRequest(rewardAmount, rewardMessage); WWW postRewardRequest = new WWW(RewardMobEndpoints.GetSingleRewardEndpoint(), requestData.Payload, requestData.Headers); yield return(postRewardRequest); HandleRewardRequestClientsideUpdate(postRewardRequest, new Reward(RewardMob.instance.platformID, rewardAmount, rewardMessage), onSuccess, onFailed); //if we got an authorization error, cache it! if (!string.IsNullOrEmpty(postRewardRequest.error)) { Cache(new Reward(RewardMob.instance.platformID, rewardAmount, rewardMessage, System.DateTime.UtcNow.ToString())); } }