using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.Wechat.Ads { public static class WechatAdsClientExecuteAdGroupsExtensions { /// /// 异步调用 [POST] /adgroups/add 接口。 /// /// /// /// /// public static async Task ExecuteAdGroupsAddAsync(this WechatAdsClient client, Models.AdGroupsAddRequest 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 .CreateRequest(HttpMethod.Post, "adgroups", "add") .SetOptions(request) .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /adgroups/update 接口。 /// /// /// /// /// public static async Task ExecuteAdGroupsUpdateAsync(this WechatAdsClient client, Models.AdGroupsUpdateRequest 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 .CreateRequest(HttpMethod.Post, "adgroups", "update") .SetOptions(request) .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /adgroups/get 接口。 /// /// /// /// /// public static async Task ExecuteAdGroupsGetAsync(this WechatAdsClient client, Models.AdGroupsGetRequest 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 .CreateRequest(HttpMethod.Get, "adgroups", "get") .SetOptions(request) .SetQueryParam("access_token", request.AccessToken); if (request.AdGroupId.HasValue) flurlReq.SetQueryParam("adgroup_id", request.AdGroupId.Value); if (request.Filters != null && request.Filters.Any()) flurlReq.SetQueryParam("filtering", client.FlurlJsonSerializer.Serialize(request.Filters)); if (request.PageSize.HasValue) flurlReq.SetQueryParam("page_size", request.PageSize.Value); if (request.Page.HasValue) flurlReq.SetQueryParam("page", request.Page.Value); return await client.SendRequestAsync(flurlReq, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /adgroups/delete 接口。 /// /// /// /// /// public static async Task ExecuteAdGroupsDeleteAsync(this WechatAdsClient client, Models.AdGroupsDeleteRequest 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 .CreateRequest(HttpMethod.Post, "adgroups", "delete") .SetOptions(request) .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } }