using System.Net; using Kurisu.RemoteCall.Abstractions; using Newtonsoft.Json; namespace Dlhis.Dormitory.Api; public class DormitoryRemoteCallResultHandler : IRemoteCallResultHandler { public TResult Handle(HttpStatusCode statusCode, string responseBody) { ApiResult apiResult = JsonConvert.DeserializeObject>(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 { public string Message { get; set; } public T Data { get; set; } public int Code { get; set; } } }