Example #1
0
        private RestRequestAsyncHandle ExecuteAsync(IRestRequest request,
                                                    Action <IRestResponse, RestRequestAsyncHandle> callback, string httpMethod,
                                                    Func <IHttp, Action <HttpResponse>, string, HttpWebRequest> getWebRequest)
        {
            AuthenticateIfNeeded(this, request);
            var http = ConfigureHttp(request);

            var asyncHandle = new RestRequestAsyncHandle();
            Action <HttpResponse> responseCb = r => ProcessResponse(request, r, asyncHandle, callback);

            if (UseSynchronizationContext && SynchronizationContext.Current != null)
            {
                var ctx = SynchronizationContext.Current;
                var cb  = responseCb;

                responseCb = resp => ctx.Post(s => cb(resp), null);
            }

            asyncHandle.WebRequest = getWebRequest(http, responseCb, httpMethod);

            return(asyncHandle);
        }
Example #2
0
        private void DeserializeResponse <T>(IRestRequest request, Action <IRestResponse <T>,
                                                                           RestRequestAsyncHandle> callback, IRestResponse response, RestRequestAsyncHandle asyncHandle)
        {
            IRestResponse <T> restResponse;

            try
            {
                restResponse = Deserialize <T>(request, response);
            }
            catch (Exception ex)
            {
                restResponse = new RestResponse <T>
                {
                    Request        = request,
                    ResponseStatus = ResponseStatus.Error,
                    ErrorMessage   = ex.Message,
                    ErrorException = ex
                };
            }

            callback(restResponse, asyncHandle);
        }