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 } }