Пример #1
0
        public static void GettingAllMissions(Action <LootLockerGettingAllMissionsResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.gettingAllMissions;

            LootLockerServerRequest.CallAPI(endPoint.endPoint, endPoint.httpMethod, onComplete: (serverResponse) =>
            {
                LootLockerGettingAllMissionsResponse response = new LootLockerGettingAllMissionsResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerGettingAllMissionsResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, useAuthToken: false);
        }
Пример #2
0
        public static void GetBalance(Action <LootLockerBalanceResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.getCurrencyBalance;

            LootLockerServerRequest.CallAPI(endPoint.endPoint, endPoint.httpMethod, null, onComplete: (serverResponse) =>
            {
                LootLockerBalanceResponse response = new LootLockerBalanceResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerBalanceResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #3
0
        public static void GetXpAndLevel(LootLockerGetRequest data, Action <LootLockerXpResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.getXpAndLevel;

            string getVariable = string.Format(endPoint.endPoint, data.getRequests[0], data.getRequests[1]);

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, (serverResponse) =>
            {
                LootLockerXpResponse response = new LootLockerXpResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerXpResponse>(serverResponse.text);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, true);
        }
Пример #4
0
        public static void GetDeactivatedAssetNotification(Action <LootLockerDeactivatedAssetsResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.playerAssetDeactivationNotification;

            string getVariable = endPoint.endPoint;

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, (serverResponse) =>
            {
                LootLockerDeactivatedAssetsResponse response = new LootLockerDeactivatedAssetsResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerDeactivatedAssetsResponse>(serverResponse.text);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, true);
        }
Пример #5
0
        public static void ListingTriggeredTriggerEvents(Action <LootLockerListingAllTriggersResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.listingTriggeredTriggerEvents;

            LootLockerServerRequest.CallAPI(endPoint.endPoint, endPoint.httpMethod, "", (serverResponse) =>
            {
                LootLockerListingAllTriggersResponse response = new LootLockerListingAllTriggersResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerListingAllTriggersResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #6
0
        public static void ActivatingARentalAsset(LootLockerGetRequest lootLockerGetRequest, Action <LootLockerCharacterLoadoutResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.activatingARentalAsset;

            string getVariable = string.Format(endPoint.endPoint, lootLockerGetRequest.getRequests[0]);

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, "", (serverResponse) =>
            {
                LootLockerCharacterLoadoutResponse response = new LootLockerCharacterLoadoutResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerCharacterLoadoutResponse>(serverResponse.text);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, true);
        }
        public static void AddingFilesToAssetCandidates(LootLockerAddingFilesToAssetCandidatesRequest data, LootLockerGetRequest getRequests, Action <LootLockerUserGenerateContentResponse> onComplete)
        {
            EndPointClass requestEndPoint = LootLockerEndPoints.addingFilesToAssetCandidates;

            string endPoint = string.Format(requestEndPoint.endPoint, getRequests.getRequests[0]);

            Dictionary <string, string> formData = new Dictionary <string, string>();

            formData.Add("purpose", data.filePurpose.ToString());

            if (string.IsNullOrEmpty(data.fileName))
            {
                string[] splitFilePath   = data.filePath.Split(new char[] { '\\', '/' });
                string   defaultFileName = splitFilePath[splitFilePath.Length - 1];
                data.fileName = defaultFileName;
            }

            if (string.IsNullOrEmpty(data.fileContentType))
            {
                data.fileContentType = "multipart/form-data";
            }
            byte[] fileData = System.IO.File.ReadAllBytes(data.filePath);

            LootLockerServerRequest.UploadFile(endPoint, requestEndPoint.httpMethod, fileData, data.fileName, data.fileContentType,
                                               formData, (serverResponse) =>
            {
                LootLockerUserGenerateContentResponse response = new LootLockerUserGenerateContentResponse();

                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerUserGenerateContentResponse>(serverResponse.text);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, useAuthToken: true, callerRole: LootLocker.LootLockerEnums.LootLockerCallerRole.User);
        }
Пример #8
0
        public static void CollectingAnItem(LootLockerCollectingAnItemRequest data, Action <LootLockerCollectingAnItemResponse> onComplete)
        {
            string json = "";

            if (data == null)
            {
                return;
            }
            else
            {
                json = JsonConvert.SerializeObject(data);
            }

            EndPointClass endPoint = LootLockerEndPoints.collectingAnItem;

            LootLockerServerRequest.CallAPI(endPoint.endPoint, endPoint.httpMethod, json, (serverResponse) =>
            {
                LootLockerCollectingAnItemResponse response = new LootLockerCollectingAnItemResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerCollectingAnItemResponse>(serverResponse.text);
                    string[] collectableStrings = data.slug.Split('.');

                    string collectable = collectableStrings[0];
                    string group       = collectableStrings[1];
                    string item        = collectableStrings[2];

                    response.mainCollectable = response.collectables?.FirstOrDefault(x => x.name == collectable);
                    response.mainGroup       = response.mainCollectable?.groups?.FirstOrDefault(x => x.name == group);
                    response.mainItem        = response.mainGroup?.items?.FirstOrDefault(x => x.name == item);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, true);
        }
Пример #9
0
        public static void GetPlayerName(Action <PlayerNameResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.getPlayerName;

            string getVariable = endPoint.endPoint;

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, (Action <LootLockerResponse>)((serverResponse) =>
            {
                PlayerNameResponse response = new PlayerNameResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <PlayerNameResponse>(serverResponse.text);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text       = serverResponse.text;
                response.success    = serverResponse.success;
                response.Error      = serverResponse.Error;
                response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }), true);
        }
Пример #10
0
        public static void GettingAllMaps(Action <LootLockerMapsResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.gettingAllMaps;

            string getVariable = endPoint.endPoint;

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, onComplete: (serverResponse) =>
            {
                LootLockerMapsResponse response = new LootLockerMapsResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    LootLockerSDKManager.DebugMessage(serverResponse.text);
                    response = JsonConvert.DeserializeObject <LootLockerMapsResponse>(serverResponse.text);
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #11
0
        public static void CreateCharacter(LootLockerCreateCharacterRequest data, Action <LootLockerCharacterLoadoutResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.createCharacter;

            string json = (data == null) ? "" : JsonConvert.SerializeObject(data);

            string getVariable = endPoint.endPoint;

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, json, (serverResponse) =>
            {
                LootLockerCharacterLoadoutResponse response = new LootLockerCharacterLoadoutResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerCharacterLoadoutResponse>(serverResponse.text);
                }

                //LootLockerSDKManager.DebugMessage(serverResponse.text, !string.IsNullOrEmpty(serverResponse.Error));
                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, true);
        }
Пример #12
0
        public static void RemovingFilesFromAssetCandidates(LootLockerGetRequest data, Action <LootLockerUserGenerateContentResponse> onComplete)
        {
            EndPointClass requestEndPoint = LootLockerEndPoints.current.removingFilesFromAssetCandidates;

            string endPoint = string.Format(requestEndPoint.endPoint, data.getRequests[0], data.getRequests[1]);

            LootLockerServerRequest.CallAPI(endPoint, requestEndPoint.httpMethod, onComplete: (serverResponse) =>
            {
                LootLockerUserGenerateContentResponse response = new LootLockerUserGenerateContentResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    LootLockerSDKManager.DebugMessage(serverResponse.text);
                    response = JsonConvert.DeserializeObject <LootLockerUserGenerateContentResponse>(serverResponse.text);
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, useAuthToken: true, callerRole: LootLocker.LootLockerEnums.LootLockerCallerRole.User);
        }
Пример #13
0
        public static void GettingASingleAssetCandidate(LootLockerGetRequest getRequests, Action <LootLockerUserGenerateContentResponse> onComplete)
        {
            EndPointClass requestEndPoint = LootLockerEndPoints.current.gettingASingleAssetCandidate;

            string endPoint = string.Format(requestEndPoint.endPoint, getRequests.getRequests[0]);

            LootLockerServerRequest.CallAPI(endPoint, requestEndPoint.httpMethod, null, (serverResponse) =>
            {
                LootLockerUserGenerateContentResponse response = new LootLockerUserGenerateContentResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    LootLockerSDKManager.DebugMessage(serverResponse.text);
                    response = JsonConvert.DeserializeObject <LootLockerUserGenerateContentResponse>(serverResponse.text);
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true, LootLocker.LootLockerEnums.LootLockerCallerRole.User);
        }
Пример #14
0
        public static void PollingOrderStatus(LootLockerGetRequest lootLockerGetRequest, Action <LootLockerCharacterLoadoutResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.pollingOrderStatus;

            string getVariable = string.Format(endPoint.endPoint, lootLockerGetRequest.getRequests[0]);

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, "", (serverResponse) =>
            {
                LootLockerCharacterLoadoutResponse response = new LootLockerCharacterLoadoutResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerCharacterLoadoutResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #15
0
        public static void StartingEvent(LootLockerGetRequest data, Action <LootLockerStartinEventResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.startingEvent;

            string getVariable = string.Format(endPoint.endPoint, data.getRequests[0]);

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, onComplete: (serverResponse) =>
            {
                LootLockerStartinEventResponse response = new LootLockerStartinEventResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    LootLockerSDKManager.DebugMessage(serverResponse.text);
                    response = JsonConvert.DeserializeObject <LootLockerStartinEventResponse>(serverResponse.text);
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #16
0
        public static void GetEquipableContextToDefaultCharacter(Action <LootLockerContextResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.getEquipableContextToDefaultCharacter;

            string getVariable = endPoint.endPoint;

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, (serverResponse) =>
            {
                LootLockerContextResponse response = new LootLockerContextResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerContextResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #17
0
        public static void SetProfilePublic(Action <LootLockerStandardResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.setProfilePublic;

            string getVariable = endPoint.endPoint;

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, (serverResponse) =>
            {
                LootLockerStandardResponse response = new LootLockerStandardResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerStandardResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #18
0
        public static void StartingAMission(LootLockerGetRequest data, Action <LootLockerStartingAMissionResponse> onComplete)
        {
            EndPointClass requestEndPoint = LootLockerEndPoints.current.startingMission;

            string endPoint = string.Format(requestEndPoint.endPoint, data.getRequests[0]);

            LootLockerServerRequest.CallAPI(endPoint, requestEndPoint.httpMethod, onComplete: (serverResponse) =>
            {
                LootLockerStartingAMissionResponse response = new LootLockerStartingAMissionResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerStartingAMissionResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, useAuthToken: false);
        }
Пример #19
0
        public static void GetOtherPlayersPublicKeyValuePairs(LootLockerGetRequest data, Action <LootLockerGetPersistentStoragResponse> onComplete)
        {
            EndPointClass endPoint = LootLockerEndPoints.current.getOtherPlayersPublicKeyValuePairs;

            string getVariable = string.Format(endPoint.endPoint, data.getRequests[0]);

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, onComplete: (serverResponse) =>
            {
                LootLockerGetPersistentStoragResponse response = new LootLockerGetPersistentStoragResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response      = JsonConvert.DeserializeObject <LootLockerGetPersistentStoragResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.text    = serverResponse.text;
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #20
0
        UnityWebRequest CreateWebRequest(string url, LootLockerServerRequest request)
        {
            UnityWebRequest webRequest;

            switch (request.httpMethod)
            {
            case LootLockerHTTPMethod.UPLOAD:
                webRequest = UnityWebRequest.Post(url, request.form);
                break;

            case LootLockerHTTPMethod.POST:
            case LootLockerHTTPMethod.PATCH:
            // Defaults are fine for PUT
            case LootLockerHTTPMethod.PUT:

                if (request.payload == null && request.upload != null)
                {
                    List <IMultipartFormSection> form = new List <IMultipartFormSection>
                    {
                        new MultipartFormFileSection(request.uploadName, request.upload, System.DateTime.Now.ToString(), request.uploadType)
                    };

                    // generate a boundary then convert the form to byte[]
                    byte[] boundary     = UnityWebRequest.GenerateBoundary();
                    byte[] formSections = UnityWebRequest.SerializeFormSections(form, boundary);
                    // Set the content type - NO QUOTES around the boundary
                    string contentType = String.Concat("multipart/form-data; boundary=--", Encoding.UTF8.GetString(boundary));

                    //Debug.LogError("Content type Set: " + contentType);
                    // Make my request object and add the raw body. Set anything else you need here
                    webRequest = new UnityWebRequest();
                    webRequest.SetRequestHeader("Content-Type", "multipart/form-data; boundary=--");
                    webRequest.uri = new Uri(url);
                    Debug.Log(url);    //the url is wrong in some cases
                    webRequest.uploadHandler             = new UploadHandlerRaw(formSections);
                    webRequest.uploadHandler.contentType = contentType;
                    webRequest.useHttpContinue           = false;

                    // webRequest.method = "POST";
                    webRequest.method = UnityWebRequest.kHttpVerbPOST;
                }
                else
                {
                    string json = (request.payload != null && request.payload.Count > 0) ? JsonConvert.SerializeObject(request.payload) : request.jsonPayload;
#if UNITY_EDITOR
                    LootLockerSDKManager.DebugMessage("REQUEST BODY = " + json);
#endif
                    byte[] bytes = System.Text.Encoding.UTF8.GetBytes(string.IsNullOrEmpty(json) ? "{}" : json);
                    webRequest        = UnityWebRequest.Put(url, bytes);
                    webRequest.method = request.httpMethod.ToString();
                }

                break;

            case LootLockerHTTPMethod.OPTIONS:
            case LootLockerHTTPMethod.HEAD:
            case LootLockerHTTPMethod.GET:
                // Defaults are fine for GET
                webRequest        = UnityWebRequest.Get(url);
                webRequest.method = request.httpMethod.ToString();
                break;

            case LootLockerHTTPMethod.DELETE:
                // Defaults are fine for DELETE
                webRequest = UnityWebRequest.Delete(url);
                break;

            default:
                throw new System.Exception("Invalid HTTP Method");
            }

            if (baseHeaders != null)
            {
                foreach (KeyValuePair <string, string> pair in baseHeaders)
                {
                    if (pair.Key == "Content-Type" && request.upload != null)
                    {
                        continue;
                    }

                    webRequest.SetRequestHeader(pair.Key, pair.Value);
                }
            }

            if (request.extraHeaders != null)
            {
                foreach (KeyValuePair <string, string> pair in request.extraHeaders)
                {
                    webRequest.SetRequestHeader(pair.Key, pair.Value);
                }
            }

            return(webRequest);
        }
Пример #21
0
 protected abstract void RefreshTokenAndCompleteCall(LootLockerServerRequest cacheServerRequest, System.Action <LootLockerResponse> OnServerResponse);
Пример #22
0
        public static void GetAssetsOriginal(Action <LootLockerAssetResponse> onComplete, int assetCount, int?idOfLastAsset = null, LootLocker.LootLockerEnums.AssetFilter filter = LootLocker.LootLockerEnums.AssetFilter.none)
        {
            EndPointClass endPoint    = LootLockerEndPoints.current.gettingAssetListWithCount;
            string        getVariable = string.Format(endPoint.endPoint, assetCount);

            if (idOfLastAsset != null && assetCount > 0)
            {
                endPoint    = LootLockerEndPoints.current.gettingAssetListWithAfterAndCount;
                getVariable = string.Format(endPoint.endPoint, assetCount, idOfLastAsset.ToString());
            }
            else if (idOfLastAsset != null && assetCount > 0 && filter != LootLocker.LootLockerEnums.AssetFilter.none)
            {
                endPoint = LootLockerEndPoints.current.gettingAssetListOriginal;
                string filterString = "";
                switch (filter)
                {
                case LootLocker.LootLockerEnums.AssetFilter.purchasable:
                    filterString = LootLocker.LootLockerEnums.AssetFilter.purchasable.ToString();
                    break;

                case LootLocker.LootLockerEnums.AssetFilter.nonpurchasable:
                    filterString = "!purchasable";
                    break;

                case LootLocker.LootLockerEnums.AssetFilter.rentable:
                    filterString = LootLocker.LootLockerEnums.AssetFilter.rentable.ToString();
                    break;

                case LootLocker.LootLockerEnums.AssetFilter.nonrentable:
                    filterString = "!rentable";
                    break;

                case LootLocker.LootLockerEnums.AssetFilter.popular:
                    filterString = LootLocker.LootLockerEnums.AssetFilter.popular.ToString();
                    break;

                case LootLocker.LootLockerEnums.AssetFilter.nonpopular:
                    filterString = "!popular";
                    break;
                }
                getVariable = string.Format(endPoint.endPoint, assetCount, idOfLastAsset.ToString(), filterString);
            }

            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, onComplete: (serverResponse) =>
            {
                LootLockerAssetResponse response = new LootLockerAssetResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    LootLockerSDKManager.DebugMessage(serverResponse.text);
                    response      = JsonConvert.DeserializeObject <LootLockerAssetResponse>(serverResponse.text);
                    response.text = serverResponse.text;
                    if (response != null)
                    {
                        LootLockerAssetRequest.lastId = response.assets.Last()?.id != null ? response.assets.Last().id : 0;
                    }
                    onComplete?.Invoke(response);
                }
                else
                {
                    response.message = serverResponse.message;
                    response.Error   = serverResponse.Error;
                    onComplete?.Invoke(response);
                }
            }, true);
        }
Пример #23
0
        public void SendRequest(LootLockerServerRequest request, System.Action <LootLockerResponse> OnServerResponse = null)
        {
            StartCoroutine(coroutine());
            IEnumerator coroutine()
            {
                //Always wait 1 frame before starting any request to the server to make sure the requesters code has exited the main thread.
                yield return(null);

                //Build the URL that we will hit based on the specified endpoint, query params, etc
                string url = BuildURL(request.endpoint, request.queryParams);

#if UNITY_EDITOR
                LootLockerSDKManager.DebugMessage("ServerRequest URL: " + url);
#endif

                using (UnityWebRequest webRequest = CreateWebRequest(url, request))
                {
                    webRequest.downloadHandler = new DownloadHandlerBuffer();

                    float startTime  = Time.time;
                    float maxTimeOut = 5f;

                    yield return(webRequest.SendWebRequest());

                    while (!webRequest.isDone)
                    {
                        yield return(null);

                        if (Time.time - startTime >= maxTimeOut)
                        {
                            LootLockerSDKManager.DebugMessage("ERROR: Exceeded maxTimeOut waiting for a response from " + request.httpMethod.ToString() + " " + url);
                            yield break;
                        }
                    }

                    if (!webRequest.isDone)
                    {
                        OnServerResponse?.Invoke(new LootLockerResponse()
                        {
                            hasError = true, statusCode = 408, Error = "{\"error\": \"" + request.endpoint + " Timed out.\"}"
                        });
                        yield break;
                    }

                    try
                    {
#if UNITY_EDITOR
                        LootLockerSDKManager.DebugMessage("Server Response: " + request.httpMethod + " " + request.endpoint + " completed in " + (Time.time - startTime).ToString("n4") + " secs.\nResponse: " + webRequest.downloadHandler.text);
#endif
                    }
                    catch
                    {
                        LootLockerSDKManager.DebugMessage(request.httpMethod.ToString(), true);
                        LootLockerSDKManager.DebugMessage(request.endpoint, true);
                        LootLockerSDKManager.DebugMessage(webRequest.downloadHandler.text, true);
                    }

                    LootLockerResponse response = new LootLockerResponse();
                    response.statusCode = (int)webRequest.responseCode;
                    if (webRequest.isHttpError || webRequest.isNetworkError || !string.IsNullOrEmpty(webRequest.error))
                    {
                        switch (webRequest.responseCode)
                        {
                        case 200:
                            response.Error = "";
                            break;

                        case 400:
                            response.Error = "Bad Request -- Your request has an error";
                            break;

                        case 402:
                            response.Error = "Payment Required -- Payment failed. Insufficient funds, etc.";
                            break;

                        case 401:
                            response.Error = "Unauthroized -- Your session_token is invalid";
                            break;

                        case 403:
                            response.Error = "Forbidden -- You do not have access";
                            break;

                        case 404:
                            response.Error = "Not Found";
                            break;

                        case 405:
                            response.Error = "Method Not Allowed";
                            break;

                        case 406:
                            response.Error = "Not Acceptable -- Purchasing is disabled";
                            break;

                        case 409:
                            response.Error = "Conflict -- Your state is most likely not aligned with the servers.";
                            break;

                        case 429:
                            response.Error = "Too Many Requests -- You're being limited for sending too many requests too quickly.";
                            break;

                        case 500:
                            response.Error = "Internal Server Error -- We had a problem with our server. Try again later.";
                            break;

                        case 503:
                            response.Error = "Service Unavailable -- We're either offline for maintenance, or an error that should be solvable by calling again later was triggered.";
                            break;
                        }
#if UNITY_EDITOR
                        LootLockerSDKManager.DebugMessage("Response code: " + webRequest.responseCode);
#endif
                        if (webRequest.responseCode != 401 || !activeConfig.allowTokenRefresh)
                        {
                            response.Error += " " + webRequest.downloadHandler.text;
                            response.text   = webRequest.downloadHandler.text;
                        }
                        else
                        {
                            RefreshTokenAndCompleteCall(request, OnServerResponse);
                        }

                        response.status   = false;
                        response.hasError = true;
                        response.text     = webRequest.downloadHandler.text;
                        OnServerResponse?.Invoke(response);
                    }
                    else
                    {
                        response.status   = true;
                        response.hasError = false;
                        response.text     = webRequest.downloadHandler.text;
                        OnServerResponse?.Invoke(response);
                    }
                }
            }
        }
Пример #24
0
        public static void GetAssetsOriginal(Action <LootLockerAssetResponse> onComplete, int assetCount, int?idOfLastAsset = null, List <LootLocker.LootLockerEnums.AssetFilter> filter = null, bool includeUGC = false, Dictionary <string, string> assetFilters = null, int UGCCreatorPlayerID = 0)
        {
            EndPointClass endPoint     = LootLockerEndPoints.gettingAssetListWithCount;
            string        getVariable  = string.Format(endPoint.endPoint, assetCount);
            string        tempEndpoint = string.Empty;
            string        filterString = string.Empty;

            if (idOfLastAsset != null)
            {
                tempEndpoint = $"&after={idOfLastAsset}";
                getVariable += tempEndpoint;
            }

            if (filter != null)
            {
                filterString = GetStringOfEnum(filter.First());
                for (int i = 1; i < filter.Count; i++)
                {
                    filterString += "," + GetStringOfEnum(filter[i]);
                }
                tempEndpoint = $"&filter={filterString}";
                getVariable += tempEndpoint;
            }

            if (includeUGC)
            {
                tempEndpoint = $"&include_ugc={includeUGC.ToString().ToLower()}";
                getVariable += tempEndpoint;
            }

            if (UGCCreatorPlayerID > 0)
            {
                tempEndpoint = $"&ugc_creator_player_id={UGCCreatorPlayerID.ToString().ToLower()}";
                getVariable += tempEndpoint;
            }

            if (assetFilters != null)
            {
                KeyValuePair <string, string> keys = assetFilters.First();
                filterString = $"{keys.Key}={keys.Value}";
                int count = 0;
                foreach (var kvp in assetFilters)
                {
                    if (count > 0)
                    {
                        filterString += $";{kvp.Key}={kvp.Value}";
                    }
                    count++;
                }
                tempEndpoint = $"&asset_filters={filterString}";
                getVariable += tempEndpoint;
            }
            LootLockerServerRequest.CallAPI(getVariable, endPoint.httpMethod, null, onComplete: (serverResponse) =>
            {
                LootLockerAssetResponse response = new LootLockerAssetResponse();
                if (string.IsNullOrEmpty(serverResponse.Error))
                {
                    response = JsonConvert.DeserializeObject <LootLockerAssetResponse>(serverResponse.text);
                }

                response.text    = serverResponse.text;
                response.success = serverResponse.success;
                response.Error   = serverResponse.Error; response.statusCode = serverResponse.statusCode;
                onComplete?.Invoke(response);
            }, true);
        }
        protected override void RefreshTokenAndCompleteCall(LootLockerServerRequest cacheServerRequest, Action <LootLockerResponse> OnServerResponse)
        {
            string platform = LootLockerSDKManager.GetCurrentPlatform();

            if (platform == Platforms.Steam)
            {
                LootLockerSDKManager.DebugMessage("Token has expired and token refresh is not supported for Steam", true);
                LootLockerResponse res = new LootLockerResponse();
                res.statusCode = 401;
                res.Error      = "Token Expired";
                res.hasError   = true;
                OnServerResponse?.Invoke(res);
                return;
            }

            if (platform == Platforms.NintendoSwitch)
            {
                LootLockerSDKManager.DebugMessage("Token has expired and token refresh is not supported for Nintendo Switch", true);
                LootLockerResponse res = new LootLockerResponse();
                res.statusCode = 401;
                res.Error      = "Token Expired";
                res.hasError   = true;
                OnServerResponse?.Invoke(res);
                return;
            }

            if (platform == Platforms.Guest)
            {
                LootLockerSDKManager.StartGuestSession(response =>
                {
                    CompleteCall(cacheServerRequest, OnServerResponse, response);
                });
                return;
            }
            else if (platform == Platforms.WhiteLabel)
            {
                LootLockerSDKManager.StartWhiteLabelSession(response =>
                {
                    CompleteCall(cacheServerRequest, OnServerResponse, response);
                });

                return;
            }
            else
            {
                var sessionRequest = new LootLockerSessionRequest(LootLockerConfig.current.deviceID);
                LootLockerAPIManager.Session(sessionRequest, (response) =>
                {
                    CompleteCall(cacheServerRequest, OnServerResponse, response);
                });
            }

            void CompleteCall(LootLockerServerRequest newcacheServerRequest, Action <LootLockerResponse> newOnServerResponse, LootLockerSessionResponse response)
            {
                if (response.success)
                {
                    Dictionary <string, string> headers = new Dictionary <string, string>();
                    headers.Add("x-session-token", LootLockerConfig.current.token);
                    newcacheServerRequest.extraHeaders = headers;
                    if (newcacheServerRequest.retryCount < 4)
                    {
                        SendRequest(newcacheServerRequest, newOnServerResponse);
                        newcacheServerRequest.retryCount++;
                    }
                    else
                    {
                        LootLockerSDKManager.DebugMessage("Session refresh failed", true);
                        LootLockerResponse res = new LootLockerResponse();
                        res.statusCode = 401;
                        res.Error      = "Token Expired";
                        res.hasError   = true;
                        newOnServerResponse?.Invoke(res);
                    }
                }
                else
                {
                    LootLockerSDKManager.DebugMessage("Session refresh failed", true);
                    LootLockerResponse res = new LootLockerResponse();
                    res.statusCode = 401;
                    res.Error      = "Token Expired";
                    res.hasError   = true;
                    newOnServerResponse?.Invoke(res);
                }
            }
        }