public void Delete( string requestUri, IETagHolder etag, Hashtable customHeaders) { using (var webRequest = (HttpWebRequest)WebRequest.Create(new Uri(this.baseAddress.OriginalString + requestUri))) { webRequest.Method = "DELETE"; // add authorization header webRequest.Headers.Add("Authorization", this.authenticationHeaderProvider.GetAuthorizationHeader()); // add custom headers AddCustomHeaders(webRequest, customHeaders); // add ETag header InsertEtag(webRequest, etag); // perform request and get response using (var webResponse = webRequest.GetResponse() as HttpWebResponse) { if (webResponse.StatusCode != HttpStatusCode.NoContent) { throw new WebException("", null, WebExceptionStatus.ReceiveFailure, webResponse); } // else it's a success and there's nothing to do but exit the method. } } }
Task RemoveDeviceAsync(string deviceId, IETagHolder eTagHolder, CancellationToken cancellationToken) { var errorMappingOverrides = new Dictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > >(); errorMappingOverrides.Add(HttpStatusCode.NotFound, async responseMessage => { var responseContent = await ExceptionHandlingHelper.GetExceptionMessageAsync(responseMessage); return((Exception) new DeviceNotFoundException(responseContent, (Exception)null)); }); errorMappingOverrides.Add(HttpStatusCode.PreconditionFailed, async(responseMessage) => new PreconditionFailedException(await ExceptionHandlingHelper.GetExceptionMessageAsync(responseMessage))); return(this.httpClientHelper.DeleteAsync(GetRequestUri(deviceId), eTagHolder, errorMappingOverrides, null, cancellationToken)); }
private static void InsertEtag(HttpRequestMessage requestMessage, IETagHolder entity, PutOperationType operationType) { if (operationType == PutOperationType.CreateEntity) { return; } if (operationType == PutOperationType.ForceUpdateEntity) { const string etag = "\"*\""; requestMessage.Headers.IfMatch.Add(new EntityTagHeaderValue(etag)); } else { InsertEtag(requestMessage, entity); } }
public override Task CancelJobAsync(string jobId, CancellationToken cancellationToken) { this.EnsureInstanceNotClosed(); var errorMappingOverrides = new Dictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > >(); errorMappingOverrides.Add(HttpStatusCode.NotFound, responseMessage => Task.FromResult((Exception) new JobNotFoundException(jobId))); IETagHolder temp = null; return(this.httpClientHelper.DeleteAsync( GetJobUri("/{0}".FormatInvariant(jobId)), temp, errorMappingOverrides, null, cancellationToken)); }
static void InsertEtag(HttpWebRequest requestMessage, IETagHolder entity, PutOperationType operationType) { if (operationType == PutOperationType.CreateEntity) { return; } if (operationType == PutOperationType.ForceUpdateEntity) { const string etag = "\"*\""; requestMessage.Headers.Add("IfMatch", etag); } else { InsertEtag(requestMessage, entity); } }
Task RemoveDeviceRegistrationAsync(string registrationId, IETagHolder eTagHolder, CancellationToken cancellationToken) { ThrowIfClosed(); if (string.IsNullOrWhiteSpace(eTagHolder.ETag)) { throw new ArgumentException(ApiResources.ETagNotSetWhileDeletingDeviceRegistration); } var errorMappingOverrides = new Dictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > > { { HttpStatusCode.NotFound, responseMessage => Task.FromResult((Exception) new RegistrationNotFoundException(registrationId)) } }; return(this.httpClientHelper.DeleteAsync <IETagHolder>(GetDeviceRegistrationUri(registrationId), eTagHolder, errorMappingOverrides, null, cancellationToken)); }
private static void InsertEtag(HttpRequestMessage requestMessage, IETagHolder entity) { if (string.IsNullOrWhiteSpace(entity.ETag)) { throw new ArgumentException("The entity does not have its ETag set."); } string etag = entity.ETag; if (!etag.StartsWith("\"", StringComparison.InvariantCultureIgnoreCase)) { etag = "\"" + etag; } if (!etag.EndsWith("\"", StringComparison.InvariantCultureIgnoreCase)) { etag += "\""; } requestMessage.Headers.IfMatch.Add(new EntityTagHeaderValue(etag)); }
static void InsertEtag(HttpWebRequest requestMessage, IETagHolder entity) { if (entity.ETag.IsNullOrWhiteSpace()) { throw new ArgumentException("The entity does not have its ETag set."); } string etag = entity.ETag; if (etag.IndexOf("\"") != 0) { etag = "\"" + etag; } if (etag.LastIndexOf("\"") != etag.Length) { etag = etag + "\""; } requestMessage.Headers.Add("IfMatch", etag); }
Task RemoveDeviceAsync(string deviceId, IETagHolder eTagHolder, CancellationToken cancellationToken) { var errorMappingOverrides = new Dictionary<HttpStatusCode, Func<HttpResponseMessage, Task<Exception>>>(); errorMappingOverrides.Add(HttpStatusCode.NotFound, async responseMessage => { var responseContent = await ExceptionHandlingHelper.GetExceptionMessageAsync(responseMessage); return (Exception) new DeviceNotFoundException(responseContent, (Exception) null); }); errorMappingOverrides.Add(HttpStatusCode.PreconditionFailed, async (responseMessage) => new PreconditionFailedException(await ExceptionHandlingHelper.GetExceptionMessageAsync(responseMessage))); return this.httpClientHelper.DeleteAsync(GetRequestUri(deviceId), eTagHolder, errorMappingOverrides, null, cancellationToken); }