Esempio n. 1
0
        public async Task <IRestResponse <T> > TrackedRequest <T>(string resource, Method method,
                                                                  Action <RestClient> configureClient,
                                                                  Action <RestRequest> configureRequest,
                                                                  Action <TrackedRestRequest> track,
                                                                  CancellationToken ct = default(CancellationToken),
                                                                  ParametersHandling p = ParametersHandling.Default,
                                                                  object parameters    = null)
        {
            RestClient  client  = null;
            RestRequest request = null;

            await(new TaskFactory()).StartNew(
                () =>
            {
                client = GetRestClient();
                configureClient?.Invoke(client);

                request = GetRestRequest(resource, method, p, parameters);
                configureRequest?.Invoke(request);
            });


            var trequest = new TrackedRestRequest(request, parameters);
            var response = await client.Execute <T>(trequest, ct);

            track?.Invoke(trequest);

            return(response);
        }
Esempio n. 2
0
        public static async Task <IRestResponse> Execute(this RestClient client, TrackedRestRequest request, CancellationToken ct)
        {
            request.Timer.Reset();
            request.Timer.Start();

            try
            {
                request.Response = await client.ExecuteTaskAsync(request.Request, ct);

                request.Timer.Stop();
                return(request.Response);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                request.Timer.Stop();
            }
        }