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 WechatAdsClientExecuteAdCreativesExtensions { /// /// 异步调用 [POST] /adcreatives/add 接口。 /// /// /// /// /// public static async Task ExecuteAdCreativesAddAsync(this WechatAdsClient client, Models.AdCreativesAddRequest 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(request, HttpMethod.Post, "adcreatives", "add") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /adcreatives/update 接口。 /// /// /// /// /// public static async Task ExecuteAdCreativesUpdateAsync(this WechatAdsClient client, Models.AdCreativesUpdateRequest 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(request, HttpMethod.Post, "adcreatives", "update") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /adcreatives/get 接口。 /// /// /// /// /// public static async Task ExecuteAdCreativesGetAsync(this WechatAdsClient client, Models.AdCreativesGetRequest 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(request, HttpMethod.Get, "adcreatives", "get") .SetQueryParam("access_token", request.AccessToken); if (request.AdCreativeId.HasValue) flurlReq.SetQueryParam("adcreative_id", request.AdCreativeId.Value); if (request.Filters != null && request.Filters.Any()) flurlReq.SetQueryParam("filtering", client.JsonSerializer.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.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } }