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 WechatWorkClientExecuteCgibinExmailExtensions
{
#region App
///
/// 异步调用 [POST] /cgi-bin/exmail/app/compose_send 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/97445
/// REF: https://developer.work.weixin.qq.com/document/path/97854
/// REF: https://developer.work.weixin.qq.com/document/path/97855
///
///
///
///
///
public static async Task ExecuteCgibinExmailAppComposeSendAsync(this WechatWorkClient client, Models.CgibinExmailAppComposeSendRequest 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", "exmail", "app", "compose_send")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Group
///
/// 异步调用 [POST] /cgi-bin/exmail/group/create 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailGroupCreateAsync(this WechatWorkClient client, Models.CgibinExmailGroupCreateRequest 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", "exmail", "group", "create")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/exmail/group/update 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailGroupUpdateAsync(this WechatWorkClient client, Models.CgibinExmailGroupUpdateRequest 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", "exmail", "group", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/exmail/group/delete 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailGroupDeleteAsync(this WechatWorkClient client, Models.CgibinExmailGroupDeleteRequest 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", "exmail", "group", "delete")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/exmail/group/search 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailGroupSearchAsync(this WechatWorkClient client, Models.CgibinExmailGroupSearchRequest 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", "exmail", "group", "search")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("fuzzy", request.IsFuzzy ? 1 : 0);
if (request.GroupId != null)
flurlReq.SetQueryParam("groupid", request.GroupId);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/exmail/group/get 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailGroupGetAsync(this WechatWorkClient client, Models.CgibinExmailGroupGetRequest 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", "exmail", "group", "get")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("groupid", request.GroupId);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region PublicMail
///
/// 异步调用 [POST] /cgi-bin/exmail/publicmail/create 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95511
///
///
///
///
///
public static async Task ExecuteCgibinExmailPublicMailCreateAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailCreateRequest 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", "exmail", "publicmail", "create")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/exmail/publicmail/update 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95511
///
///
///
///
///
public static async Task ExecuteCgibinExmailPublicMailUpdateAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailUpdateRequest 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", "exmail", "publicmail", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/exmail/publicmail/delete 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95511
///
///
///
///
///
public static async Task ExecuteCgibinExmailPublicMailDeleteAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailDeleteRequest 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", "exmail", "publicmail", "delete")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/exmail/publicmail/search 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailPublicMailSearchAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailSearchRequest 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", "exmail", "publicmail", "search")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("fuzzy", request.IsFuzzy ? 1 : 0);
if (request.EmailOrName != null)
flurlReq.SetQueryParam("email", request.EmailOrName);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/exmail/publicmail/get 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95510
///
///
///
///
///
public static async Task ExecuteCgibinExmailPublicMailGetAsync(this WechatWorkClient client, Models.CgibinExmailPublicMailGetRequest 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", "exmail", "publicmail", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Account
///
/// 异步调用 [POST] /cgi-bin/exmail/account/act_email 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95512
///
///
///
///
///
public static async Task ExecuteCgibinExmailAccountActiveEmailAsync(this WechatWorkClient client, Models.CgibinExmailAccountActiveEmailRequest 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", "exmail", "account", "act_email")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region UserOption
///
/// 异步调用 [POST] /cgi-bin/exmail/useroption/get 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95513
///
///
///
///
///
public static async Task ExecuteCgibinExmailUserOptionGetAsync(this WechatWorkClient client, Models.CgibinExmailUserOptionGetRequest 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", "exmail", "useroption", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/exmail/useroption/update 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95513
///
///
///
///
///
public static async Task ExecuteCgibinExmailUserOptionUpdateAsync(this WechatWorkClient client, Models.CgibinExmailUserOptionUpdateRequest 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", "exmail", "useroption", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Mail
///
/// 异步调用 [POST] /cgi-bin/exmail/mail/get_newcount 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/95514
///
///
///
///
///
public static async Task ExecuteCgibinExmailMailGetNewCountAsync(this WechatWorkClient client, Models.CgibinExmailMailGetNewCountRequest 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", "exmail", "mail", "get_newcount")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}