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 WechatWorkClientExecuteCgibinUserExtensions
{
///
/// 异步调用 [POST] /cgi-bin/user/create 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90195
/// REF: https://developer.work.weixin.qq.com/document/path/90331
/// REF: https://developer.work.weixin.qq.com/document/path/90814
///
///
///
///
///
public static async Task ExecuteCgibinUserCreateAsync(this WechatWorkClient client, Models.CgibinUserCreateRequest 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", "user", "create")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/get 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90196
/// REF: https://developer.work.weixin.qq.com/document/path/90332
/// REF: https://developer.work.weixin.qq.com/document/path/90815
///
///
///
///
///
public static async Task ExecuteCgibinUserGetAsync(this WechatWorkClient client, Models.CgibinUserGetRequest 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", "user", "get")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("userid", request.UserId);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/update 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90197
/// REF: https://developer.work.weixin.qq.com/document/path/90333
/// REF: https://developer.work.weixin.qq.com/document/path/90816
///
///
///
///
///
public static async Task ExecuteCgibinUserUpdateAsync(this WechatWorkClient client, Models.CgibinUserUpdateRequest 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", "user", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/delete 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90198
/// REF: https://developer.work.weixin.qq.com/document/path/90334
/// REF: https://developer.work.weixin.qq.com/document/path/90817
///
///
///
///
///
public static async Task ExecuteCgibinUserDeleteAsync(this WechatWorkClient client, Models.CgibinUserDeleteRequest 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", "user", "delete")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("userid", request.UserId);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/batchdelete 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90199
/// REF: https://developer.work.weixin.qq.com/document/path/90335
/// REF: https://developer.work.weixin.qq.com/document/path/90818
///
///
///
///
///
public static async Task ExecuteCgibinUserBatchDeleteAsync(this WechatWorkClient client, Models.CgibinUserBatchDeleteRequest 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", "user", "batchdelete")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/simplelist 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90200
/// REF: https://developer.work.weixin.qq.com/document/path/90336
/// REF: https://developer.work.weixin.qq.com/document/path/90819
///
///
///
///
///
public static async Task ExecuteCgibinUserSimpleListAsync(this WechatWorkClient client, Models.CgibinUserSimpleListRequest 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", "user", "simplelist")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("department_id", request.DepartmentId);
if (request.RequireFetchChild != null)
flurlReq.SetQueryParam("fetch_child", request.RequireFetchChild.Value ? 1 : 0);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/list 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90201
/// REF: https://developer.work.weixin.qq.com/document/path/90337
/// REF: https://developer.work.weixin.qq.com/document/path/90820
///
///
///
///
///
public static async Task ExecuteCgibinUserListAsync(this WechatWorkClient client, Models.CgibinUserListRequest 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", "user", "list")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("department_id", request.DepartmentId);
if (request.RequireFetchChild != null)
flurlReq.SetQueryParam("fetch_child", request.RequireFetchChild.Value ? 1 : 0);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/convert_to_openid 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90202
/// REF: https://developer.work.weixin.qq.com/document/path/90338
/// REF: https://developer.work.weixin.qq.com/document/path/90821
///
///
///
///
///
public static async Task ExecuteCgibinUserConvertToOpenIdAsync(this WechatWorkClient client, Models.CgibinUserConvertToOpenIdRequest 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", "user", "convert_to_openid")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/convert_to_userid 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90202
/// REF: https://developer.work.weixin.qq.com/document/path/90338
/// REF: https://developer.work.weixin.qq.com/document/path/90821
///
///
///
///
///
public static async Task ExecuteCgibinUserConvertToUserIdAsync(this WechatWorkClient client, Models.CgibinUserConvertToUserIdRequest 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", "user", "convert_to_userid")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/getuserinfo 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/91023
/// REF: https://developer.work.weixin.qq.com/document/path/91437
/// REF: https://developer.work.weixin.qq.com/document/path/91707
/// REF: https://developer.work.weixin.qq.com/document/path/91711
///
///
///
///
///
public static async Task ExecuteCgibinUserGetUserInfoAsync(this WechatWorkClient client, Models.CgibinUserGetUserInfoRequest 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", "user", "getuserinfo")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("code", request.Code);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/getuserid 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/91693
///
///
///
///
///
public static async Task ExecuteCgibinUserGetUserIdAsync(this WechatWorkClient client, Models.CgibinUserGetUserIdRequest 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", "user", "getuserid")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/get_active_stat 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/92714
///
///
///
///
///
public static async Task ExecuteCgibinUserGetActiveStatAsync(this WechatWorkClient client, Models.CgibinUserGetActiveStatRequest 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", "user", "get_active_stat")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/list_selected_ticket_user 接口。
/// REF: https://work.weixin.qq.com/api/doc/90001/90143/94894
///
///
///
///
///
public static async Task ExecuteCgibinUserListSelectedTicketUserAsync(this WechatWorkClient client, Models.CgibinUserListSelectedTicketUserRequest 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", "user", "list_selected_ticket_user")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("selected_ticket", request.SelectedTicket);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/list_id 接口。
/// REF: https://developer.work.weixin.qq.com/document/40856
///
///
///
///
///
public static async Task ExecuteCgibinUserListIdAsync(this WechatWorkClient client, Models.CgibinUserListIdRequest 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", "user", "list_id")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#region Auth
///
/// 异步调用 [GET] /cgi-bin/user/authsucc 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/90203
/// REF: https://developer.work.weixin.qq.com/document/path/90339
/// REF: https://developer.work.weixin.qq.com/document/path/90822
///
///
///
///
///
public static async Task ExecuteCgibinUserAuthSuccessAsync(this WechatWorkClient client, Models.CgibinUserAuthSuccessRequest 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", "user", "authsucc")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("userid", request.UserId);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /cgi-bin/user/tfa_succ 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/99500
///
///
///
///
///
public static async Task ExecuteCgibinUserTAFSuccessAsync(this WechatWorkClient client, Models.CgibinUserTAFSuccessRequest 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", "user", "tfa_succ")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/list_member_auth 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/94513
///
///
///
///
///
public static async Task ExecuteCgibinUserListMemberAuthAsync(this WechatWorkClient client, Models.CgibinUserListMemberAuthRequest 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", "user", "list_member_auth")
.SetQueryParam("access_token", request.AccessToken);
if (request.Cursor != null)
flurlReq.SetQueryParam("cursor", request.Cursor);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /cgi-bin/user/check_member_auth 接口。
/// REF: https://developer.work.weixin.qq.com/document/path/94514
///
///
///
///
///
public static async Task ExecuteCgibinUserCheckMemberAuthAsync(this WechatWorkClient client, Models.CgibinUserCheckMemberAuthRequest 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", "user", "check_member_auth")
.SetQueryParam("access_token", request.AccessToken)
.SetQueryParam("open_userid", request.OpenUserId);
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}