From 54e7ac826661e481ed14b64b387d188620006a4e Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Mon, 29 Jan 2024 23:11:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxads):=20=E5=8D=87=E7=BA=A7=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WechatAdsRequestAgencyTokenException.cs | 24 ----- .../WechatAdsRequestTimeoutException.cs | 24 ----- ...atAdsClientExecuteAdCreativesExtensions.cs | 16 ++-- ...echatAdsClientExecuteAdGroupsExtensions.cs | 16 ++-- .../WechatAdsClientExecuteAdsExtensions.cs | 16 ++-- ...hatAdsClientExecuteAdvertiserExtensions.cs | 6 +- ...hatAdsClientExecuteAsyncTasksExtensions.cs | 12 +-- ...chatAdsClientExecuteCampaignsExtensions.cs | 14 +-- ...atAdsClientExecuteCreditBillsExtensions.cs | 6 +- ...sClientExecuteCustomAudiencesExtensions.cs | 24 ++--- ...hatAdsClientExecuteEstimationExtensions.cs | 2 +- .../WechatAdsClientExecuteFundsExtensions.cs | 14 +-- .../WechatAdsClientExecuteImagesExtensions.cs | 18 ++-- ...dsClientExecuteQualificationsExtensions.cs | 6 +- ...WechatAdsClientExecuteReportsExtensions.cs | 16 ++-- ...AdsClientExecuteSpEntrustmentExtensions.cs | 4 +- ...AdsClientExecuteTargetingTagsExtensions.cs | 2 +- .../WechatAdsRequestAgencyTokenInterceptor.cs | 14 +-- .../Models/AdGroups/AdGroupsAddRequest.cs | 6 +- .../Models/AdGroups/AdGroupsGetResponse.cs | 4 +- .../Models/Campaigns/CampaignsGetResponse.cs | 2 +- .../{Abstractions => }/CommonDateRange.cs | 0 .../Models/{Abstractions => }/CommonFilter.cs | 4 +- .../{Abstractions => }/CommonPagination.cs | 0 .../CustomAudiencesGetResponse.cs | 8 +- .../Files/CustomAudienceFilesGetResponse.cs | 4 +- .../SKIT.FlurlHttpClient.Wechat.Ads.csproj | 6 +- .../Settings/Credentials.cs | 4 +- .../Utilities/MD5Utility.cs | 4 +- .../FileNameToContentTypeMapper.cs | 0 .../WechatAdsClient.cs | 91 +++++++------------ .../WechatAdsClientOptions.cs | 8 +- .../WechatAdsException.cs | 4 +- .../WechatAdsRequest.cs | 13 +-- .../WechatAdsResponse.cs | 61 ++----------- .../IMPORTANT_CodeAnalyzeTests.cs | 51 +++++++++++ ...lurlHttpClient.Wechat.Ads.UnitTests.csproj | 16 ++-- .../TestCase_CodeReview.cs | 28 ------ .../TestConfigs.cs | 10 +- .../appsettings.json | 8 +- 40 files changed, 230 insertions(+), 336 deletions(-) delete mode 100644 src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestAgencyTokenException.cs delete mode 100644 src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestTimeoutException.cs rename src/SKIT.FlurlHttpClient.Wechat.Ads/Models/{Abstractions => }/CommonDateRange.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Ads/Models/{Abstractions => }/CommonFilter.cs (92%) rename src/SKIT.FlurlHttpClient.Wechat.Ads/Models/{Abstractions => }/CommonPagination.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/{Internal => __Internal}/FileNameToContentTypeMapper.cs (100%) create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/IMPORTANT_CodeAnalyzeTests.cs delete mode 100644 test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestCase_CodeReview.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestAgencyTokenException.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestAgencyTokenException.cs deleted file mode 100644 index ea3c5c7f..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestAgencyTokenException.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; - -namespace SKIT.FlurlHttpClient.Wechat.Ads.Exceptions -{ - public class WechatAdsRequestAgencyTokenException : WechatAdsException - { - /// - internal WechatAdsRequestAgencyTokenException() - { - } - - /// - internal WechatAdsRequestAgencyTokenException(string message) - : base(message) - { - } - - /// - internal WechatAdsRequestAgencyTokenException(string message, Exception innerException) - : base(message, innerException) - { - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestTimeoutException.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestTimeoutException.cs deleted file mode 100644 index 0ea5b2ef..00000000 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Exceptions/WechatAdsRequestTimeoutException.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; - -namespace SKIT.FlurlHttpClient.Wechat.Ads.Exceptions -{ - public class WechatAdsRequestTimeoutException : WechatAdsException - { - /// - internal WechatAdsRequestTimeoutException() - { - } - - /// - internal WechatAdsRequestTimeoutException(string message) - : base(message) - { - } - - /// - internal WechatAdsRequestTimeoutException(string message, Exception innerException) - : base(message, innerException) - { - } - } -} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdCreativesExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdCreativesExtensions.cs index 64115940..7c9ecdf6 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdCreativesExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdCreativesExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "adcreatives", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "adcreatives", "update") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,19 +63,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "adcreatives", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.AdCreativeId != null) + if (request.AdCreativeId is not null) flurlReq.SetQueryParam("adcreative_id", request.AdCreativeId.Value); - if (request.Filters != null) + if (request.Filters is not null) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdGroupsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdGroupsExtensions.cs index 0e9dad1e..bf1da4c0 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdGroupsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdGroupsExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "adgroups", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "adgroups", "update") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,19 +63,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "adgroups", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.AdGroupId != null) + if (request.AdGroupId is not null) flurlReq.SetQueryParam("adgroup_id", request.AdGroupId.Value); - if (request.Filters != null) + if (request.Filters is not null) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -94,7 +94,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "adgroups", "delete") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdsExtensions.cs index 75c2c9d7..9c6e27ba 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdsExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "ads", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "ads", "update") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,19 +63,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "ads", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.AdId != null) + if (request.AdId is not null) flurlReq.SetQueryParam("ad_id", request.AdId.Value); - if (request.Filters != null) + if (request.Filters is not null) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -94,7 +94,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "ads", "delete") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdvertiserExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdvertiserExtensions.cs index 3f7a7cd3..22a0824d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdvertiserExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAdvertiserExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "advertiser", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "advertiser", "update") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,7 +63,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "advertiser", "get") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAsyncTasksExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAsyncTasksExtensions.cs index 1ba2927c..6152af39 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAsyncTasksExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteAsyncTasksExtensions.cs @@ -26,7 +26,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "async_tasks", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -45,16 +45,16 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "async_tasks", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.Filters != null && request.Filters.Any()) + if (request.Filters is not null && request.Filters.Any()) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #region Files @@ -76,7 +76,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .SetQueryParam("task_id", request.TaskId) .SetQueryParam("file_id", request.FileId); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCampaignsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCampaignsExtensions.cs index ca64d4b0..94bc5135 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCampaignsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCampaignsExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "campaigns", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "campaigns", "update") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,19 +63,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "campaigns", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.CampaignId != null) + if (request.CampaignId is not null) flurlReq.SetQueryParam("campaign_id", request.CampaignId.Value); - if (request.Filters != null) + if (request.Filters is not null) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCreditBillsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCreditBillsExtensions.cs index 0a26e43a..52fc8bed 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCreditBillsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCreditBillsExtensions.cs @@ -27,13 +27,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .SetQueryParam("bill_year", request.BillYear) .SetQueryParam("bill_month", request.BillMonth); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCustomAudiencesExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCustomAudiencesExtensions.cs index 6986cb39..d465f7f0 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCustomAudiencesExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteCustomAudiencesExtensions.cs @@ -26,7 +26,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "custom_audiences", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -45,7 +45,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "custom_audiences", "update") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -64,16 +64,16 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "custom_audiences", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.CustomAudienceId != null) + if (request.CustomAudienceId is not null) flurlReq.SetQueryParam("audience_id", request.CustomAudienceId.Value); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #region Files @@ -104,7 +104,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "custom_audience_files", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); } /// @@ -123,19 +123,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "custom_audience_files", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.CustomAudienceId != null) + if (request.CustomAudienceId is not null) flurlReq.SetQueryParam("audience_id", request.CustomAudienceId.Value); - if (request.CustomAudienceFileId != null) + if (request.CustomAudienceFileId is not null) flurlReq.SetQueryParam("custom_audience_file_id", request.CustomAudienceFileId.Value); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteEstimationExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteEstimationExtensions.cs index a73ec317..f38407bd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteEstimationExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteEstimationExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "estimation", "get") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteFundsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteFundsExtensions.cs index 4f900bb9..bbb436b5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteFundsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteFundsExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "fund_transfer", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "funds", "get") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,19 +63,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "fund_statements_detailed", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.DateRange != null) + if (request.DateRange is not null) flurlReq.SetQueryParam("date_range", client.JsonSerializer.Serialize(request.DateRange)); - if (request.TradeType != null) + if (request.TradeType is not null) flurlReq.SetQueryParam("trade_type", request.TradeType); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteImagesExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteImagesExtensions.cs index c2d23645..593729c9 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteImagesExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteImagesExtensions.cs @@ -23,17 +23,17 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads if (client is null) throw new ArgumentNullException(nameof(client)); if (request is null) throw new ArgumentNullException(nameof(request)); - if (request.FileName == null) + if (request.FileName is null) { request.FileName = Guid.NewGuid().ToString("N").ToLower(); } - if (request.FileContentType == null) + if (request.FileContentType is null) { request.FileContentType = Utilities.FileNameToContentTypeMapper.GetContentTypeForImage(request.FileName!) ?? "image/png"; } - if (request.FileHash == null) + if (request.FileHash is null) { request.FileHash = BitConverter.ToString(Utilities.MD5Utility.Hash(request.FileBytes ?? Array.Empty())).Replace("-", string.Empty); } @@ -49,7 +49,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "images", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); } /// @@ -68,19 +68,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "images", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.ImageId != null) + if (request.ImageId is not null) flurlReq.SetQueryParam("image_id", request.ImageId); - if (request.Filters != null) + if (request.Filters is not null) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteQualificationsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteQualificationsExtensions.cs index 2bbe1ac9..b7cd7a08 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteQualificationsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteQualificationsExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "qualifications", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "qualifications", "get") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -63,7 +63,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "qualifications", "delete") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteReportsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteReportsExtensions.cs index ea72ada7..fb076743 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteReportsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteReportsExtensions.cs @@ -26,22 +26,22 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "daily_reports", "get") .SetQueryParam("access_token", request.AccessToken); - if (request.DateRange != null) + if (request.DateRange is not null) flurlReq.SetQueryParam("date_range", client.JsonSerializer.Serialize(request.DateRange)); - if (request.ReportType != null) + if (request.ReportType is not null) flurlReq.SetQueryParam("report_type", request.ReportType); - if (request.ReportLevel != null) + if (request.ReportLevel is not null) flurlReq.SetQueryParam("level", request.ReportLevel); - if (request.PageSize != null) + if (request.PageSize is not null) flurlReq.SetQueryParam("page_size", request.PageSize.Value); - if (request.Page != null) + if (request.Page is not null) flurlReq.SetQueryParam("page", request.Page.Value); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -62,10 +62,10 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .SetQueryParam("date", request.DateString) .SetQueryParam("level", request.Level); - if (request.Filters != null && request.Filters.Any()) + if (request.Filters is not null && request.Filters.Any()) flurlReq.SetQueryParam("filtering", client.JsonSerializer.Serialize(request.Filters)); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteSpEntrustmentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteSpEntrustmentExtensions.cs index 06525776..294de21c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteSpEntrustmentExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteSpEntrustmentExtensions.cs @@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Post, "sp_entrustment", "add") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// @@ -44,7 +44,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .CreateRequest(request, HttpMethod.Get, "sp_entrustment", "get") .SetQueryParam("access_token", request.AccessToken); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteTargetingTagsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteTargetingTagsExtensions.cs index b5434a2f..10c76f13 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteTargetingTagsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Extensions/WechatAdsClientExecuteTargetingTagsExtensions.cs @@ -26,7 +26,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("type", request.TagType); - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Interceptors/WechatAdsRequestAgencyTokenInterceptor.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Interceptors/WechatAdsRequestAgencyTokenInterceptor.cs index a9a6053a..cd0d53b4 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Interceptors/WechatAdsRequestAgencyTokenInterceptor.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Interceptors/WechatAdsRequestAgencyTokenInterceptor.cs @@ -1,12 +1,13 @@ -using System; +using System; using System.Text; +using System.Threading; using System.Threading.Tasks; using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.Wechat.Ads.Interceptors { - internal class WechatAdsRequestAgencyTokenInterceptor : FlurlHttpCallInterceptor + internal class WechatAdsRequestAgencyTokenInterceptor : HttpInterceptor { private readonly string _agencyId; private readonly string _agencyApiKey; @@ -17,18 +18,17 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Interceptors _agencyApiKey = agencyApiKey; } - public override async Task BeforeCallAsync(FlurlCall flurlCall) + public override async Task BeforeCallAsync(HttpInterceptorContext context, CancellationToken cancellationToken = default) { - if (flurlCall == null) throw new ArgumentNullException(nameof(flurlCall)); - if (flurlCall.Completed) throw new Exceptions.WechatAdsRequestAgencyTokenException("This interceptor must be called before request completed."); + if (context is null) throw new ArgumentNullException(nameof(context)); + if (context.FlurlCall.Completed) throw new WechatAdsException("Failed to sign request. This interceptor must be called before request completed."); string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString(); string nonce = Guid.NewGuid().ToString("N"); string sign = Utilities.MD5Utility.Hash($"{_agencyId}{timestamp}{nonce}{_agencyApiKey}").ToLower(); string token = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{_agencyId},{timestamp},{nonce},{sign}")); - flurlCall.Request.RemoveQueryParam("agency_token"); - flurlCall.Request.SetQueryParam("agency_token", token); + context.FlurlCall.Request.SetQueryParam("agency_token", token); await Task.Yield(); } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsAddRequest.cs index bf606bfe..b6e2cc6d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsAddRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsAddRequest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace SKIT.FlurlHttpClient.Wechat.Ads.Models { @@ -24,14 +24,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Models /// [Newtonsoft.Json.JsonProperty("longitude")] [System.Text.Json.Serialization.JsonPropertyName("longitude")] - public double Longitude { get; set; } + public decimal Longitude { get; set; } /// /// 获取或设置纬度。 /// [Newtonsoft.Json.JsonProperty("latitude")] [System.Text.Json.Serialization.JsonPropertyName("latitude")] - public double Latitude { get; set; } + public decimal Latitude { get; set; } /// /// 获取或设置半径(单位:米)。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsGetResponse.cs index 21eac7ef..346914b8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/AdGroups/AdGroupsGetResponse.cs @@ -30,14 +30,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Models /// [Newtonsoft.Json.JsonProperty("longitude")] [System.Text.Json.Serialization.JsonPropertyName("longitude")] - public double Longitude { get; set; } + public decimal Longitude { get; set; } /// /// 获取或设置纬度。 /// [Newtonsoft.Json.JsonProperty("latitude")] [System.Text.Json.Serialization.JsonPropertyName("latitude")] - public double Latitude { get; set; } + public decimal Latitude { get; set; } /// /// 获取或设置半径(单位:米)。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Campaigns/CampaignsGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Campaigns/CampaignsGetResponse.cs index 7168d247..6d13a908 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Campaigns/CampaignsGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Campaigns/CampaignsGetResponse.cs @@ -60,7 +60,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Models /// [Newtonsoft.Json.JsonProperty("budget_reach_date")] [System.Text.Json.Serialization.JsonPropertyName("budget_reach_date")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringConverter))] public string? BudgetReachDateString { get; set; } /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonDateRange.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonDateRange.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonDateRange.cs rename to src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonDateRange.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonFilter.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonFilter.cs similarity index 92% rename from src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonFilter.cs rename to src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonFilter.cs index e0b413f6..3e7793bb 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonFilter.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonFilter.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; + namespace SKIT.FlurlHttpClient.Wechat.Ads.Models.Abstractions { public abstract class CommonFilter @@ -29,6 +31,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Models.Abstractions /// [Newtonsoft.Json.JsonProperty("values")] [System.Text.Json.Serialization.JsonPropertyName("values")] - public string[] Values { get; set; } = new string[0]; + public IList Values { get; set; } = new List(); } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonPagination.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonPagination.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Ads/Models/Abstractions/CommonPagination.cs rename to src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CommonPagination.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/CustomAudiencesGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/CustomAudiencesGetResponse.cs index 5c9518b2..cda9bb70 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/CustomAudiencesGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/CustomAudiencesGetResponse.cs @@ -68,18 +68,18 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Models /// 获取或设置最近修改时间戳。 /// [Newtonsoft.Json.JsonProperty("last_modified_time")] - [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))] [System.Text.Json.Serialization.JsonPropertyName("last_modified_time")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))] public DateTimeOffset UpdateTime { get; set; } /// /// 获取或设置创建时间戳。 /// [Newtonsoft.Json.JsonProperty("created_time")] - [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))] [System.Text.Json.Serialization.JsonPropertyName("created_time")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))] public DateTimeOffset CreateTime { get; set; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/Files/CustomAudienceFilesGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/Files/CustomAudienceFilesGetResponse.cs index b1ee8592..76e785c5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/Files/CustomAudienceFilesGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Models/CustomAudiences/Files/CustomAudienceFilesGetResponse.cs @@ -96,9 +96,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Models /// 获取或设置创建时间戳。 /// [Newtonsoft.Json.JsonProperty("created_time")] - [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))] [System.Text.Json.Serialization.JsonPropertyName("created_time")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))] public DateTimeOffset CreateTime { get; set; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/SKIT.FlurlHttpClient.Wechat.Ads.csproj b/src/SKIT.FlurlHttpClient.Wechat.Ads/SKIT.FlurlHttpClient.Wechat.Ads.csproj index 3e9abe87..5ccc6694 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/SKIT.FlurlHttpClient.Wechat.Ads.csproj +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/SKIT.FlurlHttpClient.Wechat.Ads.csproj @@ -2,7 +2,7 @@ net461; netstandard2.0; net6.0 - 8.0 + 10.0 enable true @@ -14,7 +14,7 @@ MIT https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat Flurl.Http Wechat Weixin MicroMessage WechatAds WechatAdvertisting 微信 广告平台 微信广告平台 腾讯广告平台 广点通 微信广点通 腾讯广点通 - 2.0.0 + 3.0.0-preview.1 基于 Flurl.Http 的微信广告平台(广点通)API 客户端。 Fu Diwei git @@ -40,7 +40,7 @@ - + diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Settings/Credentials.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Settings/Credentials.cs index fa07e774..719c2205 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Settings/Credentials.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Settings/Credentials.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SKIT.FlurlHttpClient.Wechat.Ads.Settings { @@ -21,7 +21,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Settings internal Credentials(WechatAdsClientOptions options) { - if (options == null) throw new ArgumentNullException(nameof(options)); + if (options is null) throw new ArgumentNullException(nameof(options)); AgencyId = options.AgencyId; AgencyAppId = options.AgencyAppId; diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/MD5Utility.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/MD5Utility.cs index 3832a2e1..d8f81480 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/MD5Utility.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/MD5Utility.cs @@ -16,7 +16,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Utilities /// 信息摘要字节数组。 public static byte[] Hash(byte[] bytes) { - if (bytes == null) throw new ArgumentNullException(nameof(bytes)); + if (bytes is null) throw new ArgumentNullException(nameof(bytes)); using MD5 md5 = MD5.Create(); return md5.ComputeHash(bytes); @@ -29,7 +29,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.Utilities /// 信息摘要。 public static string Hash(string message) { - if (message == null) throw new ArgumentNullException(nameof(message)); + if (message is null) throw new ArgumentNullException(nameof(message)); byte[] msgBytes = Encoding.UTF8.GetBytes(message); byte[] hashBytes = Hash(msgBytes); diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/Internal/FileNameToContentTypeMapper.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/__Internal/FileNameToContentTypeMapper.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/Internal/FileNameToContentTypeMapper.cs rename to src/SKIT.FlurlHttpClient.Wechat.Ads/Utilities/__Internal/FileNameToContentTypeMapper.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClient.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClient.cs index 405a3d4b..52a815ad 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClient.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClient.cs @@ -21,14 +21,25 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads /// /// 配置项。 public WechatAdsClient(WechatAdsClientOptions options) - : base() + : this(options, null) { - if (options == null) throw new ArgumentNullException(nameof(options)); + } + + /// + /// + /// + /// + /// + /// + internal protected WechatAdsClient(WechatAdsClientOptions options, HttpClient? httpClient, bool disposeClient = true) + : base(httpClient, disposeClient) + { + if (options is null) throw new ArgumentNullException(nameof(options)); Credentials = new Settings.Credentials(options); FlurlClient.BaseUrl = options.Endpoint ?? WechatAdsEndpoints.DEFAULT; - FlurlClient.WithTimeout(TimeSpan.FromMilliseconds(options.Timeout)); + FlurlClient.WithTimeout(options.Timeout <= 0 ? Timeout.InfiniteTimeSpan : TimeSpan.FromMilliseconds(options.Timeout)); Interceptors.Add(new Interceptors.WechatAdsRequestAgencyTokenInterceptor( agencyId: options.AgencyId, @@ -36,34 +47,18 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads )); } - /// - /// 用指定的微信广告平台服务商 ID、微信广告平台服务商 AppId、微信广告平台服务商 ApiKey 初始化 类的新实例。 - /// - /// 微信广告平台服务商 ID。 - /// 微信广告平台服务商 AppId。 - /// 微信广告平台服务商 ApiKey。 - public WechatAdsClient(string agencyId, string agencyAppId, string agencyApiKey) - : this(new WechatAdsClientOptions() { AgencyId = agencyId, AgencyAppId = agencyAppId, AgencyApiKey = agencyApiKey }) - { - } - /// /// 使用当前客户端生成一个新的 对象。 /// /// - /// + /// /// /// - public IFlurlRequest CreateRequest(WechatAdsRequest request, HttpMethod method, params object[] urlSegments) + public IFlurlRequest CreateRequest(WechatAdsRequest request, HttpMethod httpMethod, params object[] urlSegments) { - IFlurlRequest flurlRequest = FlurlClient.Request(urlSegments).WithVerb(method); + IFlurlRequest flurlRequest = base.CreateFlurlRequest(request, httpMethod, urlSegments); - if (request.Timeout != null) - { - flurlRequest.WithTimeout(TimeSpan.FromMilliseconds(request.Timeout.Value)); - } - - if (request.Version != null) + if (request.Version is not null) { flurlRequest.SetQueryParam("version", request.Version); } @@ -79,24 +74,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads /// /// /// - public async Task SendRequestAsync(IFlurlRequest flurlRequest, HttpContent? httpContent = null, CancellationToken cancellationToken = default) + public async Task SendFlurlRequestAsync(IFlurlRequest flurlRequest, HttpContent? httpContent = null, CancellationToken cancellationToken = default) where T : WechatAdsResponse, new() { - if (flurlRequest == null) throw new ArgumentNullException(nameof(flurlRequest)); + if (flurlRequest is null) throw new ArgumentNullException(nameof(flurlRequest)); - try - { - using IFlurlResponse flurlResponse = await base.SendRequestAsync(flurlRequest, httpContent, cancellationToken); - return await WrapResponseWithJsonAsync(flurlResponse, cancellationToken); - } - catch (FlurlHttpTimeoutException ex) - { - throw new Exceptions.WechatAdsRequestTimeoutException(ex.Message, ex); - } - catch (FlurlHttpException ex) - { - throw new WechatAdsException(ex.Message, ex); - } + using IFlurlResponse flurlResponse = await base.SendFlurlRequestAsync(flurlRequest, httpContent, cancellationToken); + return await base.WrapFlurlResponseAsJsonAsync(flurlResponse, cancellationToken); } /// @@ -107,30 +91,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads /// /// /// - public async Task SendRequestWithJsonAsync(IFlurlRequest flurlRequest, object? data = null, CancellationToken cancellationToken = default) + public async Task SendFlurlRequestAsJsonAsync(IFlurlRequest flurlRequest, object? data = null, CancellationToken cancellationToken = default) where T : WechatAdsResponse, new() { - if (flurlRequest == null) throw new ArgumentNullException(nameof(flurlRequest)); + if (flurlRequest is null) throw new ArgumentNullException(nameof(flurlRequest)); - try - { - bool isSimpleRequest = data == null || - flurlRequest.Verb == HttpMethod.Get || - flurlRequest.Verb == HttpMethod.Head || - flurlRequest.Verb == HttpMethod.Options; - using IFlurlResponse flurlResponse = isSimpleRequest ? - await base.SendRequestAsync(flurlRequest, null, cancellationToken) : - await base.SendRequestWithJsonAsync(flurlRequest, data, cancellationToken); - return await WrapResponseWithJsonAsync(flurlResponse, cancellationToken); - } - catch (FlurlHttpTimeoutException ex) - { - throw new Exceptions.WechatAdsRequestTimeoutException(ex.Message, ex); - } - catch (FlurlHttpException ex) - { - throw new WechatAdsException(ex.Message, ex); - } + bool isSimpleRequest = data is null || + flurlRequest.Verb == HttpMethod.Get || + flurlRequest.Verb == HttpMethod.Head || + flurlRequest.Verb == HttpMethod.Options; + using IFlurlResponse flurlResponse = isSimpleRequest ? + await base.SendFlurlRequestAsync(flurlRequest, null, cancellationToken) : + await base.SendFlurlRequestAsJsonAsync(flurlRequest, data, cancellationToken); + return await base.WrapFlurlResponseAsJsonAsync(flurlResponse, cancellationToken); } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClientOptions.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClientOptions.cs index 2a63ba51..354f07f8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClientOptions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsClientOptions.cs @@ -7,13 +7,17 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads { /// /// 获取或设置请求超时时间(单位:毫秒)。 - /// 默认值:30000 + /// + /// 默认值:30000 + /// /// public int Timeout { get; set; } = 30 * 1000; /// /// 获取或设置微信广告平台 API 入口点。 - /// 默认值: + /// + /// 默认值: + /// /// public string Endpoint { get; set; } = WechatAdsEndpoints.DEFAULT; diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsException.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsException.cs index 2f55f336..071bbe2a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsException.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsException.cs @@ -1,11 +1,11 @@ -using System; +using System; namespace SKIT.FlurlHttpClient.Wechat.Ads { /// /// 微信广告平台 API 出错时引发的异常。 /// - public class WechatAdsException : CommonExceptionBase + public class WechatAdsException : CommonException { /// public WechatAdsException() diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsRequest.cs index 4adf7418..e2944b4f 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsRequest.cs @@ -3,15 +3,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads /// /// 微信广告平台 API 请求的基类。 /// - public abstract class WechatAdsRequest : ICommonRequest + public abstract class WechatAdsRequest : CommonRequestBase, ICommonRequest { - /// - /// 获取或设置请求超时时间(单位:毫秒)。如果不指定将使用构造 时的 参数,这在需要指定特定耗时请求(比如上传或下载文件)的超时时间时很有用。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public virtual int? Timeout { get; set; } - /// /// 获取或设置微信广告平台的 AccessToken。 /// @@ -21,7 +14,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads /// /// 获取或设置微信广告平台的版本号。 - /// 默认值:"v1.0" + /// + /// 默认值:"v1.0" + /// /// [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsResponse.cs index 188cb281..ed07edaa 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Ads/WechatAdsResponse.cs @@ -1,60 +1,10 @@ -using System.Collections.Generic; - namespace SKIT.FlurlHttpClient.Wechat.Ads { /// /// 微信广告平台 API 响应的基类。 /// - public abstract class WechatAdsResponse : ICommonResponse + public abstract class WechatAdsResponse : CommonResponseBase, ICommonResponse { - /// - /// - /// - int ICommonResponse.RawStatus { get; set; } - - /// - /// - /// - IDictionary ICommonResponse.RawHeaders { get; set; } = default!; - - /// - /// - /// - byte[] ICommonResponse.RawBytes { get; set; } = default!; - - /// - /// 获取原始的 HTTP 响应状态码。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public int RawStatus - { - get { return ((ICommonResponse)this).RawStatus; } - internal set { ((ICommonResponse)this).RawStatus = value; } - } - - /// - /// 获取原始的 HTTP 响应表头集合。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public IDictionary RawHeaders - { - get { return ((ICommonResponse)this).RawHeaders; } - internal set { ((ICommonResponse)this).RawHeaders = value; } - } - - /// - /// 获取原始的 HTTP 响应正文。 - /// - [Newtonsoft.Json.JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] - public byte[] RawBytes - { - get { return ((ICommonResponse)this).RawBytes; } - internal set { ((ICommonResponse)this).RawBytes = value; } - } - /// /// 获取微信广告平台 API 返回的错误码。 /// @@ -70,12 +20,15 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads public virtual string? ErrorMessage { get; set; } /// - /// 获取一个值,该值指示调用微信广告平台 API 是否成功(即 HTTP 状态码为 200、且 errcode 值为 0)。 + /// 获取一个值,该值指示调用微信广告平台 API 是否成功。 + /// + ///(即 HTTP 状态码为 200,且 值为 0) + /// /// /// - public virtual bool IsSuccessful() + public override bool IsSuccessful() { - return RawStatus == 200 && ErrorCode == 0; + return GetRawStatus() == 200 && ErrorCode == 0; } } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/IMPORTANT_CodeAnalyzeTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/IMPORTANT_CodeAnalyzeTests.cs new file mode 100644 index 00000000..977181b1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/IMPORTANT_CodeAnalyzeTests.cs @@ -0,0 +1,51 @@ +using System; +using System.IO; +using System.Reflection; +using SKIT.FlurlHttpClient.Tools.CodeAnalyzer; +using Xunit; + +namespace SKIT.FlurlHttpClient.Wechat.Ads.UnitTests +{ + public class CodeAnalyzeTests + { + [Fact(DisplayName = "代码质量分析")] + public void TestCodeAnalyzer() + { + Assert.Null(Record.Exception(() => + { + var options = new TypeDeclarationAnalyzerOptions() + { + SdkAssembly = Assembly.GetAssembly(typeof(WechatAdsClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Ads.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Ads.Models", + SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Ads", + ThrowOnNotFoundRequestModelTypes = true, + ThrowOnNotFoundResponseModelTypes = true, + ThrowOnNotFoundExecutingExtensionTypes = true + }; + new TypeDeclarationAnalyzer(options).AssertNoIssues(); + })); + + Assert.Null(Record.Exception(() => + { + string workdir = Environment.CurrentDirectory; + string projdir = Path.Combine(workdir, "../../../../../"); + + var options = new SourceFileAnalyzerOptions() + { + SdkAssembly = Assembly.GetAssembly(typeof(WechatAdsClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Ads.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Ads.Models", + ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.Wechat.Ads/"), + ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/"), + ThrowOnNotFoundRequestModelClassCodeFiles = true, + ThrowOnNotFoundResponseModelClassCodeFiles = true, + ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, + ThrowOnNotFoundRequestModelSerializationSampleFiles = true, + ThrowOnNotFoundResponseModelSerializationSampleFiles = true + }; + new SourceFileAnalyzer(options).AssertNoIssues(); + })); + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests.csproj b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests.csproj index ea3044c8..dbaad6a2 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests.csproj +++ b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests.csproj @@ -11,21 +11,21 @@ - Never - Never - - PreserveNewest PreserveNewest + + Always + Always + - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestCase_CodeReview.cs b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestCase_CodeReview.cs deleted file mode 100644 index a705a099..00000000 --- a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestCase_CodeReview.cs +++ /dev/null @@ -1,28 +0,0 @@ -using SKIT.FlurlHttpClient.Tools.CodeAnalyzer; -using Xunit; - -namespace SKIT.FlurlHttpClient.Wechat.Ads.UnitTests -{ - public class TestCase_CodeReview - { - [Fact(DisplayName = "测试用例:代码质量分析")] - public void TestCodeAnalyzer() - { - Assert.Null(Record.Exception(() => - { - CodeAnalyzerOptions options = new CodeAnalyzerOptions() - { - AssemblyName = "SKIT.FlurlHttpClient.Wechat.Ads", - WorkDirectoryForSourceCode = TestConfigs.WorkDirectoryForSdk, - WorkDirectoryForTestSample = TestConfigs.WorkDirectoryForTest, - AllowNotFoundEventTypes = true, - AllowNotFoundEventSamples = true - }; - CodeAnalyzer analyzer = new CodeAnalyzer(options); - analyzer.Start(); - analyzer.Assert(); - analyzer.Flush(); - })); - } - } -} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestConfigs.cs b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestConfigs.cs index 28e81986..22ed7b34 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestConfigs.cs +++ b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/TestConfigs.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Text.Json; @@ -17,14 +17,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.UnitTests using var stream = File.OpenRead("appsettings.local.json"); using var jdoc = JsonDocument.Parse(stream); - var config = jdoc.RootElement.GetProperty("TestConfig"); + var config = jdoc.RootElement.GetProperty("TestConfigs"); WechatAgencyId = config.GetProperty("AgencyId").GetString()!; WechatAgencyAppId = config.GetProperty("AgencyAppId").GetString()!; WechatAgencyApiKey = config.GetProperty("AgencyApiKey").GetString()!; WechatAccessToken = config.GetProperty("AccessToken").GetString()!; - - WorkDirectoryForSdk = jdoc.RootElement.GetProperty("WorkDirectoryForSdk").GetString()!; - WorkDirectoryForTest = jdoc.RootElement.GetProperty("WorkDirectoryForTest").GetString()!; } catch (Exception ex) { @@ -36,8 +33,5 @@ namespace SKIT.FlurlHttpClient.Wechat.Ads.UnitTests public static readonly string WechatAgencyAppId; public static readonly string WechatAgencyApiKey; public static readonly string WechatAccessToken; - - public static readonly string WorkDirectoryForSdk; - public static readonly string WorkDirectoryForTest; } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/appsettings.json b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/appsettings.json index 3a91f919..d4c81a28 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/appsettings.json +++ b/test/SKIT.FlurlHttpClient.Wechat.Ads.UnitTests/appsettings.json @@ -1,10 +1,8 @@ -{ - "TestConfig": { +{ + "TestConfigs": { "AgencyId": "请在此填写用于测试的微信广告 AgencyId", "AgencyAppId": "请在此填写用于测试的微信广告 AgencyAppId", "AgencyApiKey": "请在此填写用于测试的微信广告 AgencyApiKey", "AccessToken": "请在此填写用于测试的微信广告 AccessToken" - }, - "WorkDirectoryForSdk": "请输入当前 SDK 项目所在的目录完整路径,如 C:\\Project\\src\\SKIT.FlurlHttpClient.Wechat.Ads\\", - "WorkDirectoryForTest": "请输入当前测试项目所在的目录完整路径,如 C:\\Project\\test\\SKIT.FlurlHttpClient.Wechat.Ads.UnitTests\\" + } }