public async Task <TResponse> PutAsync <TResponse, TRequest>(Uri uri, TRequest data, MediaTypeFormatter mediaTypeFormatter, LogOptionEnum logOption = LogOptionEnum.FullLog, IDictionary <string, object> logMessage = null) { logMessage = logMessage ?? new Dictionary <string, object>(); logMessage.Add("RemoteRoute", uri.AbsoluteUri); logMessage.Add("Verb", "PUT"); var metric = new MetricWatcher(Constants.MetricClient, new MetricWatcherOption { ManualStartStop = true, LogMessage = logMessage }); var isException = false; var client = await SetupClient(); TResponse responseData; try { metric.Start(); var content = new ObjectContent <TRequest>(data, mediaTypeFormatter); var response = await client.PutAsync(uri, content); EnsureSuccessStatusCode(response); responseData = await response.Content.ReadAsAsync <TResponse>(new[] { mediaTypeFormatter }); } catch (Exception) { isException = true; throw; } finally { metric.Stop(isException); } return(responseData); }
public MetricWatcherOption() { LogMessage = new Dictionary <string, object>(); LoggingOption = LogOptionEnum.FullLog; }
public async Task <TResponse> PutAsync <TResponse, TRequest>(Uri uri, TRequest data, LogOptionEnum logOption = LogOptionEnum.FullLog, IDictionary <string, object> logMessage = null) { return(await PutAsync <TResponse, TRequest>(uri, data, new JsonMediaTypeFormatter(), logOption, logMessage)); }