27 lines
919 B
C#
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; }
|
|
}
|
|
} |