using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.Wechat.Work { public static class WechatWorkClientExecuteCgibinMenuExtensions { /// /// 异步调用 [POST] /cgi-bin/menu/create 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90231 /// /// /// /// /// public static async Task ExecuteCgibinMenuCreateAsync(this WechatWorkClient client, Models.CgibinMenuCreateRequest request, CancellationToken cancellationToken = default) { if (client is null) throw new ArgumentNullException(nameof(client)); if (request is null) throw new ArgumentNullException(nameof(request)); if (request.AgentId == null) request.AgentId = client.Credentials.AgentId; IFlurlRequest flurlReq = client .CreateRequest(request, HttpMethod.Post, "cgi-bin", "menu", "create") .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("agentid", request.AgentId); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /cgi-bin/menu/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90232 /// /// /// /// /// public static async Task ExecuteCgibinMenuGetAsync(this WechatWorkClient client, Models.CgibinMenuGetRequest request, CancellationToken cancellationToken = default) { if (client is null) throw new ArgumentNullException(nameof(client)); if (request is null) throw new ArgumentNullException(nameof(request)); if (request.AgentId == null) request.AgentId = client.Credentials.AgentId; IFlurlRequest flurlReq = client .CreateRequest(request, HttpMethod.Get, "cgi-bin", "menu", "get") .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("agentid", request.AgentId); return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /cgi-bin/menu/delete 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90233 /// /// /// /// /// public static async Task ExecuteCgibinMenuDeleteAsync(this WechatWorkClient client, Models.CgibinMenuDeleteRequest request, CancellationToken cancellationToken = default) { if (client is null) throw new ArgumentNullException(nameof(client)); if (request is null) throw new ArgumentNullException(nameof(request)); if (request.AgentId == null) request.AgentId = client.Credentials.AgentId; IFlurlRequest flurlReq = client .CreateRequest(request, HttpMethod.Get, "cgi-bin", "menu", "delete") .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("agentid", request.AgentId); return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); } } }