feat(wxapi): 新增代商家管理小程序上传提审素材接口

This commit is contained in:
Fu Diwei
2022-10-26 23:32:08 +08:00
parent e096912d51
commit 792d57e22e
4 changed files with 93 additions and 0 deletions

View File

@@ -995,6 +995,40 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync<Models.WxaGetVersionInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/uploadmedia 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/code-management/uploadMediaToCodeAudit.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaUploadMediaResponse> ExecuteWxaUploadMediaAsync(this WechatApiClient client, Models.WxaUploadMediaRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
if (request.FileName == null)
{
request.FileName = Guid.NewGuid().ToString("N").ToLower();
}
if (request.FileContentType == null)
{
request.FileContentType =
Utilities.FileNameToContentTypeMapper.GetContentTypeForImage(request.FileName!) ??
Utilities.FileNameToContentTypeMapper.GetContentTypeForVideo(request.FileName!) ??
"application/octet-stream";
}
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "uploadmedia")
.SetQueryParam("access_token", request.AccessToken);
using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, formDataName: "media");
return await client.SendRequestAsync<Models.WxaUploadMediaResponse>(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken);
}
#endregion
#region Record

View File

@@ -0,0 +1,31 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/uploadmedia 接口的请求。</para>
/// </summary>
public class WxaUploadMediaRequest : WechatApiRequest, IInferable<WxaUploadMediaRequest, WxaUploadMediaResponse>
{
/// <summary>
/// 获取或设置文件字节数组。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public byte[] FileBytes { get; set; } = Array.Empty<byte>();
/// <summary>
/// 获取或设置文件名。如果不指定将由系统自动生成。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? FileName { get; set; }
/// <summary>
/// 获取或设置文件 Conent-Type。如果不指定将由系统自动生成。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? FileContentType { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/uploadmedia 接口的响应。</para>
/// </summary>
public class WxaUploadMediaResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置媒体文件类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public string Type { get; set; } = default!;
/// <summary>
/// 获取或设置媒体文件标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_id")]
[System.Text.Json.Serialization.JsonPropertyName("media_id")]
public string MediaId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,6 @@
{
"errcode": 0,
"errmsg": "ok",
"type": "image",
"mediaid": "xxxxxxxxxxxxxxxxx"
}