コード例 #1
0
        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);
        }
コード例 #2
0
 public MetricWatcherOption()
 {
     LogMessage    = new Dictionary <string, object>();
     LoggingOption = LogOptionEnum.FullLog;
 }
コード例 #3
0
 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));
 }