Files
jinko.yikatong/Src/Dlhis.Dormitory.Api/DormitoryRemoteCallResultHandler.cs
2025-10-09 14:31:59 +08:00

27 lines
919 B
C#

using System.Net;
using Kurisu.RemoteCall.Abstractions;
using Newtonsoft.Json;
namespace Dlhis.Dormitory.Api;
public class DormitoryRemoteCallResultHandler : IRemoteCallResultHandler
{
public TResult Handle<TResult>(HttpStatusCode statusCode, string responseBody)
{
ApiResult<TResult> apiResult = JsonConvert.DeserializeObject<ApiResult<TResult>>(responseBody);
if ((statusCode < HttpStatusCode.OK ? 0 : (statusCode <= (HttpStatusCode)299 ? 1 : 0)) != 0 && apiResult.Code == 200)
return apiResult.Data;
if (!string.IsNullOrEmpty(apiResult?.Message))
throw new Exception(apiResult.Message);
throw new HttpRequestException($"{statusCode.ToString()} {((int)statusCode).ToString()}");
}
internal class ApiResult<T>
{
public string Message { get; set; }
public T Data { get; set; }
public int Code { get; set; }
}
}