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); }
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(); } }