diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClient.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClient.cs index bd5faf8a..8db0f802 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClient.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClient.cs @@ -11,6 +11,8 @@ namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi /// public class DouyinMicroAppOpenApiClient : CommonClientBase, ICommonClient { + public readonly string _BASEURL_LEGACY; + /// /// 获取当前客户端使用的抖音小程序凭证。 /// @@ -40,6 +42,8 @@ internal protected DouyinMicroAppOpenApiClient(DouyinMicroAppOpenApiClientOption FlurlClient.BaseUrl = options.Endpoints ?? DouyinMicroAppOpenApiEndpoints.DEFAULT; FlurlClient.WithTimeout(options.Timeout <= 0 ? Timeout.InfiniteTimeSpan : TimeSpan.FromMilliseconds(options.Timeout)); + + _BASEURL_LEGACY = options.EndpointForLegacy ?? DouyinMicroAppEndpoints.LEGACY_DEFAULT; } /// diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClientOptions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClientOptions.cs index 72beaddb..264d36a4 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClientOptions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiClientOptions.cs @@ -12,11 +12,17 @@ public class DouyinMicroAppOpenApiClientOptions public int Timeout { get; set; } = 30 * 1000; /// - /// 获取或设置抖音小程序服务商平台 API 域名。 + /// 获取或设置抖音小程序服务商平台 API 入口点。 /// 默认值: /// public string Endpoints { get; set; } = DouyinMicroAppOpenApiEndpoints.DEFAULT; + /// + /// 获取或设置抖音小程序服务商平台旧版 API 入口点。 + /// 默认值: + /// + public string EndpointForLegacy { get; set; } = DouyinMicroAppOpenApiEndpoints.LEGACY_DEFAULT; + /// /// 获取或设置抖音小程序服务商 AppId。 /// diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiEndpoints.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiEndpoints.cs index c48febee..19f53ccf 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiEndpoints.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/DouyinMicroAppOpenApiEndpoints.cs @@ -6,8 +6,13 @@ namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi public static class DouyinMicroAppOpenApiEndpoints { /// - /// 服务商平台接口域名(默认)。 + /// 默认域名。 /// - public const string DEFAULT = "https://open.microapp.bytedance.com/openapi"; + public const string DEFAULT = "https://open.douyin.com/api"; + + /// + /// 旧版接口服务商平台接口域名。 + /// + public const string LEGACY_DEFAULT = "https://open.microapp.bytedance.com/openapi"; } } diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyAuthExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyAuthExtensions.cs new file mode 100644 index 00000000..34388ead --- /dev/null +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyAuthExtensions.cs @@ -0,0 +1,117 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi +{ + public static class DouyinMicroAppOpenApiClientExecuteLegacyAuthExtensions + { + /// + /// 异步调用 [GET] /v1/auth/tp/token 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiAuthThirdPartyTokenV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthThirdPartyTokenV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.ComponentAppSecret is null) + request.ComponentAppSecret = client.Credentials.ComponentAppSecret; + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "auth", "tp", "token") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "auth", "tp", "token")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_appsecret", request.ComponentAppSecret) + .SetQueryParam("component_ticket", request.ComponentTicket); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v2/auth/pre_auth_code 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiAuthPreAuthCodeV2Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthPreAuthCodeV2Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v2", "auth", "pre_auth_code") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v2", "auth", "pre_auth_code")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v2/auth/gen_link 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiAuthGenerateLinkV2Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthGenerateLinkV2Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v2", "auth", "gen_link") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v2", "auth", "gen_link")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v1/auth/retrieve 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiAuthRetrieveV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthRetrieveV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "auth", "retrieve") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "auth", "retrieve")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("authorization_appid", request.AuthorizerAppId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteOpenApiExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyMicroAppExtensions.cs similarity index 62% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteOpenApiExtensions.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyMicroAppExtensions.cs index ae66f751..73fd9024 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteOpenApiExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyMicroAppExtensions.cs @@ -3,507 +3,13 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi { - public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions + public static class DouyinMicroAppOpenApiClientExecuteLegacyMicroAppExtensions { - #region Auth - /// - /// 异步调用 [GET] /v1/auth/tp/token 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiAuthThirdPartyTokenV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthThirdPartyTokenV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - if (request.ComponentAppSecret is null) - request.ComponentAppSecret = client.Credentials.ComponentAppSecret; - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "auth", "tp", "token") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_appsecret", request.ComponentAppSecret) - .SetQueryParam("component_ticket", request.ComponentTicket); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v2/auth/pre_auth_code 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiAuthPreAuthCodeV2Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthPreAuthCodeV2Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v2", "auth", "pre_auth_code") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v2/auth/gen_link 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiAuthGenerateLinkV2Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthGenerateLinkV2Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v2", "auth", "gen_link") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v1/auth/retrieve 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiAuthRetrieveV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiAuthRetrieveV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "auth", "retrieve") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("authorization_appid", request.AuthorizerAppId); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - #endregion - - #region OAuth - /// - /// 异步调用 [GET] /v1/oauth/token 接口。 - /// - /// REF:
- ///
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiOAuthTokenV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiOAuthTokenV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "oauth", "token") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("grant_type", request.GrantType); - - if (request.AuthCode is not null) - flurlReq.SetQueryParam("authorization_code", request.AuthCode); - - if (request.AuthorizerRefreshToken is not null) - flurlReq.SetQueryParam("authorizer_refresh_token", request.AuthorizerRefreshToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - #endregion - - #region ThirdParty - /// - /// 异步调用 [GET] /v1/tp/auth_app_list 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyAuthAppListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyAuthAppListV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "auth_app_list") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("page", request.PageNumber) - .SetQueryParam("size", request.PageSize); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v1/tp/upload_pic_material 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyUploadPictureMaterialV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyUploadPictureMaterialV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - if (request.MaterialFileName is null) - request.MaterialFileName = Guid.NewGuid().ToString("N").ToLower() + ".jpg"; - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "upload_pic_material") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.MaterialFileName, fileBytes: request.MaterialFileBytes, fileContentType: "image/jpeg", formDataName: "material_file"); - httpContent.Add(new ByteArrayContent(Encoding.UTF8.GetBytes(request.MaterialType.ToString())), "material_type"); - - return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - #region ThirdParty/Domain - /// - /// 异步调用 [GET] /v1/tp/download/webview_file 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyDownloadWebviewFileV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyDownloadWebviewFileV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "download", "webview_file") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - #endregion - - #region ThirdParty/POI - /// - /// 异步调用 [POST] /v1/tp/poi/supplier/match 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyPOISupplierMatchV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierMatchV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "poi", "supplier", "match") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/tp/poi/supplier/query/match_task 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyPOISupplierQueryMatchTaskV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "supplier", "query", "match_task") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("task_ids", string.Join(",", request.TaskIdList)); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/tp/poi/supplier/query/match 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyPOISupplierQueryMatchV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierQueryMatchV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "supplier", "query", "match") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("supplier_ext_ids", string.Join(",", request.SupplierExternalIds)); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v1/tp/poi/supplier/sync 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyPOISupplierSyncV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierSyncV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "poi", "supplier", "sync") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/tp/poi/supplier/query 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyPOISupplierQueryV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierQueryV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "supplier", "query") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("supplier_ext_id", request.SupplierExternalId); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/tp/poi/base/query/amap 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyPOIBaseQueryAMapV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOIBaseQueryAMapV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "base", "query", "amap") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("amap_id", request.AMapId); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - #endregion - - #region ThirdParty/Template - /// - /// 异步调用 [GET] /v1/tp/template/get_tpl_list 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyTemplateGetTemplateListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateGetTemplateListV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "template", "get_tpl_list") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/tp/template/get_draft_list 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - [Obsolete("相关接口或字段于 2022-12-28 下线。")] - public static async Task ExecuteOpenApiThirdPartyTemplateGetDraftListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateGetDraftListV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "template", "get_draft_list") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/tp/template/get_tpl_app_list 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyTemplateGetTemplateAppListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateGetTemplateAppListV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "template", "get_tpl_app_list") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v1/tp/template/add_tpl 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyTemplateAddTemplateV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateAddTemplateV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "template", "add_tpl") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v1/tp/template/del_tpl 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiThirdPartyTemplateDeleteTemplateV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateDeleteTemplateV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "template", "del_tpl") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - #endregion - #endregion - - #region MicroApp /// /// 异步调用 [GET] /v1/microapp/code2session 接口。 /// @@ -522,6 +28,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "code2session") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "code2session")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken) .SetQueryParam("code", request.Code) @@ -554,6 +61,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "upload_material") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "upload_material")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -563,7 +71,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false); } - #region MicroApp/App + #region App /// /// 异步调用 [GET] /v1/microapp/app/info 接口。 /// @@ -582,6 +90,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "app", "info") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "info")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -606,6 +115,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "qrcode") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "qrcode")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -630,6 +140,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "app", "check_app_name") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "check_app_name")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken) .SetQueryParam("app_name", request.AppName); @@ -655,6 +166,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "modify_app_name") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "modify_app_name")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -679,6 +191,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "modify_app_intro") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "modify_app_intro")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -703,6 +216,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "modify_app_icon") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "modify_app_icon")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -727,6 +241,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "app", "all_categories") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "all_categories")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -751,6 +266,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "app", "categories") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "categories")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -775,6 +291,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "add_categories") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "add_categories")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -799,6 +316,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "del_categories") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "del_categories")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -823,6 +341,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "supply_categories") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "supply_categories")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -847,6 +366,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "modify_server_domain") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "modify_server_domain")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -871,6 +391,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "app", "modify_webview_domain") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "modify_webview_domain")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -895,6 +416,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "app", "quality_rating") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "quality_rating")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -919,6 +441,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "app", "credit_score") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "app", "credit_score")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -926,7 +449,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions } #endregion - #region MicroApp/Operation + #region Operation /// /// 异步调用 [GET] /v1/microapp/operation/video_application_status 接口。 /// @@ -945,6 +468,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "operation", "video_application_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "video_application_status")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -969,6 +493,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "video_application") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "video_application")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -993,6 +518,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "operation", "live_application_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "live_application_status")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1017,6 +543,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "live_application") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "live_application")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1041,6 +568,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "operation", "phone_number_application_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "phone_number_application_status")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1065,6 +593,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "phone_number_application") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "phone_number_application")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1089,6 +618,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "operation", "share_tpl_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "share_tpl_list")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken) .SetQueryParam("page", request.PageNumber) @@ -1115,6 +645,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "add_share_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "add_share_tpl")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1139,6 +670,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "modify_share_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "modify_share_tpl")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1163,6 +695,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "del_share_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "del_share_tpl")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1187,6 +720,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "set_default_share_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "set_default_share_tpl")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1211,6 +745,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "operation", "add_shop_material") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "add_shop_material")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1235,6 +770,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "operation", "query_shop_material") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "operation", "query_shop_material")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken) .SetQueryParam("supplier_ext_id", request.SupplierExternalId); @@ -1243,7 +779,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions } #endregion - #region MicroApp/Package + #region Package /// /// 异步调用 [POST] /v1/microapp/package/upload 接口。 /// @@ -1262,6 +798,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "package", "upload") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "package", "upload")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1286,6 +823,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "package", "audit_hosts") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "package", "audit_hosts")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1310,6 +848,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v2", "microapp", "package", "audit") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v2", "microapp", "package", "audit")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1334,6 +873,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "package", "revoke_audit") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "package", "revoke_audit")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1358,6 +898,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "package", "release") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "package", "release")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1382,6 +923,7 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v1", "microapp", "package", "rollback") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "package", "rollback")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); @@ -1406,87 +948,12 @@ public static class DouyinMicroAppOpenApiClientExecuteOpenApiExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "v1", "microapp", "package", "versions") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "microapp", "package", "versions")) .SetQueryParam("component_appid", request.ComponentAppId) .SetQueryParam("authorizer_access_token", request.AuthorizerAccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } #endregion - #endregion - - #region Settle - /// - /// 异步调用 [POST] /v1/settle/pre_check 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiSettlePreCheckV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiSettlePreCheckV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "settle", "pre_check") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [POST] /v1/settle/apply 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiSettleApplyV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiSettleApplyV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Post, "v1", "settle", "apply") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - /// - /// 异步调用 [GET] /v1/settle/get_apply_status 接口。 - /// - /// REF:
- /// - ///
- ///
- /// - /// - /// - /// - public static async Task ExecuteOpenApiSettleGetApplyStatusV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiSettleGetApplyStatusV1Request request, CancellationToken cancellationToken = default) - { - if (client is null) throw new ArgumentNullException(nameof(client)); - if (request is null) throw new ArgumentNullException(nameof(request)); - - IFlurlRequest flurlReq = client - .CreateFlurlRequest(request, HttpMethod.Get, "v1", "settle", "get_apply_status") - .SetQueryParam("component_appid", request.ComponentAppId) - .SetQueryParam("component_access_token", request.ComponentAccessToken) - .SetQueryParam("apply_id", request.ApplyId); - - return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); - } - #endregion } } diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyOAuthExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyOAuthExtensions.cs new file mode 100644 index 00000000..d5ce9cd5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyOAuthExtensions.cs @@ -0,0 +1,41 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi +{ + public static class DouyinMicroAppOpenApiClientExecuteLegacyOAuthExtensions + { + /// + /// 异步调用 [GET] /v1/oauth/token 接口。 + /// + /// REF:
+ ///
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiOAuthTokenV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiOAuthTokenV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "oauth", "token") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "oauth", "token")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("grant_type", request.GrantType) + .SetQueryParam("authorization_code", request.AuthCode) + .SetQueryParam("authorizer_refresh_token", request.AuthorizerRefreshToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacySettleExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacySettleExtensions.cs new file mode 100644 index 00000000..24bbd334 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacySettleExtensions.cs @@ -0,0 +1,88 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi +{ + public static class DouyinMicroAppOpenApiClientExecuteLegacySettleExtensions + { + /// + /// 异步调用 [POST] /v1/settle/pre_check 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiSettlePreCheckV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiSettlePreCheckV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "settle", "pre_check") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "settle", "pre_check")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v1/settle/apply 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiSettleApplyV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiSettleApplyV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "settle", "apply") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "settle", "apply")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/settle/get_apply_status 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiSettleGetApplyStatusV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiSettleGetApplyStatusV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "settle", "get_apply_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "settle", "get_apply_status")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("apply_id", request.ApplyId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyThirdPartyExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyThirdPartyExtensions.cs new file mode 100644 index 00000000..5db946ca --- /dev/null +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientExecuteLegacyThirdPartyExtensions.cs @@ -0,0 +1,382 @@ +using System; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi +{ + public static class DouyinMicroAppOpenApiClientExecuteLegacyThirdPartyExtensions + { + /// + /// 异步调用 [GET] /v1/tp/auth_app_list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyAuthAppListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyAuthAppListV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "auth_app_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "auth_app_list")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("page", request.PageNumber) + .SetQueryParam("size", request.PageSize); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v1/tp/upload_pic_material 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyUploadPictureMaterialV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyUploadPictureMaterialV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MaterialFileName is null) + request.MaterialFileName = Guid.NewGuid().ToString("N").ToLower() + ".jpg"; + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "upload_pic_material") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "upload_pic_material")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.MaterialFileName, fileBytes: request.MaterialFileBytes, fileContentType: "image/jpeg", formDataName: "material_file"); + httpContent.Add(new ByteArrayContent(Encoding.UTF8.GetBytes(request.MaterialType.ToString())), "material_type"); + + return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + #region Domain + /// + /// 异步调用 [GET] /v1/tp/download/webview_file 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyDownloadWebviewFileV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyDownloadWebviewFileV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "download", "webview_file") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "download", "webview_file")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region POI + /// + /// 异步调用 [POST] /v1/tp/poi/supplier/match 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyPOISupplierMatchV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierMatchV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "poi", "supplier", "match") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "poi", "supplier", "match")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/tp/poi/supplier/query/match_task 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyPOISupplierQueryMatchTaskV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "supplier", "query", "match_task") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "poi", "supplier", "query", "match_task")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("task_ids", string.Join(",", request.TaskIdList)); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/tp/poi/supplier/query/match 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyPOISupplierQueryMatchV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierQueryMatchV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "supplier", "query", "match") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "poi", "supplier", "query", "match")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("supplier_ext_ids", string.Join(",", request.SupplierExternalIds)); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v1/tp/poi/supplier/sync 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyPOISupplierSyncV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierSyncV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "poi", "supplier", "sync") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "poi", "supplier", "sync")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/tp/poi/supplier/query 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyPOISupplierQueryV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOISupplierQueryV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "supplier", "query") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "poi", "supplier", "query")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("supplier_ext_id", request.SupplierExternalId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/tp/poi/base/query/amap 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyPOIBaseQueryAMapV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyPOIBaseQueryAMapV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "poi", "base", "query", "amap") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "poi", "base", "query", "amap")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken) + .SetQueryParam("amap_id", request.AMapId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region Template + /// + /// 异步调用 [GET] /v1/tp/template/get_tpl_list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyTemplateGetTemplateListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateGetTemplateListV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "template", "get_tpl_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "template", "get_tpl_list")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/tp/template/get_draft_list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + [Obsolete("相关接口或字段于 2022-12-28 下线。")] + public static async Task ExecuteOpenApiThirdPartyTemplateGetDraftListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateGetDraftListV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "template", "get_draft_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "template", "get_draft_list")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /v1/tp/template/get_tpl_app_list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyTemplateGetTemplateAppListV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateGetTemplateAppListV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "v1", "tp", "template", "get_tpl_app_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "template", "get_tpl_app_list")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v1/tp/template/add_tpl 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyTemplateAddTemplateV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateAddTemplateV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "template", "add_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "template", "add_tpl")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /v1/tp/template/del_tpl 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteOpenApiThirdPartyTemplateDeleteTemplateV1Async(this DouyinMicroAppOpenApiClient client, Models.OpenApiThirdPartyTemplateDeleteTemplateV1Request request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "v1", "tp", "template", "del_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v1", "tp", "template", "del_tpl")) + .SetQueryParam("component_appid", request.ComponentAppId) + .SetQueryParam("component_access_token", request.ComponentAccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientParameterExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientParameterExtensions.cs index e0e6ce14..1cd53b89 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientParameterExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Extensions/DouyinMicroAppOpenApiClientParameterExtensions.cs @@ -4,6 +4,8 @@ namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi { public static class DouyinMicroAppOpenApiClientParameterExtensions { + private const string BASE_URL = "https://open.microapp.bytedance.com/openapi"; + /// /// 生成第三方应用服务商授权 URL。 /// @@ -17,7 +19,7 @@ public static class DouyinMicroAppOpenApiClientParameterExtensions /// public static string GenerateParameterizedUrlForOpenComponentThirdPartyAuthorization(this DouyinMicroAppOpenApiClient client, string preAuthCode, string redirectUrl) { - return new Url(DouyinMicroAppOpenApiEndpoints.DEFAULT) + return new Url(BASE_URL) .AppendPathSegments("mappconsole", "tp", "authorization") .SetQueryParam("component_appid", client.Credentials.ComponentAppId) .SetQueryParam("pre_auth_code", preAuthCode) diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthGenerateLinkV2Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthGenerateLinkV2Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthGenerateLinkV2Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthGenerateLinkV2Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthGenerateLinkV2Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthGenerateLinkV2Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthGenerateLinkV2Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthGenerateLinkV2Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthPreAuthCodeV2Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthPreAuthCodeV2Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthPreAuthCodeV2Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthPreAuthCodeV2Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthPreAuthCodeV2Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthPreAuthCodeV2Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthPreAuthCodeV2Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthPreAuthCodeV2Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthRetrieveV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthRetrieveV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthRetrieveV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthRetrieveV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthRetrieveV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthRetrieveV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthRetrieveV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthRetrieveV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthThirdPartyTokenV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthThirdPartyTokenV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthThirdPartyTokenV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthThirdPartyTokenV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthThirdPartyTokenV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthThirdPartyTokenV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Auth/OpenApiAuthThirdPartyTokenV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Auth/OpenApiAuthThirdPartyTokenV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAddCategoriesV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppAllCategoriesV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppCategoriesV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppDeleteCategoriesV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/Category/OpenApiMicroAppAppSupplyCategoriesV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCheckAppNameV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppCreditScoreV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppInfoV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppInfoV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppInfoV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppInfoV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppInfoV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppInfoV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppInfoV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppInfoV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIconV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppIntroductionV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyAppNameV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyServerDomainV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppModifyWebviewDomainV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQrcodeV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQrcodeV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQrcodeV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQrcodeV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQrcodeV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQrcodeV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQrcodeV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQrcodeV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/App/OpenApiMicroAppAppQualityRatingV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppCode2SessionV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppCode2SessionV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppCode2SessionV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppCode2SessionV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppCode2SessionV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppCode2SessionV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppCode2SessionV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppCode2SessionV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppUploadMaterialV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppUploadMaterialV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppUploadMaterialV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppUploadMaterialV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppUploadMaterialV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppUploadMaterialV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/OpenApiMicroAppUploadMaterialV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/OpenApiMicroAppUploadMaterialV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationStatusV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationLiveApplicationV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationPhoneNumberApplicationV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationStatusV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/Application/OpenApiMicroAppOperationVideoApplicationV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationAddShareTemplateV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationDeleteShareTemplateV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationModifyShareTemplateV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationSetDefaultShareTemplateV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShareTemplate/OpenApiMicroAppOperationShareTemplateListV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationAddShopMaterialV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Operation/ShopMaterial/OpenApiMicroAppOperationQueryShopMaterialV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditHostsV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditV2Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditV2Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditV2Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditV2Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditV2Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditV2Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageAuditV2Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageAuditV2Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageReleaseV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRevokeAuditV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageRollbackV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageUploadV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageUploadV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageUploadV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageUploadV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageUploadV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageUploadV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageUploadV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageUploadV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/MicroApp/Package/OpenApiMicroAppPackageVersionsV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/OAuth/OpenApiOAuthTokenV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/OAuth/OpenApiOAuthTokenV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/OAuth/OpenApiOAuthTokenV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/OAuth/OpenApiOAuthTokenV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/OAuth/OpenApiOAuthTokenV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/OAuth/OpenApiOAuthTokenV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/OAuth/OpenApiOAuthTokenV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/OAuth/OpenApiOAuthTokenV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleApplyV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleApplyV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleApplyV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleApplyV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleApplyV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleApplyV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleApplyV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleApplyV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleGetApplyStatusV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleGetApplyStatusV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleGetApplyStatusV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleGetApplyStatusV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleGetApplyStatusV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleGetApplyStatusV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettleGetApplyStatusV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettleGetApplyStatusV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettlePreCheckV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettlePreCheckV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettlePreCheckV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettlePreCheckV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettlePreCheckV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettlePreCheckV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/Settle/OpenApiSettlePreCheckV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/Settle/OpenApiSettlePreCheckV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Domain/OpenApiThirdPartyDownloadWebviewFileV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyAuthAppListV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyAuthAppListV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyAuthAppListV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyAuthAppListV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyAuthAppListV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyAuthAppListV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyAuthAppListV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyAuthAppListV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/OpenApiThirdPartyUploadPictureMaterialV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOIBaseQueryAMapV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierMatchV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchTaskV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryMatchV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierQueryV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/POI/OpenApiThirdPartyPOISupplierSyncV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateAddTemplateV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateDeleteTemplateV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetDraftListV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateAppListV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Request.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Request.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Request.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Request.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Response.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Response.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Response.cs rename to src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/OpenApi/Models/_Legacy/ThirdParty/Template/OpenApiThirdPartyTemplateGetTemplateListV1Response.cs diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/ProductApi/DouyinMicroAppProductApiClientOptions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/ProductApi/DouyinMicroAppProductApiClientOptions.cs index 00c89687..d898f8ef 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/ProductApi/DouyinMicroAppProductApiClientOptions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/ProductApi/DouyinMicroAppProductApiClientOptions.cs @@ -12,7 +12,7 @@ public class DouyinMicroAppProductApiClientOptions public int Timeout { get; set; } = 30 * 1000; /// - /// 获取或设置抖音小程序泛知识课程库 API 域名。 + /// 获取或设置抖音小程序泛知识课程库 API 入口点。 /// 默认值: /// public string Endpoints { get; set; } = DouyinMicroAppProductApiEndpoints.DEFAULT; diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/RoleApi/DouyinMicroAppRoleApiClientOptions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/RoleApi/DouyinMicroAppRoleApiClientOptions.cs index ed36ff13..1260d0ae 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/RoleApi/DouyinMicroAppRoleApiClientOptions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/RoleApi/DouyinMicroAppRoleApiClientOptions.cs @@ -12,7 +12,7 @@ public class DouyinMicroAppRoleApiClientOptions public int Timeout { get; set; } = 30 * 1000; /// - /// 获取或设置抖音小程序泛知识角色系统 API 域名。 + /// 获取或设置抖音小程序泛知识角色系统 API 入口点。 /// 默认值: /// public string Endpoints { get; set; } = DouyinMicroAppRoleApiEndpoints.DEFAULT; diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsECPayExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsECPayExtensions.cs index 9128083d..1be12990 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsECPayExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsECPayExtensions.cs @@ -98,7 +98,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "bills") - .WithUrl($"{client._BASEURL_LEGACY}/apps/bills") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "bills")) .SetQueryParam("app_id", request.AppId) .SetQueryParam("merchant_id", request.MerchantId) .SetQueryParam("bill_date", request.DateString) @@ -144,7 +144,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "fund", "bills") - .WithUrl($"{client._BASEURL_LEGACY}/apps/fund/bills") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "fund", "bills")) .SetQueryParam("app_id", request.AppId) .SetQueryParam("merchant_id", request.MerchantId) .SetQueryParam("bill_date", request.DateString) @@ -185,7 +185,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "create_order") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/create_order"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "create_order")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -214,7 +214,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "query_order") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/query_order"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "query_order")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -243,7 +243,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "create_refund") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/create_refund"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "create_refund")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -272,7 +272,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "query_refund") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/query_refund"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "query_refund")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -301,7 +301,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "settle") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/settle"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "settle")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -330,7 +330,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "query_settle") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/query_settle"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "query_settle")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -359,7 +359,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "create_return") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/create_return"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "create_return")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -388,7 +388,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "query_return") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/query_return"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "query_return")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -417,7 +417,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "v1", "query_platform_order") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/v1/query_platform_order"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "v1", "query_platform_order")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -443,7 +443,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "create_merchant") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/create_merchant"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "create_merchant")); if (request.Signature is null) request.Signature = GenerateRequestSignature(client, request); @@ -469,7 +469,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "image_upload") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/image_upload"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "image_upload")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -495,7 +495,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "query_merchant_status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/query_merchant_status"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "query_merchant_status")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -524,7 +524,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "add_merchant") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/add_merchant"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "add_merchant")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -554,7 +554,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "get_app_merchant") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/get_app_merchant"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "get_app_merchant")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -581,7 +581,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "app_add_sub_merchant") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/app_add_sub_merchant"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "app_add_sub_merchant")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -611,7 +611,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "add_sub_merchant") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/add_sub_merchant"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "add_sub_merchant")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -639,7 +639,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "query_merchant_balance") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/query_merchant_balance"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "query_merchant_balance")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -665,7 +665,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "merchant_withdraw") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/merchant_withdraw"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "merchant_withdraw")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -691,7 +691,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "ecpay", "saas", "query_withdraw_order") - .WithUrl($"{client._BASEURL_LEGACY}/apps/ecpay/saas/query_withdraw_order"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "ecpay", "saas", "query_withdraw_order")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsExtensions.cs index f2859ac1..bda7652d 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsExtensions.cs @@ -36,7 +36,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v2", "token") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v2/token"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v2", "token")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -67,7 +67,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v2", "jscode2session") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v2/jscode2session"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v2", "jscode2session")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -94,7 +94,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "upload_material") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/upload_material") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "upload_material")) .WithHeader("access-token", request.AccessToken); using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.MaterialFileName, fileBytes: request.MaterialFileBytes, fileContentType: "image/jpeg", formDataName: "material_file"); @@ -123,7 +123,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_aweme_permission_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_aweme_permission_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_aweme_permission_list")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -148,7 +148,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "apply_aweme_permission") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/apply_aweme_permission") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "apply_aweme_permission")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -173,7 +173,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_scope_quota_detail") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_scope_quota_detail") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_scope_quota_detail")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("permission_key", request.PermissionKey); @@ -199,7 +199,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "apply_scope_quota") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/apply_scope_quota") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "apply_scope_quota")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -225,7 +225,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "create_clue_component_info") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/create_clue_component_info") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "create_clue_component_info")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -249,7 +249,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_clue_component_info") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_clue_component_info") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_clue_component_info")) .WithHeader("access-token", request.AccessToken); if (request.PageNumber is not null) @@ -279,7 +279,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "update_clue_component_info") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/update_clue_component_info") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "update_clue_component_info")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -303,7 +303,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Delete, "apps", "v1", "capacity", "delete_clue_component_info") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/delete_clue_component_info") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "delete_clue_component_info")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -330,7 +330,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "bind_aweme_user") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/bind_aweme_user") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "bind_aweme_user")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -355,7 +355,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "unbind_aweme_user_bind") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/unbind_aweme_user_bind") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "unbind_aweme_user_bind")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -380,7 +380,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "get_aweme_user_bind_qrcode") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/get_aweme_user_bind_qrcode") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "get_aweme_user_bind_qrcode")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("type", request.BindType); @@ -406,7 +406,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_aweme_user_bind_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_aweme_user_bind_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_aweme_user_bind_list")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("type", request.BindType) .SetQueryParam("page_num", request.PageNumber) @@ -440,7 +440,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "apply_capacity") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/apply_capacity") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "apply_capacity")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -469,7 +469,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_apply_status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_apply_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_apply_status")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("capacity_key", request.CapacityKey); @@ -495,7 +495,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "bind_self_mount_user") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/bind_self_mount_user") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "bind_self_mount_user")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -520,7 +520,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "unbind_self_mount_user") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/unbind_self_mount_user") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "unbind_self_mount_user")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -545,7 +545,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "get_self_mount_bind_qrcode") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/get_self_mount_bind_qrcode") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "get_self_mount_bind_qrcode")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("capacity_key", request.CapacityKey); @@ -571,7 +571,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_self_mount_user_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_self_mount_user_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_self_mount_user_list")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("capacity_key", request.CapacityKey) .SetQueryParam("page_num", request.PageNumber) @@ -600,7 +600,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_capcut_info") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_capcut_info") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_capcut_info")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -625,7 +625,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_capcut_template_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_capcut_template_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_capcut_template_list")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("page_num", request.PageNumber) .SetQueryParam("page_size", request.PageSize); @@ -652,7 +652,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "update_capcut_template_status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/update_capcut_template_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "update_capcut_template_status")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -680,7 +680,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_simple_qr_bind_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_simple_qr_bind_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_simple_qr_bind_list")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("page_num", request.PageNumber) .SetQueryParam("page_size", request.PageSize); @@ -707,7 +707,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "add_simple_qr_bind") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/add_simple_qr_bind") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "add_simple_qr_bind")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -732,7 +732,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "update_simple_qr_bind") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/update_simple_qr_bind") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "update_simple_qr_bind")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -757,7 +757,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "update_simple_qr_bind_status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/update_simple_qr_bind_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "update_simple_qr_bind_status")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -782,7 +782,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "delete_simple_qr_bind") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/delete_simple_qr_bind") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "delete_simple_qr_bind")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -809,7 +809,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_subscribe_notification_tpl_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_subscribe_notification_tpl_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_subscribe_notification_tpl_list")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("page_num", request.PageNumber) .SetQueryParam("page_size", request.PageSize) @@ -844,7 +844,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_app_subscribe_notification_tpl") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_app_subscribe_notification_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_app_subscribe_notification_tpl")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("page_num", request.PageNumber) .SetQueryParam("page_size", request.PageSize) @@ -875,7 +875,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_created_subscribe_notification_tpl_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_created_subscribe_notification_tpl_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_created_subscribe_notification_tpl_list")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("page_num", request.PageNumber) .SetQueryParam("page_size", request.PageSize); @@ -905,7 +905,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "add_app_subscribe_notification_tpl") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/add_app_subscribe_notification_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "add_app_subscribe_notification_tpl")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -930,7 +930,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "modify_app_subscribe_notification_tpl") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/modify_app_subscribe_notification_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "modify_app_subscribe_notification_tpl")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -955,7 +955,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "delete_app_subscribe_notification_tpl") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/delete_app_subscribe_notification_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "delete_app_subscribe_notification_tpl")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -980,7 +980,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "create_subscribe_notification_tpl") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/create_subscribe_notification_tpl") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "create_subscribe_notification_tpl")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1007,7 +1007,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_traffic_permission_status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_traffic_permission_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_traffic_permission_status")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1032,7 +1032,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "open_traffic_permission") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/open_traffic_permission") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "open_traffic_permission")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1057,7 +1057,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_ad_placement_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_ad_placement_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_ad_placement_list")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1082,7 +1082,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "add_ad_placement") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/add_ad_placement") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "add_ad_placement")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1107,7 +1107,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "capacity", "update_ad_placement_status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/update_ad_placement_status") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "update_ad_placement_status")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1131,7 +1131,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_ad_income") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_ad_income") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_ad_income")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_date", request.StartDateString) .SetQueryParam("end_date", request.EndDateString); @@ -1160,7 +1160,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "capacity", "query_ad_settlement_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/capacity/query_ad_settlement_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "capacity", "query_ad_settlement_list")) .WithHeader("access-token", request.AccessToken); if (request.PeriodString is not null) @@ -1197,7 +1197,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "censor", "image") - .WithUrl($"{client._BASEURL_LEGACY}/apps/censor/image"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "censor", "image")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1225,7 +1225,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "customer_service", "url") - .WithUrl($"{client._BASEURL_LEGACY}/apps/customer_service/url") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "customer_service", "url")) .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("appid", request.AppId) .SetQueryParam("openid", request.OpenId) @@ -1259,7 +1259,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "chat", "customer_service_url") - .WithUrl($"{client._BASEURL_LEGACY}/apps/chat/customer_service_url") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "chat", "customer_service_url")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("appid", request.AppId) .SetQueryParam("openid", request.OpenId) @@ -1297,7 +1297,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_deal_overview_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_deal_overview_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_deal_overview_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1330,7 +1330,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_video_deal_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_video_deal_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_video_deal_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1360,7 +1360,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_live_room") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_live_room") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_live_room")) .WithHeader("access-token", request.AccessToken); if (request.AnchorName is not null) @@ -1388,7 +1388,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_live_room_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_live_room_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_live_room_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("live_room_id", request.LiveRoomId); @@ -1414,7 +1414,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_live_deal_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_live_deal_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_live_deal_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("live_room_id", request.LiveRoomId); @@ -1440,7 +1440,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_product_deal_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_product_deal_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_product_deal_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp) @@ -1474,7 +1474,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_behavior_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_behavior_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_behavior_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1510,7 +1510,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_real_time_user_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_real_time_user_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_real_time_user_data")) .WithHeader("access-token", request.AccessToken); if (request.HostName is not null) @@ -1541,7 +1541,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_retention_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_retention_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_retention_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1580,7 +1580,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_scene_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_scene_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_scene_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1613,7 +1613,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_user_portrait_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_user_portrait_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_user_portrait_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1649,7 +1649,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_client_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_client_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_client_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1685,7 +1685,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Get, "apps", "v1", "data_analysis", "query_page_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/data_analysis/query_page_data") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "data_analysis", "query_page_data")) .WithHeader("access-token", request.AccessToken) .SetQueryParam("start_time", request.StartTimestamp) .SetQueryParam("end_time", request.EndTimestamp); @@ -1729,7 +1729,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "upload_live_image") - .WithUrl($"{client._BASEURL_LEGACY}/apps/upload_live_image") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "upload_live_image")) .WithHeader("access-token", request.AccessToken); using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.ImageFileName, fileBytes: request.ImageFileBytes, fileContentType: "image/jpeg", formDataName: "image"); @@ -1762,7 +1762,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "v1", "live", "set_black_white_list") - .WithUrl($"{client._BASEURL_LEGACY}/apps/v1/live/set_black_white_list") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "v1", "live", "set_black_white_list")) .WithHeader("access-token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1788,7 +1788,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "message", "custom", "send") - .WithUrl($"{client._BASEURL_LEGACY}/apps/message/custom/send") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "message", "custom", "send")) .SetQueryParam("access_token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -1815,7 +1815,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "order", "v2", "push") - .WithUrl($"{client._BASEURL_LEGACY}/apps/order/v2/push"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "order", "v2", "push")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1838,7 +1838,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "order", "delete") - .WithUrl($"{client._BASEURL_LEGACY}/apps/order/delete"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "order", "delete")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1864,7 +1864,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "qrcode") - .WithUrl($"{client._BASEURL_LEGACY}/apps/qrcode"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "qrcode")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1894,7 +1894,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "subscribe_notification", "developer", "v1", "notify") - .WithUrl($"{client._BASEURL_LEGACY}/apps/subscribe_notification/developer/v1/notify"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "subscribe_notification", "developer", "v1", "notify")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1922,7 +1922,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "share_config") - .WithUrl($"{client._BASEURL_LEGACY}/apps/share_config"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "share_config")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1951,7 +1951,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "taskbox", "add_task") - .WithUrl($"{client._BASEURL_LEGACY}/apps/taskbox/add_task"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "taskbox", "add_task")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -1978,7 +1978,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "taskbox", "update_task") - .WithUrl($"{client._BASEURL_LEGACY}/apps/taskbox/update_task"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "taskbox", "update_task")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -2005,7 +2005,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "taskbox", "update", "status") - .WithUrl($"{client._BASEURL_LEGACY}/apps/taskbox/update/status"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "taskbox", "update", "status")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -2032,7 +2032,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "taskbox", "query_app_task_id") - .WithUrl($"{client._BASEURL_LEGACY}/apps/taskbox/query_app_task_id"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "taskbox", "query_app_task_id")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -2059,7 +2059,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "taskbox", "query_task_video_data") - .WithUrl($"{client._BASEURL_LEGACY}/apps/taskbox/query_task_video_data"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "taskbox", "query_task_video_data")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -2085,7 +2085,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "taskbox", "update_orient_talents", "") - .WithUrl($"{client._BASEURL_LEGACY}/apps/taskbox/update_orient_talents"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "taskbox", "update_orient_talents", "")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -2116,7 +2116,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "convert_video_id", "video_id_to_open_item_id") - .WithUrl($"{client._BASEURL_LEGACY}/apps/convert_video_id/video_id_to_open_item_id"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "convert_video_id", "video_id_to_open_item_id")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -2142,7 +2142,7 @@ public static class DouyinMicroAppClientExecuteLegacyAppsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "convert_video_id", "open_item_id_to_encrypt_id") - .WithUrl($"{client._BASEURL_LEGACY}/apps/convert_video_id/open_item_id_to_encrypt_id"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "convert_video_id", "open_item_id_to_encrypt_id")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsGameExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsGameExtensions.cs index eecce9bf..ae69a911 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsGameExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsGameExtensions.cs @@ -5,6 +5,7 @@ using System.Threading; using System.Threading.Tasks; using System.Web; +using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.ByteDance.MicroApp @@ -66,7 +67,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "game", "wallet", "get_balance") - .WithUrl($"{client._BASEURL_LEGACY}/apps/game/wallet/get_balance"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "game", "wallet", "get_balance")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -98,7 +99,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "game", "wallet", "game_pay") - .WithUrl($"{client._BASEURL_LEGACY}/apps/game/wallet/game_pay"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "game", "wallet", "game_pay")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } @@ -130,7 +131,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "game", "wallet", "add_coin") - .WithUrl($"{client._BASEURL_LEGACY}/apps/game/wallet/add_coin"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "game", "wallet", "add_coin")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsStorageExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsStorageExtensions.cs index aa6b507b..df9f6319 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsStorageExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyAppsStorageExtensions.cs @@ -55,7 +55,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "set_user_storage") - .WithUrl($"{client._BASEURL_LEGACY}/apps/set_user_storage") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "set_user_storage")) .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("openid", request.OpenId) .SetQueryParam("signature", request.Signature) @@ -86,7 +86,7 @@ private static string GenerateRequestSignature(DouyinMicroAppClient cl IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "apps", "remove_user_storage") - .WithUrl($"{client._BASEURL_LEGACY}/apps/remove_user_storage") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("apps", "remove_user_storage")) .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("openid", request.OpenId) .SetQueryParam("signature", request.Signature) diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyCommentExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyCommentExtensions.cs index 3da786bd..7fa0aa56 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyCommentExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyCommentExtensions.cs @@ -2,6 +2,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.ByteDance.MicroApp @@ -29,7 +30,7 @@ public static class DouyinMicroAppClientExecuteLegacyCommentExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "comment", "open", "get") - .WithUrl($"{client._BASEURL_LEGACY}/comment/open/get"); + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("comment", "open", "get")); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } diff --git a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyTagsExtensions.cs b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyTagsExtensions.cs index 8c0c04a2..add9c7b6 100644 --- a/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyTagsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Extensions/DouyinMicroAppClientExecuteLegacyTagsExtensions.cs @@ -2,6 +2,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.ByteDance.MicroApp @@ -27,7 +28,7 @@ public static class DouyinMicroAppClientExecuteLegacyTagsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v2", "tags", "text", "antidirt") - .WithUrl($"{client._BASEURL_LEGACY}/v2/tags/text/antidirt") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v2", "tags", "text", "antidirt")) .WithHeader("X-Token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); @@ -51,7 +52,7 @@ public static class DouyinMicroAppClientExecuteLegacyTagsExtensions IFlurlRequest flurlReq = client .CreateFlurlRequest(request, HttpMethod.Post, "v2", "tags", "image") - .WithUrl($"{client._BASEURL_LEGACY}/v2/tags/image") + .WithUrl(url => new Url(client._BASEURL_LEGACY).AppendPathSegments("v2", "tags", "image")) .WithHeader("X-Token", request.AccessToken); return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); diff --git a/test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/IMPORTANT_CodeAnalyzeTests.cs b/test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/IMPORTANT_CodeAnalyzeTests.cs index 6bcba118..91fb0888 100644 --- a/test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/IMPORTANT_CodeAnalyzeTests.cs +++ b/test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/IMPORTANT_CodeAnalyzeTests.cs @@ -1,6 +1,11 @@ using System; using System.IO; +using System.Linq; +using System.Net.Http; using System.Reflection; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; using SKIT.FlurlHttpClient.Tools.CodeAnalyzer; using Xunit; @@ -21,241 +26,417 @@ public class CodeAnalyzeTests public void CodeAnalyze() { Assert.Multiple( - () => Assert.Null(Record.Exception(() => - { - var options = new TypeDeclarationAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", - SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp", - SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Events", - IgnoreExecutingExtensionTypes = static type => type.Namespace!.Contains(".ExtendedSDK."), - ThrowOnNotFoundRequestModelTypes = true, - ThrowOnNotFoundResponseModelTypes = true, - ThrowOnNotFoundExecutingExtensionTypes = true, - ThrowOnNotFoundWebhookEventTypes = true - }; - new TypeDeclarationAnalyzer(options).AssertNoIssues(); - })), - - () => Assert.Null(Record.Exception(() => + CodeAnalyze_BaseSDK, + CodeAnalyze_ExtendedSDK_OpenApi, + CodeAnalyze_ExtendedSDK_ProductApi, + CodeAnalyze_ExtendedSDK_RoleApi, + CodeAnalyze_ExtendedSDK_Webcast + ); + } + + private void CodeAnalyze_BaseSDK() + { + Assert.Null(Record.Exception(() => + { + var options = new TypeDeclarationAnalyzerOptions() { - string workdir = Environment.CurrentDirectory; - string projdir = Path.Combine(workdir, "../../../../../"); + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", + SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp", + SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Events", + IgnoreExecutingExtensionTypes = static type => type.Namespace!.Contains(".ExtendedSDK."), + ThrowOnNotFoundRequestModelTypes = true, + ThrowOnNotFoundResponseModelTypes = true, + ThrowOnNotFoundExecutingExtensionTypes = true, + ThrowOnNotFoundWebhookEventTypes = true + }; + new TypeDeclarationAnalyzer(options).AssertNoIssues(); + })); - var options = new SourceFileAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", - SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Events", - ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), - ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), - ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/_/", - ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/_/", - ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/_/", - ThrowOnNotFoundRequestModelClassCodeFiles = true, - ThrowOnNotFoundResponseModelClassCodeFiles = true, - ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, - ThrowOnNotFoundWebhookEventClassCodeFiles = true, - ThrowOnNotFoundRequestModelSerializationSampleFiles = true, - ThrowOnNotFoundResponseModelSerializationSampleFiles = true, - ThrowOnNotFoundWebhookEventSerializationSampleFiles = true - }; - new SourceFileAnalyzer(options).AssertNoIssues(); - })) - ); + Assert.Null(Record.Exception(() => + { + string workdir = Environment.CurrentDirectory; + string projdir = Path.Combine(workdir, "../../../../../"); - Assert.Multiple( - () => Assert.Null(Record.Exception(() => + var options = new SourceFileAnalyzerOptions() { - var options = new TypeDeclarationAnalyzerOptions() + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Models", + SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.Events", + ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), + ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), + ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/_/", + ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/_/", + ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/_/", + ThrowOnNotFoundRequestModelClassCodeFiles = true, + ThrowOnNotFoundResponseModelClassCodeFiles = true, + ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, + ThrowOnNotFoundWebhookEventClassCodeFiles = true, + ThrowOnNotFoundRequestModelSerializationSampleFiles = true, + ThrowOnNotFoundResponseModelSerializationSampleFiles = true, + ThrowOnNotFoundWebhookEventSerializationSampleFiles = true + }; + new SourceFileAnalyzer(options) + .AddRule((_, _, cur) => { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", - SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi", - SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Events", - ThrowOnNotFoundRequestModelTypes = true, - ThrowOnNotFoundResponseModelTypes = true, - ThrowOnNotFoundExecutingExtensionTypes = true, - ThrowOnNotFoundWebhookEventTypes = true - }; - new TypeDeclarationAnalyzer(options).AssertNoIssues(); - })), - - () => Assert.Null(Record.Exception(() => + if (cur.ContentKind != SourceFileContentKinds.ExecutingExtensionClassCode || + cur.FileKind != SourceFileKinds.CSharp) + return; + + using FileStream stream = cur.FileInfo.Open(FileMode.Open, FileAccess.Read); + using TextReader streamReader = new StreamReader(stream); + SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(streamReader.ReadToEnd()).WithFilePath(cur.FileInfo.FullName); + CompilationUnitSyntax syntaxRootNode = syntaxTree.GetCompilationUnitRoot(); + MethodDeclarationSyntax[] syntaxMethodDeclarationNodes = syntaxRootNode.Members + .Where(s => SourceFileCodeSyntaxKinds.BaseNamespaceDeclaration.Contains(s.Kind())) + .OfType() + .SelectMany(s => s.Members + .Where(s => s.IsKind(SyntaxKind.ClassDeclaration)) + .OfType() + .Where(s => s.Identifier.ToFullString().Contains("ExecuteLegacy")) // 仅扫描旧版 API + ) + .SelectMany(s => s.Members + .Where(s => s.IsKind(SyntaxKind.MethodDeclaration)) + .OfType() + ) + .Where(s => + { + string methodName = s.Identifier.ToFullString().Trim(); + return methodName.StartsWith("Execute") && + methodName.EndsWith("Async"); + }) + .ToArray(); + foreach (MethodDeclarationSyntax syntaxMethodDeclarationNode in syntaxMethodDeclarationNodes) + { + string methodName = syntaxMethodDeclarationNode.Identifier.ToFullString().Trim(); + + ExecutingMethodUrlPathSegmentsSyntaxWalker syntaxWalker = new ExecutingMethodUrlPathSegmentsSyntaxWalker(); + syntaxWalker.Reset().Visit(syntaxMethodDeclarationNode); + + string[] urlPathSegments1 = syntaxWalker.Result1 ?? Array.Empty(); + string[] urlPathSegments2 = syntaxWalker.Result2 ?? Array.Empty(); + for (int i = 0, len = Math.Max(urlPathSegments1.Length, urlPathSegments1.Length); i < len; i++) + { + string? s1 = urlPathSegments1.Length > i ? urlPathSegments1[i] : null; + string? s2 = urlPathSegments2.Length > i ? urlPathSegments2[i] : null; + if (!string.Equals(s1, s2)) + throw new AnalysisException($"文件 \"{cur.FileInfo.FullName}\"下的函数 \"{methodName}\" 应是一个 API 接口方法、且适配旧版入口点,但其 URL 路径的代码实现存在冲突。(Expected: \"{"/" + string.Join("/", urlPathSegments1)}\", Actual: \"{"/" + string.Join("/", urlPathSegments2)}\")"); + } + } + }) + .AssertNoIssues(); + })); + } + + private void CodeAnalyze_ExtendedSDK_OpenApi() + { + Assert.Null(Record.Exception(() => + { + var options = new TypeDeclarationAnalyzerOptions() { - string workdir = Environment.CurrentDirectory; - string projdir = Path.Combine(workdir, "../../../../../"); + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", + SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi", + SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Events", + ThrowOnNotFoundRequestModelTypes = true, + ThrowOnNotFoundResponseModelTypes = true, + ThrowOnNotFoundExecutingExtensionTypes = true, + ThrowOnNotFoundWebhookEventTypes = true + }; + new TypeDeclarationAnalyzer(options).AssertNoIssues(); + })); - var options = new SourceFileAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppOpenApiClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", - SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Events", - ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), - ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/OpenApi/Models/", - ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/OpenApi/Models/", - ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/OpenApi/Extensions/", - ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/OpenApi/Events/", - ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), - ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/OpenApi/", - ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/OpenApi/", - ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/OpenApi/", - ThrowOnNotFoundRequestModelClassCodeFiles = true, - ThrowOnNotFoundResponseModelClassCodeFiles = true, - ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, - ThrowOnNotFoundWebhookEventClassCodeFiles = true, - ThrowOnNotFoundRequestModelSerializationSampleFiles = true, - ThrowOnNotFoundResponseModelSerializationSampleFiles = true, - ThrowOnNotFoundWebhookEventSerializationSampleFiles = true - }; - new SourceFileAnalyzer(options).AssertNoIssues(); - })) - ); + Assert.Null(Record.Exception(() => + { + string workdir = Environment.CurrentDirectory; + string projdir = Path.Combine(workdir, "../../../../../"); - Assert.Multiple( - () => Assert.Null(Record.Exception(() => + var options = new SourceFileAnalyzerOptions() { - var options = new TypeDeclarationAnalyzerOptions() + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppOpenApiClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Models", + SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi.Events", + ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), + ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/OpenApi/Models/", + ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/OpenApi/Models/", + ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/OpenApi/Extensions/", + ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/OpenApi/Events/", + ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), + ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/OpenApi/", + ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/OpenApi/", + ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/OpenApi/", + ThrowOnNotFoundRequestModelClassCodeFiles = true, + ThrowOnNotFoundResponseModelClassCodeFiles = true, + ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, + ThrowOnNotFoundWebhookEventClassCodeFiles = true, + ThrowOnNotFoundRequestModelSerializationSampleFiles = true, + ThrowOnNotFoundResponseModelSerializationSampleFiles = true, + ThrowOnNotFoundWebhookEventSerializationSampleFiles = true + }; + new SourceFileAnalyzer(options) + .AddRule((_, _, cur) => { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppProductApiClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", - SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi", - SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Events", - ThrowOnNotFoundRequestModelTypes = true, - ThrowOnNotFoundResponseModelTypes = true, - ThrowOnNotFoundExecutingExtensionTypes = true, - ThrowOnNotFoundWebhookEventTypes = true - }; - new TypeDeclarationAnalyzer(options).AssertNoIssues(); - })), - - () => Assert.Null(Record.Exception(() => + if (cur.ContentKind != SourceFileContentKinds.ExecutingExtensionClassCode || + cur.FileKind != SourceFileKinds.CSharp) + return; + + using FileStream stream = cur.FileInfo.Open(FileMode.Open, FileAccess.Read); + using TextReader streamReader = new StreamReader(stream); + SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(streamReader.ReadToEnd()).WithFilePath(cur.FileInfo.FullName); + CompilationUnitSyntax syntaxRootNode = syntaxTree.GetCompilationUnitRoot(); + MethodDeclarationSyntax[] syntaxMethodDeclarationNodes = syntaxRootNode.Members + .Where(s => SourceFileCodeSyntaxKinds.BaseNamespaceDeclaration.Contains(s.Kind())) + .OfType() + .SelectMany(s => s.Members + .Where(s => s.IsKind(SyntaxKind.ClassDeclaration)) + .OfType() + .Where(s => s.Identifier.ToFullString().Contains("ExecuteLegacy")) // 仅扫描旧版 API + ) + .SelectMany(s => s.Members + .Where(s => s.IsKind(SyntaxKind.MethodDeclaration)) + .OfType() + ) + .Where(s => + { + string methodName = s.Identifier.ToFullString().Trim(); + return methodName.StartsWith("Execute") && + methodName.EndsWith("Async"); + }) + .ToArray(); + foreach (MethodDeclarationSyntax syntaxMethodDeclarationNode in syntaxMethodDeclarationNodes) + { + string methodName = syntaxMethodDeclarationNode.Identifier.ToFullString().Trim(); + + ExecutingMethodUrlPathSegmentsSyntaxWalker syntaxWalker = new ExecutingMethodUrlPathSegmentsSyntaxWalker(); + syntaxWalker.Reset().Visit(syntaxMethodDeclarationNode); + + string[] urlPathSegments1 = syntaxWalker.Result1 ?? Array.Empty(); + string[] urlPathSegments2 = syntaxWalker.Result2 ?? Array.Empty(); + for (int i = 0, len = Math.Max(urlPathSegments1.Length, urlPathSegments1.Length); i < len; i++) + { + string? s1 = urlPathSegments1.Length > i ? urlPathSegments1[i] : null; + string? s2 = urlPathSegments2.Length > i ? urlPathSegments2[i] : null; + if (!string.Equals(s1, s2)) + throw new AnalysisException($"文件 \"{cur.FileInfo.FullName}\"下的函数 \"{methodName}\" 应是一个 API 接口方法、且适配旧版入口点,但其 URL 路径的代码实现存在冲突。(Expected: \"{"/" + string.Join("/", urlPathSegments1)}\", Actual: \"{"/" + string.Join("/", urlPathSegments2)}\")"); + } + } + }) + .AssertNoIssues(); + })); + } + + private void CodeAnalyze_ExtendedSDK_ProductApi() + { + Assert.Null(Record.Exception(() => + { + var options = new TypeDeclarationAnalyzerOptions() { - string workdir = Environment.CurrentDirectory; - string projdir = Path.Combine(workdir, "../../../../../"); + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppProductApiClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", + SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi", + SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Events", + ThrowOnNotFoundRequestModelTypes = true, + ThrowOnNotFoundResponseModelTypes = true, + ThrowOnNotFoundExecutingExtensionTypes = true, + ThrowOnNotFoundWebhookEventTypes = true + }; + new TypeDeclarationAnalyzer(options).AssertNoIssues(); + })); - var options = new SourceFileAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppProductApiClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", - SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Events", - ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), - ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/ProductApi/Models/", - ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/ProductApi/Models/", - ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/ProductApi/Extensions/", - ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/ProductApi/Events/", - ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), - ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/ProductApi/", - ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/ProductApi/", - ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/ProductApi/", - ThrowOnNotFoundRequestModelClassCodeFiles = true, - ThrowOnNotFoundResponseModelClassCodeFiles = true, - ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, - ThrowOnNotFoundWebhookEventClassCodeFiles = true, - ThrowOnNotFoundRequestModelSerializationSampleFiles = true, - ThrowOnNotFoundResponseModelSerializationSampleFiles = true, - ThrowOnNotFoundWebhookEventSerializationSampleFiles = true - }; - new SourceFileAnalyzer(options).AssertNoIssues(); - })) - ); + Assert.Null(Record.Exception(() => + { + string workdir = Environment.CurrentDirectory; + string projdir = Path.Combine(workdir, "../../../../../"); - Assert.Multiple( - () => Assert.Null(Record.Exception(() => + var options = new SourceFileAnalyzerOptions() { - var options = new TypeDeclarationAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppRoleApiClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", - SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi", - ThrowOnNotFoundRequestModelTypes = true, - ThrowOnNotFoundResponseModelTypes = true, - ThrowOnNotFoundExecutingExtensionTypes = true - }; - new TypeDeclarationAnalyzer(options).AssertNoIssues(); - })), - - () => Assert.Null(Record.Exception(() => + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppProductApiClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Models", + SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi.Events", + ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), + ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/ProductApi/Models/", + ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/ProductApi/Models/", + ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/ProductApi/Extensions/", + ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/ProductApi/Events/", + ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), + ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/ProductApi/", + ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/ProductApi/", + ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/ProductApi/", + ThrowOnNotFoundRequestModelClassCodeFiles = true, + ThrowOnNotFoundResponseModelClassCodeFiles = true, + ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, + ThrowOnNotFoundWebhookEventClassCodeFiles = true, + ThrowOnNotFoundRequestModelSerializationSampleFiles = true, + ThrowOnNotFoundResponseModelSerializationSampleFiles = true, + ThrowOnNotFoundWebhookEventSerializationSampleFiles = true + }; + new SourceFileAnalyzer(options).AssertNoIssues(); + })); + } + + private void CodeAnalyze_ExtendedSDK_RoleApi() + { + Assert.Null(Record.Exception(() => + { + var options = new TypeDeclarationAnalyzerOptions() { - string workdir = Environment.CurrentDirectory; - string projdir = Path.Combine(workdir, "../../../../../"); + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppRoleApiClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", + SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi", + ThrowOnNotFoundRequestModelTypes = true, + ThrowOnNotFoundResponseModelTypes = true, + ThrowOnNotFoundExecutingExtensionTypes = true + }; + new TypeDeclarationAnalyzer(options).AssertNoIssues(); + })); - var options = new SourceFileAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppRoleApiClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", - ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), - ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/RoleApi/Models/", - ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/RoleApi/Models/", - ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/RoleApi/Extensions/", - ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/RoleApi/Events/", - ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), - ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/RoleApi/", - ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/RoleApi/", - ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/RoleApi/", - ThrowOnNotFoundRequestModelClassCodeFiles = true, - ThrowOnNotFoundResponseModelClassCodeFiles = true, - ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, - ThrowOnNotFoundRequestModelSerializationSampleFiles = true, - ThrowOnNotFoundResponseModelSerializationSampleFiles = true - }; - new SourceFileAnalyzer(options).AssertNoIssues(); - })) - ); + Assert.Null(Record.Exception(() => + { + string workdir = Environment.CurrentDirectory; + string projdir = Path.Combine(workdir, "../../../../../"); - Assert.Multiple( - () => Assert.Null(Record.Exception(() => + var options = new SourceFileAnalyzerOptions() { - var options = new TypeDeclarationAnalyzerOptions() - { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppWebcastClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", - SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast", - ThrowOnNotFoundRequestModelTypes = true, - ThrowOnNotFoundResponseModelTypes = true, - ThrowOnNotFoundExecutingExtensionTypes = true - }; - new TypeDeclarationAnalyzer(options).AssertNoIssues(); - })), - - () => Assert.Null(Record.Exception(() => + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppRoleApiClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi.Models", + ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), + ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/RoleApi/Models/", + ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/RoleApi/Models/", + ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/RoleApi/Extensions/", + ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/RoleApi/Events/", + ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), + ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/RoleApi/", + ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/RoleApi/", + ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/RoleApi/", + ThrowOnNotFoundRequestModelClassCodeFiles = true, + ThrowOnNotFoundResponseModelClassCodeFiles = true, + ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, + ThrowOnNotFoundRequestModelSerializationSampleFiles = true, + ThrowOnNotFoundResponseModelSerializationSampleFiles = true + }; + new SourceFileAnalyzer(options).AssertNoIssues(); + })); + } + + private void CodeAnalyze_ExtendedSDK_Webcast() + { + Assert.Null(Record.Exception(() => + { + var options = new TypeDeclarationAnalyzerOptions() + { + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppWebcastClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", + SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast", + 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() { - string workdir = Environment.CurrentDirectory; - string projdir = Path.Combine(workdir, "../../../../../"); + SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppWebcastClient))!, + SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", + SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", + ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), + ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/Webcast/Models/", + ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/Webcast/Models/", + ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/Webcast/Extensions/", + ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/Webcast/Events/", + ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), + ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/Webcast/", + ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/Webcast/", + ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/Webcast/", + ThrowOnNotFoundRequestModelClassCodeFiles = true, + ThrowOnNotFoundResponseModelClassCodeFiles = true, + ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, + ThrowOnNotFoundRequestModelSerializationSampleFiles = true, + ThrowOnNotFoundResponseModelSerializationSampleFiles = true + }; + new SourceFileAnalyzer(options).AssertNoIssues(); + })); + } + + private class ExecutingMethodUrlPathSegmentsSyntaxWalker : CSharpSyntaxWalker + { + public string[]? Result1 { get; private set; } - var options = new SourceFileAnalyzerOptions() + public string[]? Result2 { get; private set; } + + public ExecutingMethodUrlPathSegmentsSyntaxWalker Reset() + { + Result1 = null; + Result2 = null; + return this; + } + + public override void VisitInvocationExpression(InvocationExpressionSyntax node) + { + if (node.Expression is MemberAccessExpressionSyntax memberAccessExpressionSyntaxNode) + { + if (node.ToFullString().Contains("CreateFlurlRequest") && node.ArgumentList?.Arguments.Count >= 3) { - SdkAssembly = Assembly.GetAssembly(typeof(DouyinMicroAppWebcastClient))!, - SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", - SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models", - ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.ByteDance.MicroApp/"), - ProjectSourceRequestModelClassCodeSubDirectory = "ExtendedSDK/Webcast/Models/", - ProjectSourceResponseModelClassCodeSubDirectory = "ExtendedSDK/Webcast/Models/", - ProjectSourceExecutingExtensionClassCodeSubDirectory = "ExtendedSDK/Webcast/Extensions/", - ProjectSourceWebhookEventClassCodeSubDirectory = "ExtendedSDK/Webcast/Events/", - ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/"), - ProjectTestRequestModelSerializationSampleSubDirectory = "ModelSamples/Webcast/", - ProjectTestResponseModelSerializationSampleSubDirectory = "ModelSamples/Webcast/", - ProjectTestWebhookEventSerializationSampleSubDirectory = "EventSamples/Webcast/", - ThrowOnNotFoundRequestModelClassCodeFiles = true, - ThrowOnNotFoundResponseModelClassCodeFiles = true, - ThrowOnNotFoundExecutingExtensionClassCodeFiles = true, - ThrowOnNotFoundRequestModelSerializationSampleFiles = true, - ThrowOnNotFoundResponseModelSerializationSampleFiles = true - }; - new SourceFileAnalyzer(options).AssertNoIssues(); - })) - ); + string arg1 = node.ArgumentList.Arguments[0].ToFullString(); + string arg2 = node.ArgumentList.Arguments[1].ToFullString(); + if (arg1 is not null && arg2.Contains(nameof(HttpMethod))) + { + Result1 ??= node.ArgumentList.Arguments + .Skip(2) + .Select(s => FormatArgument(s.ToFullString())) + .ToArray(); + } + } + else if (node.ToFullString().Contains("WithUrl") && node.ArgumentList?.Arguments.Count >= 1) + { + string arg1 = node.ArgumentList.Arguments[0].ToFullString(); + if (arg1 is not null && arg1.Contains("AppendPathSegments")) + { + Result2 ??= node.ArgumentList.Arguments[0].Expression + .ChildNodes() + .Where(s => s.IsKind(SyntaxKind.InvocationExpression)) + .OfType() + .SelectMany(s => s.ChildNodes() + .Where(s => s.IsKind(SyntaxKind.ArgumentList)) + .OfType() + ) + .SelectMany(s => s.ChildNodes() + .Where(s => s.IsKind(SyntaxKind.Argument)) + .OfType() + ) + .Select(s => FormatArgument(s.ToFullString())) + .ToArray(); + } + } + } + + base.VisitInvocationExpression(node); + } + + private string FormatArgument(string arg) + { + if (arg.StartsWith("\"") && arg.EndsWith("\"")) + return arg.Trim('\"'); + + if (arg == "string.Empty") + return string.Empty; + + return "{" + arg + "}"; + } } } }