using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Flurl; using Flurl.Http; namespace SKIT.FlurlHttpClient.Wechat.Work { public static class WechatWorkClientExecuteCgibinKfExtensions { #region Account /// /// 异步调用 [POST] /cgi-bin/kf/account/add 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94662 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94688 /// /// /// /// /// public static async Task ExecuteCgibinKfAccountAddAsync(this WechatWorkClient client, Models.CgibinKfAccountAddRequest 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, "cgi-bin", "kf", "account", "add") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /cgi-bin/kf/account/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94661 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94691 /// /// /// /// /// public static async Task ExecuteCgibinKfAccountListAsync(this WechatWorkClient client, Models.CgibinKfAccountListRequest 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, "cgi-bin", "kf", "account", "list") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/account/update 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94664 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94690 /// /// /// /// /// public static async Task ExecuteCgibinKfAccountUpdateAsync(this WechatWorkClient client, Models.CgibinKfAccountUpdateRequest 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, "cgi-bin", "kf", "account", "update") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/account/del 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94663 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94689 /// /// /// /// /// public static async Task ExecuteCgibinKfAccountDeleteAsync(this WechatWorkClient client, Models.CgibinKfAccountDeleteRequest 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, "cgi-bin", "kf", "account", "del") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/add_contact_way 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94665 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94692 /// /// /// /// /// public static async Task ExecuteCgibinKfAddContactWayAsync(this WechatWorkClient client, Models.CgibinKfAddContactWayRequest 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, "cgi-bin", "kf", "add_contact_way") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion #region Servicer /// /// 异步调用 [POST] /cgi-bin/kf/servicer/add 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94646 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94695 /// /// /// /// /// public static async Task ExecuteCgibinKfServicerAddAsync(this WechatWorkClient client, Models.CgibinKfServicerAddRequest 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, "cgi-bin", "kf", "servicer", "add") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/servicer/del 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94647 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94696 /// /// /// /// /// public static async Task ExecuteCgibinKfServicerDeleteAsync(this WechatWorkClient client, Models.CgibinKfServicerDeleteRequest 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, "cgi-bin", "kf", "servicer", "del") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /cgi-bin/kf/servicer/list 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94645 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94697 /// /// /// /// /// public static async Task ExecuteCgibinKfServicerListAsync(this WechatWorkClient client, Models.CgibinKfServicerListRequest 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, "cgi-bin", "kf", "servicer", "list") .SetQueryParam("access_token", request.AccessToken) .SetQueryParam("open_kfid", request.OpenKfId); return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); } #endregion #region ServiceState /// /// 异步调用 [POST] /cgi-bin/kf/service_state/get 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94669 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94698 /// /// /// /// /// public static async Task ExecuteCgibinKfServiceStateGetAsync(this WechatWorkClient client, Models.CgibinKfServiceStateGetRequest 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, "cgi-bin", "kf", "service_state", "get") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/service_state/trans 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94669 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94698 /// /// /// /// /// public static async Task ExecuteCgibinKfServiceStateTransferAsync(this WechatWorkClient client, Models.CgibinKfServiceStateTransferRequest 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, "cgi-bin", "kf", "service_state", "trans") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion #region Customer /// /// 异步调用 [GET] /cgi-bin/kf/customer/get_upgrade_service_config 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94674 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94702 /// /// /// /// /// public static async Task ExecuteCgibinKfCustomerGetUpgradeServiceConfigAsync(this WechatWorkClient client, Models.CgibinKfCustomerGetUpgradeServiceConfigRequest 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, "cgi-bin", "kf", "customer", "get_upgrade_service_config") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/customer/upgrade_service 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94674 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94702 /// /// /// /// /// public static async Task ExecuteCgibinKfCustomerUpgradeServiceAsync(this WechatWorkClient client, Models.CgibinKfCustomerUpgradeServiceRequest 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, "cgi-bin", "kf", "customer", "upgrade_service") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/customer/cancel_upgrade_service 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94674 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94702 /// /// /// /// /// public static async Task ExecuteCgibinKfCustomerCancelUpgradeServiceAsync(this WechatWorkClient client, Models.CgibinKfCustomerCancelUpgradeServiceRequest 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, "cgi-bin", "kf", "customer", "cancel_upgrade_service") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/customer/batchget 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95159 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95149 /// /// /// /// /// public static async Task ExecuteCgibinKfCustomerBatchGetAsync(this WechatWorkClient client, Models.CgibinKfCustomerBatchGetRequest 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, "cgi-bin", "kf", "customer", "batchget") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [GET] /cgi-bin/kf/get_corp_qualification 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/95153 /// /// /// /// /// public static async Task ExecuteCgibinKfGetCorpQualificationAsync(this WechatWorkClient client, Models.CgibinKfGetCorpQualificationRequest 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, "cgi-bin", "kf", "get_corp_qualification") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion /// /// 异步调用 [POST] /cgi-bin/kf/send_msg 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94677 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94700 /// /// /// /// /// public static async Task ExecuteCgibinKfSendMessageAsync(this WechatWorkClient client, Models.CgibinKfSendMessageRequest 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, "cgi-bin", "kf", "send_msg") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } /// /// 异步调用 [POST] /cgi-bin/kf/send_msg_on_event 接口。 /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/95122 /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94910 /// /// /// /// /// public static async Task ExecuteCgibinKfSendMessageOnEventAsync(this WechatWorkClient client, Models.CgibinKfSendMessageOnEventRequest 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, "cgi-bin", "kf", "send_msg_on_event") .SetQueryParam("access_token", request.AccessToken); return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } } }