diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 6987496..33a5606 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -36,11 +36,6 @@ jobs: # a pull request then we can checkout the head. fetch-depth: 2 - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v1 diff --git a/src/GodaddyWrapper/Client.AbuseTicket.cs b/src/GodaddyWrapper/Client.AbuseTicket.cs index f8a3010..320238d 100644 --- a/src/GodaddyWrapper/Client.AbuseTicket.cs +++ b/src/GodaddyWrapper/Client.AbuseTicket.cs @@ -8,7 +8,8 @@ using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; using GodaddyWrapper.Helper; - +using Newtonsoft.Json; + namespace GodaddyWrapper { public partial class Client @@ -21,7 +22,7 @@ public partial class Client public async Task CreateAbuseTicket(AbuseTicketCreate request) { var client = GetBaseHttpClient(); - var response = await client.PostAsync($"abuse/tickets", request); + var response = await client.PostAsync($"abuse/tickets", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } diff --git a/src/GodaddyWrapper/Client.Aftermarket.cs b/src/GodaddyWrapper/Client.Aftermarket.cs index 0e3c67e..38b0bd9 100644 --- a/src/GodaddyWrapper/Client.Aftermarket.cs +++ b/src/GodaddyWrapper/Client.Aftermarket.cs @@ -8,7 +8,8 @@ using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; using GodaddyWrapper.Helper; - +using Newtonsoft.Json; + namespace GodaddyWrapper { public partial class Client @@ -22,7 +23,7 @@ public partial class Client public async Task AddExpiryAuction(List request) { var client = GetBaseHttpClient(); - var response = await client.PostAsync($"aftermarket/listings/expiry", request); + var response = await client.PostAsync($"aftermarket/listings/expiry", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } diff --git a/src/GodaddyWrapper/Client.Certificate.cs b/src/GodaddyWrapper/Client.Certificate.cs index acc34a1..bc57cf1 100644 --- a/src/GodaddyWrapper/Client.Certificate.cs +++ b/src/GodaddyWrapper/Client.Certificate.cs @@ -7,12 +7,13 @@ using System.Net.Http.Headers; using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; -using GodaddyWrapper.Helper; - +using GodaddyWrapper.Helper; +using Newtonsoft.Json; + namespace GodaddyWrapper -{ - public partial class Client - { +{ + public partial class Client + { /// /// Cancel a pending certificate /// @@ -22,7 +23,7 @@ public async Task CancelCertificate(CertificateCancel request) { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"certificates/{request.CertificateId}/cancel", request); + var response = await client.PostAsync($"certificates/{request.CertificateId}/cancel", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return; } @@ -51,7 +52,7 @@ public async Task CreateCertificate(CertificatesC var client = GetBaseHttpClient(); if (XMarketId != null) client.DefaultRequestHeaders.Add("X-Market-Id", XMarketId); - var response = await client.PostAsync($"certificates", request); + var response = await client.PostAsync($"certificates", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -78,7 +79,7 @@ public async Task ReissueActiveCertificate(CertificateReissue request, string ce { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"certificates/{certificateId}/reissue", request); + var response = await client.PostAsync($"certificates/{certificateId}/reissue", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return; } @@ -92,7 +93,7 @@ public async Task RenewActiveCertificate(CertificateRenew request, string certif { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"certificates/{certificateId}/renew", request); + var response = await client.PostAsync($"certificates/{certificateId}/renew", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return; } @@ -160,7 +161,7 @@ public async Task RevokeActiveCertificate(CertificateRevoke request, string cert { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"certificates/{certificateId}/revoke", request); + var response = await client.PostAsync($"certificates/{certificateId}/revoke", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return; } diff --git a/src/GodaddyWrapper/Client.Domain.cs b/src/GodaddyWrapper/Client.Domain.cs index 9bc1a1f..cbe5bfc 100644 --- a/src/GodaddyWrapper/Client.Domain.cs +++ b/src/GodaddyWrapper/Client.Domain.cs @@ -8,7 +8,8 @@ using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; using GodaddyWrapper.Helper; - +using Newtonsoft.Json; + namespace GodaddyWrapper { public partial class Client @@ -26,7 +27,7 @@ public async Task AddDNSRecordsToDomain(List request,string dom var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PatchAsync($"domains/{domain}/records", request); + var response = await client.PatchAsync($"domains/{domain}/records", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return response.IsSuccessStatusCode; } @@ -39,7 +40,7 @@ public async Task BulkCheckDomainAvailable(Re { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"domains/available?checkType={request.CheckType}", request.Domains); + var response = await client.PostAsync($"domains/available?checkType={request.CheckType}", JsonConvert.SerializeObject(request.Domains, JsonSettings)); await CheckResponseMessageIsValid(response); ; if (response.StatusCode.ToString() == "203") return new DomainAvailableBulkResultResponse @@ -111,7 +112,7 @@ public async Task PurchaseDomain(DomainPurchase request, var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PostAsync("domains/purchase", request); + var response = await client.PostAsync("domains/purchase", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -127,7 +128,7 @@ public async Task PurchaseDomainWithoutPrivacy(DomainPur var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PostAsync("domains/purchase", request); + var response = await client.PostAsync("domains/purchase", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -144,7 +145,7 @@ public async Task PurchasePrivacy(PrivacyPurchase reques var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PostAsync($"domains/{domain}/privacy/purchase", request); + var response = await client.PostAsync($"domains/{domain}/privacy/purchase", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -170,7 +171,7 @@ public async Task PurchaseDomainValidate(DomainPurchase request) { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync("domains/purchase/validate", request); + var response = await client.PostAsync("domains/purchase/validate", JsonConvert.SerializeObject(request, JsonSettings)); return response.IsSuccessStatusCode; } /// @@ -182,7 +183,7 @@ public async Task PurchaseDomainValidateWithoutPrivacy(DomainPurchaseWitho { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync("domains/purchase/validate", request); + var response = await client.PostAsync("domains/purchase/validate", JsonConvert.SerializeObject(request, JsonSettings)); return response.IsSuccessStatusCode; } /// @@ -198,7 +199,7 @@ public async Task RenewDomain(DomainRenew request,string var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PostAsync($"domains/{domain}/renew", request); + var response = await client.PostAsync($"domains/{domain}/renew", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -215,7 +216,7 @@ public async Task ReplaceDNSRecord(List request,string domain, var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PutAsync($"domains/{domain}/records", request); + var response = await client.PutAsync($"domains/{domain}/records", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return response.IsSuccessStatusCode; } @@ -233,7 +234,7 @@ public async Task ReplaceDNSRecordsWithType(List requ var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PutAsync($"domains/{domain}/records/{Type}", request); + var response = await client.PutAsync($"domains/{domain}/records/{Type}", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return response.IsSuccessStatusCode; } @@ -252,7 +253,7 @@ public async Task ReplaceDNSRecordsWithTypeAndName(List TransferDomain(DomainTransferIn request,stri var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PostAsync($"domains/{domain}/transfer", request); + var response = await client.PostAsync($"domains/{domain}/transfer", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -381,7 +382,7 @@ public async Task UpdateDomain(DomainUpdate request,string domain, string var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PatchAsync($"domains/{domain}", request); + var response = await client.PatchAsync($"domains/{domain}", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return response.IsSuccessStatusCode; } @@ -398,7 +399,7 @@ public async Task UpdateDomainContacts(DomainContacts request,string domai var client = GetBaseHttpClient(); if (XShopperId != null) client.DefaultRequestHeaders.Add("X-Shopper-Id", XShopperId); - var response = await client.PatchAsync($"domains/{domain}/contacts", request); + var response = await client.PatchAsync($"domains/{domain}/contacts", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return response.IsSuccessStatusCode; } diff --git a/src/GodaddyWrapper/Client.Shopper.cs b/src/GodaddyWrapper/Client.Shopper.cs index 10dc848..f5f1fd5 100644 --- a/src/GodaddyWrapper/Client.Shopper.cs +++ b/src/GodaddyWrapper/Client.Shopper.cs @@ -8,7 +8,8 @@ using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; using GodaddyWrapper.Helper; - +using Newtonsoft.Json; + namespace GodaddyWrapper { public partial class Client @@ -22,7 +23,7 @@ public async Task CreateSubaccount(SubaccountCreate request) { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"shoppers/subaccount",request); + var response = await client.PostAsync($"shoppers/subaccount", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } @@ -49,7 +50,7 @@ public async Task UpdateShopper(ShopperUpdate request, string { CheckRequestValid(request); var client = GetBaseHttpClient(); - var response = await client.PostAsync($"shoppers/{shopperId}", request); + var response = await client.PostAsync($"shoppers/{shopperId}", JsonConvert.SerializeObject(request, JsonSettings)); await CheckResponseMessageIsValid(response); return await response.Content.ReadAsAsync(); } diff --git a/src/GodaddyWrapper/Client.cs b/src/GodaddyWrapper/Client.cs index f2c0a78..16b4458 100644 --- a/src/GodaddyWrapper/Client.cs +++ b/src/GodaddyWrapper/Client.cs @@ -8,15 +8,30 @@ using System.Threading.Tasks; using System.ComponentModel.DataAnnotations; using GodaddyWrapper.Helper; -using GodaddyWrapper.Base; - +using GodaddyWrapper.Base; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + namespace GodaddyWrapper +{ +public partial class Client { - public partial class Client - { private string AccessKey { get; } private string SecretKey { get; } private string RootPath { get; } = "https://api.ote-godaddy.com/v1/"; + + readonly JsonSerializerSettings JsonSettings = new JsonSerializerSettings + { + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + }, + NullValueHandling = NullValueHandling.Ignore + }; + /// /// Client for calling API /// diff --git a/src/GodaddyWrapper/GodaddyWrapper.csproj b/src/GodaddyWrapper/GodaddyWrapper.csproj index 9708864..4ce6b4d 100644 --- a/src/GodaddyWrapper/GodaddyWrapper.csproj +++ b/src/GodaddyWrapper/GodaddyWrapper.csproj @@ -2,17 +2,17 @@ GodaddyWrapper.NET is a .NET Wrapper for calling GoDaddy REST API. - Copyright 2015 - 2017 Vip30, 2018 - 2020 ahwm23 + Copyright 2015 - 2017 Vip30, 2018 - 2021 ahwm23 GodaddyWrapper.Net vip30, ahwm23 - 1.2.2 + 1.2.3 MIT netstandard1.3;net462;netcoreapp2.1;netcoreapp3.1;net5.0 false GodaddyWrapper GodaddyWrapper Godaddy;Wrapper;API;DotNet Core;Rest - Cleaned up duplicate class + Adjusted JSON serialization strategy https://github.com/ahwm/GodaddyWrapper.Net https://github.com/ahwm/GodaddyWrapper.Net true diff --git a/src/GodaddyWrapper/Helper/QueryStringBuilder.cs b/src/GodaddyWrapper/Helper/QueryStringBuilder.cs index b84b83d..2b624c0 100644 --- a/src/GodaddyWrapper/Helper/QueryStringBuilder.cs +++ b/src/GodaddyWrapper/Helper/QueryStringBuilder.cs @@ -1,5 +1,6 @@ using GodaddyWrapper.Attributes; using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; using System; using System.Collections.Generic; using System.Collections.Specialized; @@ -11,6 +12,17 @@ internal class QueryStringBuilder { public static string RequestObjectToQueryString(object RequestObject) { + var settings = new JsonSerializerSettings + { + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + }, + NullValueHandling = NullValueHandling.Ignore + }; var url = "?"; foreach (var property in RequestObject.GetType().GetRuntimeProperties()) { @@ -26,7 +38,7 @@ public static string RequestObjectToQueryString(object RequestObject) else if (IsList(property.PropertyType.GetTypeInfo())) url += $"{ToFirstLetterLower(property.Name)}={ConvertFromList(property.GetValue(RequestObject))}&"; else - url += $"{ToFirstLetterLower(property.Name)}={JsonConvert.SerializeObject(property.GetValue(RequestObject), new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })}&"; + url += $"{ToFirstLetterLower(property.Name)}={JsonConvert.SerializeObject(property.GetValue(RequestObject), settings)}&"; } } return url.Trim('&'); diff --git a/src/GodaddyWrapper/Requests/CertificatesCreate.cs b/src/GodaddyWrapper/Requests/CertificatesCreate.cs index 1d2c306..6568786 100644 --- a/src/GodaddyWrapper/Requests/CertificatesCreate.cs +++ b/src/GodaddyWrapper/Requests/CertificatesCreate.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -16,6 +17,8 @@ public class CertificatesCreate public string SlotSize { get; set; } public string CallbackUrl { get; set; } public string RootType { get; set; } + + [JsonProperty(PropertyName = "intelVPro")] public bool IntelVPro { get; set; } public CertificateOrganizationCreate Organization { get; set; } }