public async Task <Result> CreateDNSRecordsAsync(GoDaddyCreateDNSRecordsRequest request, CancellationToken cancellation) { string path = string.Format(_createDNSRecordFormat, request.DomainName); IFlurlRequest httpRequest = BuildRequest(request.ApiKey, request.ApiSecret, path); IFlurlResponse response = await httpRequest.PatchJsonAsync(request.Records, cancellation); HttpResponseMessage message = response.ResponseMessage; if (message.StatusCode == HttpStatusCode.OK) { return(Result.Ok().WithSuccess(string.Format(_createDNSRecordSuccessMessageTemplate, request.Records.Count(), request.DomainName))); } return(Result.Fail(string.Format(_createDNSRecordFailureMessageTemplate, request.DomainName))); }
/// <summary> /// PATCH request to the API /// </summary> /// <typeparam name="T">Type of return data</typeparam> /// <param name="id">Unique identifier of entity that will be partially updated</param> /// <param name="patchDocument">JSON patch document for updating entity</param> /// <param name="pathToAppend">Additional path to append on base url (e.g. "lock" custom operation as "/users/1/lock")</param> public async Task <APIServiceResult <T> > PartiallyUpdate <T>(int id, object patchDocument, string pathToAppend = "") { try { request.Url.AppendPathSegment(id); if (!string.IsNullOrWhiteSpace(pathToAppend)) { request.Url.AppendPathSegment(pathToAppend); } var response = await request.PatchJsonAsync(patchDocument); RevertToBaseRequest(); if (response.StatusCode != HttpStatusCode.OK) { if (response.StatusCode == HttpStatusCode.Forbidden) { dlgError.ShowDialog(Resources.AccessDenied); } if (response.StatusCode == HttpStatusCode.BadRequest) { var msg = string.Empty; if (response.Content != null) { msg = await response.Content.ReadAsStringAsync(); } dlgError.ShowDialog(msg); } return(APIServiceResult <T> .WithStatusCode(response.StatusCode)); } var result = await response.Content.ReadAsAsync <T>(); return(APIServiceResult <T> .OK(result)); } catch (Exception ex) { logger.Error(ex); dlgError.ShowDialog(Resources.TemporarilyUnvailable); return(APIServiceResult <T> .Exception()); } }
/// <summary> /// PATCH request to the API /// </summary> /// <typeparam name="T">Type of return data</typeparam> /// <param name="id">Unique identifier of entity that will be partially updated</param> /// <param name="patchDocument">JSON patch document for updating entity</param> /// <param name="pathToAppend">Additional path to append on base url (e.g. "lock" custom operation as "/users/1/lock")</param> public async Task <APIServiceResult <T> > PartiallyUpdate <T>(int id, object patchDocument, string pathToAppend = "") { try { request.Url.AppendPathSegment(id); if (!string.IsNullOrWhiteSpace(pathToAppend)) { request.Url.AppendPathSegment(pathToAppend); } var response = await request.PatchJsonAsync(patchDocument); RevertToBaseRequest(); if (response.StatusCode != HttpStatusCode.OK) { if ((int)response.StatusCode == 422 || response.StatusCode == HttpStatusCode.BadRequest) { if (response.Content != null) { var errorMessage = await response.Content.ReadAsStringAsync(); return(APIServiceResult <T> .BadRequest(errorMessage)); } } return(APIServiceResult <T> .WithStatusCode(response.StatusCode)); } var result = await response.Content.ReadAsAsync <T>(); return(APIServiceResult <T> .OK(result)); } catch (Exception ex) { return(APIServiceResult <T> .Exception()); } }