public async Task <HttpOperationResponse> PostWithHttpMessagesAsync(Timecard value, Dictionary <string, List <string> > customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { if (value == null) { throw new ValidationException(ValidationRules.CannotBeNull, "value"); } // Create HTTP transport objects var httpRequest = new HttpRequestMessage { Method = new HttpMethod("POST"), RequestUri = GetUri(), }; SetHeaders(httpRequest, customHeaders); var requestcontent = SerializeRequest <Timecard>(value, httpRequest); await SetCredentialsAsync(httpRequest, cancellationToken); // Send Request HttpResponseMessage httpResponse = null; cancellationToken.ThrowIfCancellationRequested(); httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false); var _statusCode = httpResponse.StatusCode; cancellationToken.ThrowIfCancellationRequested(); string _responseContent = null; if ((int)_statusCode != 204) { var ex = new HttpOperationException(string.Format("Operation returned an invalid status code '{0}'", _statusCode)); _responseContent = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false); ex.Request = new HttpRequestMessageWrapper(httpRequest, requestcontent); ex.Response = new HttpResponseMessageWrapper(httpResponse, _responseContent); httpRequest.Dispose(); if (httpResponse != null) { httpResponse.Dispose(); } throw ex; } return(new HttpOperationResponse { Request = httpRequest, Response = httpResponse, }); }
/// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='id'> /// </param> /// <param name='value'> /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task PutAsync(this ITimecardOperations operations, string id, Timecard value, CancellationToken cancellationToken = default(CancellationToken)) { await operations.PutWithHttpMessagesAsync(id, value, null, cancellationToken).ConfigureAwait(false); }
/// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='id'> /// </param> /// <param name='value'> /// </param> public static void Put(this ITimecardOperations operations, string id, Timecard value) { Task.Factory.StartNew(s => ((ITimecardOperations)s).PutAsync(id, value), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult(); }