public async Task <ActionResult <Models.ApimSubscription> > UpdateSubsription([FromBody] Models.ApimSubscriptionCreateOrUpdateContract model, string id, bool?notify) { var requestUri = ApiUriFormatter.GetRequestUri(this.settings.Value, $"subscriptions/{id}", (notify != null) ? $"¬ify={notify}" : string.Empty); var request = new HttpRequestMessage(HttpMethod.Head, requestUri); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); response.Headers.TryGetValues("etag", out IEnumerable <string> etags); // optionally handle if match to make sure not to override a subscription after it has been changed request = new HttpRequestMessage(HttpMethod.Patch, requestUri) { Content = new StringContent(JsonConvert.SerializeObject(model.ToSubscriptionCreateOrUpdateContract(this.settings.Value), new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }), Encoding.Unicode, "application/json") }; request.Headers.TryAddWithoutValidation("If-Match", etags.First().Replace("\"", string.Empty)); response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); return(NoContent()); }
public async Task <ActionResult <Models.ApimSubscription> > CreateOrUpdateSubscription([FromBody] Models.ApimSubscriptionCreateOrUpdateContract model, string id, bool?notify) { var requestUri = ApiUriFormatter.GetRequestUri(this.settings.Value, $"subscriptions/{id}", (notify != null) ? $"¬ify={notify}" : string.Empty); var createOrUpdateSubscriptionContract = model.ToSubscriptionCreateOrUpdateContract(this.settings.Value); var request = new HttpRequestMessage(HttpMethod.Put, requestUri) { Content = new StringContent(JsonConvert.SerializeObject(createOrUpdateSubscriptionContract, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }), Encoding.Unicode, "application/json") }; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); var responseData = await response.Content.ReadAsAsync <Models.SubscriptionContract>(); var value = responseData.ToApimSubscription(); return(Ok(value)); }