Exemplo n.º 1
0
        private IEnumerator GetAccountsCall(OnAccountsSuccessDelegate OnSucess, OnAccountsFailedDelegate OnFailed, bool isRetry = false)
        {
            Dictionary <string, string> headers = new Dictionary <string, string>(AuthorizationHeader);

            headers.Add("Authorization", "Bearer " + session.AccessToken);

            //pull user details if dont exist
            if (CurrentUser == null)
            {
                bool   isUserDetailsDone   = false;
                string getUserDetailsError = "";

                StartCoroutine(GetUserDetailsCall(delegate(User user) {
                    //user details loaded
                    isUserDetailsDone = true;
                }, delegate(string userDetailsError) {
                    OnFailed("Getting user details failed: " + userDetailsError);
                    isUserDetailsDone   = true;
                    getUserDetailsError = userDetailsError;
                }));

                while (!isUserDetailsDone)
                {
                    yield return(new WaitForEndOfFrame());
                }

                //error occured, break out of coroutine
                if (!string.IsNullOrEmpty(getUserDetailsError))
                {
                    yield break;
                }
            }

            WWW www = new WWW(API_URL + "/accounts", null, headers);

            yield return(www);

            while (!www.isDone)
            {
                yield return(new WaitForEndOfFrame());
            }

            if (!string.IsNullOrEmpty(www.error))
            {
                if (!isRetry)
                {
                    //refresh access code and retry this call in case access code expired
                    StartCoroutine(GetAccessToken(delegate {
                        StartCoroutine(GetAccountsCall(OnSucess, OnFailed, true));
                    }, delegate(string error) {
                        OnFailed(www.error);
                    }));
                }
                else
                {
                    Debug.LogError(www.error);
                    OnFailed(www.error);
                }
            }
            else
            {
                Debug.Log(www.text);
                CurrentUser.accounts = JsonConvert.DeserializeObject <List <User.Account> >(www.text);
                OnSucess(CurrentUser.accounts);
            }
        }
Exemplo n.º 2
0
 public void GetAccounts(OnAccountsSuccessDelegate OnSuccessDelegate, OnAccountsFailedDelegate OnFailedDelegate)
 {
     StartCoroutine(GetAccountsCall(OnSuccessDelegate, OnFailedDelegate));
 }