Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        /// <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());
            }
        }