feat(work): 封装部分企业微信接口

This commit is contained in:
Fu Diwei
2021-06-04 01:10:23 +08:00
parent 47181c2bc7
commit be687f5ffb
140 changed files with 8486 additions and 3 deletions

View File

@@ -0,0 +1,102 @@
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 WechatWorkClientExecuteCgibinCardInvoiceExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/card/invoice/reimburse/getinvoiceinfo 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90284 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90420 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCardInvoiceReimburseGetInvoiceInfoResponse> ExecuteCgibinCardInvoiceReimburseGetInvoiceInfoAsync(this WechatWorkClient client, Models.CgibinCardInvoiceReimburseGetInvoiceInfoRequest 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, "cgi-bin", "card", "invoice", "reimburse", "getinvoiceinfo")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestAsync<Models.CgibinCardInvoiceReimburseGetInvoiceInfoResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/card/invoice/reimburse/updateinvoicestatus 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90285 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90421 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCardInvoiceReimburseUpdateInvoiceStatusResponse> ExecuteCgibinCardInvoiceReimburseUpdateInvoiceStatusAsync(this WechatWorkClient client, Models.CgibinCardInvoiceReimburseUpdateInvoiceStatusRequest 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, "cgi-bin", "card", "invoice", "reimburse", "updateinvoicestatus")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestAsync<Models.CgibinCardInvoiceReimburseUpdateInvoiceStatusResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/card/invoice/reimburse/updatestatusbatch 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90286 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90422 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCardInvoiceReimburseUpdateStatusBatchResponse> ExecuteCgibinCardInvoiceReimburseUpdateStatusBatchAsync(this WechatWorkClient client, Models.CgibinCardInvoiceReimburseUpdateStatusBatchRequest 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, "cgi-bin", "card", "invoice", "reimburse", "updatestatusbatch")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestAsync<Models.CgibinCardInvoiceReimburseUpdateStatusBatchResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/card/invoice/reimburse/getinvoiceinfobatch 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90287 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/90423 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCardInvoiceReimburseGetInvoiceBatchResponse> ExecuteCgibinCardInvoiceReimburseGetInvoiceBatchAsync(this WechatWorkClient client, Models.CgibinCardInvoiceReimburseGetInvoiceBatchRequest 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, "cgi-bin", "card", "invoice", "reimburse", "getinvoiceinfobatch")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestAsync<Models.CgibinCardInvoiceReimburseGetInvoiceBatchResponse>(flurlReq, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,188 @@
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 WechatWorkClientExecuteCgibinCheckinExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/getcorpcheckinoption 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93384 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinGetCorpCheckinOptionResponse> ExecuteCgibinCheckinGetCorpCheckinOptionAsync(this WechatWorkClient client, Models.CgibinCheckinGetCorpCheckinOptionRequest 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, "cgi-bin", "checkin", "getcorpcheckinoption")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinGetCorpCheckinOptionResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/getcheckinoption 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90263 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94204 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinGetCheckinOptionResponse> ExecuteCgibinCheckinGetCheckinOptionAsync(this WechatWorkClient client, Models.CgibinCheckinGetCheckinOptionRequest 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, "cgi-bin", "checkin", "getcheckinoption")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinGetCheckinOptionResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/getcheckindata 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/90262 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94205 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinGetCheckinDataResponse> ExecuteCgibinCheckinGetCheckinDataAsync(this WechatWorkClient client, Models.CgibinCheckinGetCheckinDataRequest 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, "cgi-bin", "checkin", "getcheckindata")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinGetCheckinDataResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/getcheckin_daydata 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93374 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94206 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinGetCheckinDayDataResponse> ExecuteCgibinCheckinGetCheckinDayDataAsync(this WechatWorkClient client, Models.CgibinCheckinGetCheckinDayDataRequest 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, "cgi-bin", "checkin", "getcheckin_daydata")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinGetCheckinDayDataResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/getcheckin_monthdata 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93387 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94207 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinGetCheckinMonthDataResponse> ExecuteCgibinCheckinGetCheckinMonthDataAsync(this WechatWorkClient client, Models.CgibinCheckinGetCheckinMonthDataRequest 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, "cgi-bin", "checkin", "getcheckin_monthdata")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinGetCheckinMonthDataResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/getcheckinschedulist 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93380 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94208 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinGetCheckinScheduleListResponse> ExecuteCgibinCheckinGetCheckinScheduleListAsync(this WechatWorkClient client, Models.CgibinCheckinGetCheckinScheduleListRequest 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, "cgi-bin", "checkin", "getcheckinschedulist")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinGetCheckinScheduleListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/setcheckinschedulist 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93385 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94209 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinSetCheckinScheduleListResponse> ExecuteCgibinCheckinSetCheckinScheduleListAsync(this WechatWorkClient client, Models.CgibinCheckinSetCheckinScheduleListRequest 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, "cgi-bin", "checkin", "setcheckinschedulist")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinSetCheckinScheduleListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/checkin/addcheckinuserface 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93378 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinCheckinAddCheckinUserFaceResponse> ExecuteCgibinCheckinAddCheckinUserFaceAsync(this WechatWorkClient client, Models.CgibinCheckinAddCheckinUserFaceRequest 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, "cgi-bin", "checkin", "addcheckinuserface")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinCheckinAddCheckinUserFaceResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,35 @@
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 WechatWorkClientExecuteCgibinDialogExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/dial/get_dial_record 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93662 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinDialogGetDialogRecordResponse> ExecuteCgibinDialogGetDialogRecordAsync(this WechatWorkClient client, Models.CgibinDialogGetDialogRecordRequest 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, "cgi-bin", "dial", "get_dial_record")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinDialogGetDialogRecordResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,213 @@
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 WechatWorkClientExecuteCgibinLivingExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93637 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93717 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingCreateResponse> ExecuteCgibinLivingCreateAsync(this WechatWorkClient client, Models.CgibinLivingCreateRequest 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, "cgi-bin", "living", "create")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingCreateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/modify 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93640 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93720 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingModifyResponse> ExecuteCgibinLivingModifyAsync(this WechatWorkClient client, Models.CgibinLivingModifyRequest 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, "cgi-bin", "living", "modify")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingModifyResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/cancel 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93638 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93718 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingCancelResponse> ExecuteCgibinLivingCancelAsync(this WechatWorkClient client, Models.CgibinLivingCancelRequest 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, "cgi-bin", "living", "cancel")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingCancelResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/delete_replay_data 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93874 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93719 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingDeleteReplayDataResponse> ExecuteCgibinLivingDeleteReplayDataAsync(this WechatWorkClient client, Models.CgibinLivingDeleteReplayDataRequest 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, "cgi-bin", "living", "delete_replay_data")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingDeleteReplayDataResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /cgi-bin/living/get_living_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93635 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93715 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingGetLivingInfoResponse> ExecuteCgibinLivingGetLivingInfoAsync(this WechatWorkClient client, Models.CgibinLivingGetLivingInfoRequest 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, "cgi-bin", "living", "get_living_info")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("livingid", request.LivingId);
return await client.SendRequestAsync<Models.CgibinLivingGetLivingInfoResponse>(flurlReq, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/get_living_code 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93641 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93721 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingGetLivingCodeResponse> ExecuteCgibinLivingGetLivingCodeAsync(this WechatWorkClient client, Models.CgibinLivingGetLivingCodeRequest 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, "cgi-bin", "living", "get_living_code")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingGetLivingCodeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/get_living_share_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94442 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94578 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingGetLivingShareInfoResponse> ExecuteCgibinLivingGetLivingShareInfoAsync(this WechatWorkClient client, Models.CgibinLivingGetLivingShareInfoRequest 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, "cgi-bin", "living", "get_living_share_info")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingGetLivingShareInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/get_user_all_livingid 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93634 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93714 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingGetUserAllLivingIdResponse> ExecuteCgibinLivingGetUserAllLivingIdAsync(this WechatWorkClient client, Models.CgibinLivingGetUserAllLivingIdRequest 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, "cgi-bin", "living", "get_user_all_livingid")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingGetUserAllLivingIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/living/get_watch_stat 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93636 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93716 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinLivingGetWatchStatResponse> ExecuteCgibinLivingGetWatchStatAsync(this WechatWorkClient client, Models.CgibinLivingGetWatchStatRequest 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, "cgi-bin", "living", "get_watch_stat")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinLivingGetWatchStatResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,124 @@
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 WechatWorkClientExecuteCgibinMeetingExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93627 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93706 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingCreateResponse> ExecuteCgibinMeetingCreateAsync(this WechatWorkClient client, Models.CgibinMeetingCreateRequest 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, "cgi-bin", "meeting", "create")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingCreateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93631 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93710 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingUpdateResponse> ExecuteCgibinMeetingUpdateAsync(this WechatWorkClient client, Models.CgibinMeetingUpdateRequest 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, "cgi-bin", "meeting", "update")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/cancel 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93630 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93709 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingCancelResponse> ExecuteCgibinMeetingCancelAsync(this WechatWorkClient client, Models.CgibinMeetingCancelRequest 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, "cgi-bin", "meeting", "cancel")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingCancelResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/get_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93629 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93708 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingGetInfoResponse> ExecuteCgibinMeetingGetInfoAsync(this WechatWorkClient client, Models.CgibinMeetingGetInfoRequest 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, "cgi-bin", "meeting", "get_info")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingGetInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/meeting/get_user_meetingid 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93628 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93707 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinMeetingGetUserMeetingIdResponse> ExecuteCgibinMeetingGetUserMeetingIdAsync(this WechatWorkClient client, Models.CgibinMeetingGetUserMeetingIdRequest 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, "cgi-bin", "meeting", "get_user_meetingid")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinMeetingGetUserMeetingIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,367 @@
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 WechatWorkClientExecuteCgibinOAExtensions
{
#region MeetingRoom
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/add 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93619 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomAddResponse> ExecuteCgibinOAMeetingRoomAddAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomAddRequest 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, "cgi-bin", "oa", "meetingroom", "add")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93619 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomListResponse> ExecuteCgibinOAMeetingRoomListAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomListRequest 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, "cgi-bin", "oa", "meetingroom", "list")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/edit 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93619 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomEditResponse> ExecuteCgibinOAMeetingRoomEditAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomEditRequest 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, "cgi-bin", "oa", "meetingroom", "edit")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomEditResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/del 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93619 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomDeleteResponse> ExecuteCgibinOAMeetingRoomDeleteAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomDeleteRequest 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, "cgi-bin", "oa", "meetingroom", "del")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region MeetingRoomBook
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/get_booking_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93620 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomGetBookingInfoResponse> ExecuteCgibinOAMeetingRoomGetBookingInfoAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomGetBookingInfoRequest 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, "cgi-bin", "oa", "meetingroom", "get_booking_info")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomGetBookingInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/book 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93620 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomBookResponse> ExecuteCgibinOAMeetingRoomBookAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomBookRequest 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, "cgi-bin", "oa", "meetingroom", "book")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomBookResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/meetingroom/cancel_book 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93620 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAMeetingRoomCancelBookResponse> ExecuteCgibinOAMeetingRoomCancelBookAsync(this WechatWorkClient client, Models.CgibinOAMeetingRoomCancelBookRequest 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, "cgi-bin", "oa", "meetingroom", "cancel_book")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAMeetingRoomCancelBookResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#endregion
#region Calendar
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/calendar/add 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93647 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93702 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOACalendarAddResponse> ExecuteCgibinOACalendarAddAsync(this WechatWorkClient client, Models.CgibinOACalendarAddRequest 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, "cgi-bin", "oa", "calendar", "add")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOACalendarAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/calendar/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93647 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93702 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOACalendarUpdateResponse> ExecuteCgibinOACalendarUpdateAsync(this WechatWorkClient client, Models.CgibinOACalendarUpdateRequest 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, "cgi-bin", "oa", "calendar", "update")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOACalendarUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/calendar/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93647 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93702 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOACalendarGetResponse> ExecuteCgibinOACalendarGetAsync(this WechatWorkClient client, Models.CgibinOACalendarGetRequest 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, "cgi-bin", "oa", "calendar", "get")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOACalendarGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/calendar/del 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93647 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93702 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOACalendarDeleteResponse> ExecuteCgibinOACalendarDeleteAsync(this WechatWorkClient client, Models.CgibinOACalendarDeleteRequest 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, "cgi-bin", "oa", "calendar", "del")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOACalendarDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Schedule
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/schedule/add 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93648 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93703 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAScheduleAddResponse> ExecuteCgibinOAScheduleAddAsync(this WechatWorkClient client, Models.CgibinOAScheduleAddRequest 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, "cgi-bin", "oa", "schedule", "add")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAScheduleAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/schedule/update 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93648 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93703 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAScheduleUpdateResponse> ExecuteCgibinOAScheduleUpdateAsync(this WechatWorkClient client, Models.CgibinOAScheduleUpdateRequest 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, "cgi-bin", "oa", "schedule", "update")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAScheduleUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/schedule/get 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93648 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93703 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAScheduleGetResponse> ExecuteCgibinOAScheduleGetAsync(this WechatWorkClient client, Models.CgibinOAScheduleGetRequest 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, "cgi-bin", "oa", "schedule", "get")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAScheduleGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/schedule/get_by_calendar 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93648 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93703 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAScheduleGetByCalendarResponse> ExecuteCgibinOAScheduleGetByCalendarAsync(this WechatWorkClient client, Models.CgibinOAScheduleGetByCalendarRequest 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, "cgi-bin", "oa", "schedule", "get_by_calendar")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAScheduleGetByCalendarResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/oa/schedule/del 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93648 </para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90001/90143/93703 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinOAScheduleDeleteResponse> ExecuteCgibinOAScheduleDeleteAsync(this WechatWorkClient client, Models.CgibinOAScheduleDeleteRequest 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, "cgi-bin", "oa", "schedule", "del")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinOAScheduleDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -0,0 +1,56 @@
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 WechatWorkClientExecuteCgibinPSTNCCExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/pstncc/call 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91627 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinPSTNCCCallResponse> ExecuteCgibinPSTNCCCallAsync(this WechatWorkClient client, Models.CgibinPSTNCCCallRequest 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, "cgi-bin", "pstncc", "call")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinPSTNCCCallResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/pstncc/getstates 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/91628 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinPSTNCCGetStatesResponse> ExecuteCgibinPSTNCCGetStatesAsync(this WechatWorkClient client, Models.CgibinPSTNCCGetStatesRequest 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, "cgi-bin", "pstncc", "getstates")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinPSTNCCGetStatesResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@@ -0,0 +1,442 @@
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 WechatWorkClientExecuteCgibinWebDriveExtensions
{
#region Space
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93655 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceCreateResponse> ExecuteCgibinWebDriveSpaceCreateAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceCreateRequest 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, "cgi-bin", "wedrive", "space_create")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceCreateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_rename 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93655 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceRenameResponse> ExecuteCgibinWebDriveSpaceRenameAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceRenameRequest 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, "cgi-bin", "wedrive", "space_rename")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceRenameResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_dismiss 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93655 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceDismissResponse> ExecuteCgibinWebDriveSpaceDismissAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceDismissRequest 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, "cgi-bin", "wedrive", "space_dismiss")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceDismissResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93655 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceInfoResponse> ExecuteCgibinWebDriveSpaceInfoAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceInfoRequest 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, "cgi-bin", "wedrive", "space_info")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_setting 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93656 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceSettingResponse> ExecuteCgibinWebDriveSpaceSettingAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceSettingRequest 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, "cgi-bin", "wedrive", "space_setting")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceSettingResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_share 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93656 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceShareResponse> ExecuteCgibinWebDriveSpaceShareAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceShareRequest 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, "cgi-bin", "wedrive", "space_share")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceShareResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region SpaceACL
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_acl_add 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93656 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceACLAddResponse> ExecuteCgibinWebDriveSpaceACLAddAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceACLAddRequest 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, "cgi-bin", "wedrive", "space_acl_add")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceACLAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/space_acl_del 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93656 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveSpaceACLDeleteResponse> ExecuteCgibinWebDriveSpaceACLDeleteAsync(this WechatWorkClient client, Models.CgibinWebDriveSpaceACLDeleteRequest 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, "cgi-bin", "wedrive", "space_acl_del")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveSpaceACLDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region File
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_list 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileListResponse> ExecuteCgibinWebDriveFileListAsync(this WechatWorkClient client, Models.CgibinWebDriveFileListRequest 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, "cgi-bin", "wedrive", "file_list")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_upload 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileUploadResponse> ExecuteCgibinWebDriveFileUploadAsync(this WechatWorkClient client, Models.CgibinWebDriveFileUploadRequest 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, "cgi-bin", "wedrive", "file_upload")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileUploadResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_download 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileDownloadResponse> ExecuteCgibinWebDriveFileDownloadAsync(this WechatWorkClient client, Models.CgibinWebDriveFileDownloadRequest 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, "cgi-bin", "wedrive", "file_download")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileDownloadResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_create 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileCreateResponse> ExecuteCgibinWebDriveFileCreateAsync(this WechatWorkClient client, Models.CgibinWebDriveFileCreateRequest 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, "cgi-bin", "wedrive", "file_create")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileCreateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_rename 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileRenameResponse> ExecuteCgibinWebDriveFileRenameAsync(this WechatWorkClient client, Models.CgibinWebDriveFileRenameRequest 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, "cgi-bin", "wedrive", "file_rename")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileRenameResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_move 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileMoveResponse> ExecuteCgibinWebDriveFileMoveAsync(this WechatWorkClient client, Models.CgibinWebDriveFileMoveRequest 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, "cgi-bin", "wedrive", "file_move")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileMoveResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_delete 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileDeleteResponse> ExecuteCgibinWebDriveFileDeleteAsync(this WechatWorkClient client, Models.CgibinWebDriveFileDeleteRequest 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, "cgi-bin", "wedrive", "file_delete")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_info 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93657 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileInfoResponse> ExecuteCgibinWebDriveFileInfoAsync(this WechatWorkClient client, Models.CgibinWebDriveFileInfoRequest 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, "cgi-bin", "wedrive", "file_info")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_setting 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93658 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileSettingResponse> ExecuteCgibinWebDriveFileSettingAsync(this WechatWorkClient client, Models.CgibinWebDriveFileSettingRequest 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, "cgi-bin", "wedrive", "file_setting")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileSettingResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_share 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93658 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileShareResponse> ExecuteCgibinWebDriveFileShareAsync(this WechatWorkClient client, Models.CgibinWebDriveFileShareRequest 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, "cgi-bin", "wedrive", "file_share")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileShareResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region FileACL
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_acl_add 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93658 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileACLAddResponse> ExecuteCgibinWebDriveFileACLAddAsync(this WechatWorkClient client, Models.CgibinWebDriveFileACLAddRequest 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, "cgi-bin", "wedrive", "file_acl_add")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileACLAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/wedrive/file_acl_del 接口。</para>
/// <para>REF: https://open.work.weixin.qq.com/api/doc/90000/90135/93658 </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinWebDriveFileACLDeleteResponse> ExecuteCgibinWebDriveFileACLDeleteAsync(this WechatWorkClient client, Models.CgibinWebDriveFileACLDeleteRequest 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, "cgi-bin", "wedrive", "file_acl_del")
.SetOptions(request)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.CgibinWebDriveFileACLDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}