From f65c3606d4146d3e888039773266e108e8b00b7d Mon Sep 17 00:00:00 2001 From: yiyun Date: Thu, 9 Dec 2021 00:02:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(afdian.server):=20aPI=E6=96=87=E6=A1=A3,?= =?UTF-8?q?=20=E6=B3=A8=E9=87=8A=E5=AE=8C=E5=96=84,=20ResponseModel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Afdian.Server/Afdian.Server.csproj | 1 - .../Controllers/BadgeController.cs | 50 ++++++++++++++++--- .../BadgeCreateResponseModel.cs | 14 ++++++ src/Afdian.Server/Startup.cs | 14 +++++- 4 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 src/Afdian.Server/ResponseModels/BadgeCreateResponseModel.cs diff --git a/src/Afdian.Server/Afdian.Server.csproj b/src/Afdian.Server/Afdian.Server.csproj index 32682e5..63c34dd 100644 --- a/src/Afdian.Server/Afdian.Server.csproj +++ b/src/Afdian.Server/Afdian.Server.csproj @@ -35,7 +35,6 @@ - diff --git a/src/Afdian.Server/Controllers/BadgeController.cs b/src/Afdian.Server/Controllers/BadgeController.cs index a1899e4..5971f81 100644 --- a/src/Afdian.Server/Controllers/BadgeController.cs +++ b/src/Afdian.Server/Controllers/BadgeController.cs @@ -61,12 +61,22 @@ public async Task Badge([FromQuery] string badgeToken) /// /// 根据 Badge ID 获取 Badge /// - /// + /// + /// 在 README.md 中引用 爱发电 Badge: + /// `[![爱发电](https://afdian.moeci.com/{badgeId}/badge.svg)](https://afdian.net/{爱发电用户名})` + /// + /// 例如下方: + /// `[![爱发电](https://afdian.moeci.com/1/badge.svg)](https://afdian.net/@yiyun)` + /// + /// [![爱发电](https://afdian.moeci.com/1/badge.svg)](https://afdian.net/@yiyun) + /// + /// Badge ID /// /// [Route("/{id}/badge.svg")] [HttpGet] - [Produces("image/svg+xml;charset=utf-8")] + [ProducesResponseType(StatusCodes.Status200OK), Produces("image/svg+xml;charset=utf-8")] + [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task Badge([FromRoute] int id, [FromQuery] BadgeRequestModel badgeRequestModel) { // TODO: 根据 id 查询数据库 @@ -84,18 +94,26 @@ public async Task Badge([FromRoute] int id, [FromQuery] BadgeRequ /// /// 创建 Badge, 返回 Badge ID /// - /// - /// + /// + /// 爱发电获取 user_id,token: + /// [https://afdian.net/dashboard/dev](https://afdian.net/dashboard/dev) + /// + /// 爱发电 user_id + /// 爱发电 API Token /// 返回 Badge ID [HttpPost] [Produces("application/json")] - public async Task Create(string userId, string token) + public async Task Create(string userId, string token) { + ResponseModels.BadgeCreateResponseModel responseModel = new ResponseModels.BadgeCreateResponseModel(); AfdianClient afdianClient = new AfdianClient(userId, token); var jsonStr = await afdianClient.PingAsync(); if (!jsonStr.Contains("200")) { - return Content("不合法的 user_id, token"); + responseModel.code = -1; + responseModel.message = "user_id, token 效验不通过"; + + return responseModel; } Badge badge = new Badge() { @@ -107,18 +125,34 @@ public async Task Create(string userId, string token) await _applicationDbContext.Badge.AddAsync(badge); await _applicationDbContext.SaveChangesAsync(); - return Content(badge.Id.ToString()); + responseModel.code = 1; + responseModel.message = "成功"; + responseModel.badgeId = badge.Id; + + return responseModel; } /// /// 显式根据 user_id,token 获取 Badge /// + /// + /// 爱发电获取 user_id,token: + /// [https://afdian.net/dashboard/dev](https://afdian.net/dashboard/dev) + /// + /// 在 README.md 中引用 爱发电 Badge: + /// `[![爱发电](https://afdian.moeci.com/{badgeId}/badge.svg)](https://afdian.net/{爱发电用户名})` + /// + /// 例如下方: + /// `[![爱发电](https://afdian.moeci.com/1/badge.svg)](https://afdian.net/@yiyun)` + /// + /// [![爱发电](https://afdian.moeci.com/1/badge.svg)](https://afdian.net/@yiyun) + /// /// /// /// [Route("/{userId}/{token}/badge.svg")] [HttpGet] - [ProducesResponseType(StatusCodes.Status404NotFound)] + [ProducesResponseType(StatusCodes.Status200OK)] [Produces("image/svg+xml;charset=utf-8")] public async Task Badge([FromRoute] string userId, [FromRoute] string token) { diff --git a/src/Afdian.Server/ResponseModels/BadgeCreateResponseModel.cs b/src/Afdian.Server/ResponseModels/BadgeCreateResponseModel.cs new file mode 100644 index 0000000..9e96250 --- /dev/null +++ b/src/Afdian.Server/ResponseModels/BadgeCreateResponseModel.cs @@ -0,0 +1,14 @@ +namespace Afdian.Server.ResponseModels +{ + public class BadgeCreateResponseModel + { + public int code { get; set; } + + public string message { get; set; } + + /// + /// Badge ID + /// + public int badgeId { get; set; } + } +} diff --git a/src/Afdian.Server/Startup.cs b/src/Afdian.Server/Startup.cs index 5fcdd54..17a8c56 100644 --- a/src/Afdian.Server/Startup.cs +++ b/src/Afdian.Server/Startup.cs @@ -52,12 +52,24 @@ public void ConfigureServices(IServiceCollection services) services.AddEndpointsApiExplorer(); services.AddSwaggerGen(options => { + // https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-6.0&tabs=visual-studio options.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Version = "v1", Title = "爱发电 Badge", Description = "爱发电 Badge - 由 Afdian.Server 构建", - TermsOfService = new Uri("https://github.com/yiyungent/Afidan.Sdk") + TermsOfService = new Uri("https://github.com/yiyungent/Afdian.Sdk"), + Contact = new Microsoft.OpenApi.Models.OpenApiContact + { + Name = "Contact", + Url = new Uri("https://github.com/yiyungent/Afdian.Sdk/issues") + }, + License = new Microsoft.OpenApi.Models.OpenApiLicense + { + Name = "MIT License", + Url = new Uri("https://github.com/yiyungent/Afdian.Sdk/blob/main/LICENSE") + }, + //Extensions = new Microsoft.OpenApi.Models.OpenApiExtensibleDictionary() { } }); var xmlFilename = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";