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); } }
public void GetAccounts(OnAccountsSuccessDelegate OnSuccessDelegate, OnAccountsFailedDelegate OnFailedDelegate) { StartCoroutine(GetAccountsCall(OnSuccessDelegate, OnFailedDelegate)); }