private void PerformApiRequest(AsyncResult result, IChinaAlibabaApi api, object args, Action <Exception, string> callback) { if (api.NeedAuthroized && (string.IsNullOrWhiteSpace(this.m_refreshToken) || !this.m_refreshTokenExpiredTime.HasValue)) { result.MarkCompleted(new AlibabaException("Unauthorized", 401), true); return; } if (api.NeedAuthroized) { if (this.CheckTokens((error) => { if (error != null) { result.MarkCompleted(error, false); } else { this.SendApiRequest(api, args, callback); } })) { this.SendApiRequest(api, args, callback); } } else { this.SendApiRequest(api, args, callback); } }
public IAsyncResult BeginInvokeApi <TReturn>(IChinaAlibabaApi api, IChinaAlibabaApiArguments arguments, AsyncCallback callback, object userState) { AsyncResult <TReturn> result = new AsyncResult <TReturn>(callback, userState); this.PerformApiRequest <TReturn>(result, api, arguments, (error, value) => { result.MarkCompleted(error, value); }); return(result); }
public IAsyncResult BeginInvokeApi(IChinaAlibabaApi api, object arguments, AsyncCallback callback, object userState) { AsyncResult <string> result = new AsyncResult <string>(callback, userState); this.PerformApiRequest(result, api, arguments, (error, content) => { result.MarkCompleted(error, content); }); return(result); }
private void SendApiRequest(IChinaAlibabaApi api, object args, Action <Exception, string> callback) { string apiUri = api.GetRequestUri(this.m_appKey); IDictionary <string, string> arguments = AlibabaHelper.GetArgumentsDictionary(args); if (api.NeedAuthroized) { arguments[ACCESS_TOKEN_ARGUMENT_NAME] = this.m_accessToken; } if (api.NeedTimestamp) { arguments[TIMESTAMP_ARGUMENT_NAME] = (DateTime.Now - this.m_timestampBase).TotalMilliseconds + this.m_timeError.ToString(); } if (api.NeedSignature) { arguments[SIGNATURE_ARGUMENT_NAME] = AlibabaHelper.GetApiSignature(apiUri, arguments, this.m_appSecret); } this.SendPostRequest(apiUri, arguments, api.Encoding, callback); }
private void PerformApiRequest <TReturn>(AsyncResult result, IChinaAlibabaApi api, IChinaAlibabaApiArguments args, Action <Exception, TReturn> callback) { this.PerformApiRequest(result, api, args, (error, content) => { this.ProcessReturnValue <TReturn>(error, content, callback); }); }
private void SendApiRequest <TReturn>(IChinaAlibabaApi api, object args, Action <Exception, TReturn> callback) { this.SendApiRequest(api, args, (error, content) => { this.ProcessReturnValue <TReturn>(error, content, callback); }); }