package com.arms.util.response;
/*
* @author Dongmin.lee
* @since 2023-03-13
* @version 23.03.13
* @see
* Copyright (C) 2007 by 313 DEV GRP, Inc - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited
* Proprietary and confidential
* Written by 313 developer group <313@313.co.kr>, December 2010
*
*/
import com.arms.util.errors.response.ErrorCode;
import lombok.Getter;
import lombok.ToString;
import org.springframework.http.HttpStatus;
/**
* CommonResponse은 Response의 결과를 리턴해주는 클래스이다..
*
* @author MZC01-DJSHIN
* @version 1.0, 작업 내용
* 2022-08-25 정의
* 작성일 2022-08-25
**/
@Getter
public class CommonResponse {
private CommonResponse(){
//유틸 클래스로서 외부 생성자 호출 금지 코드 입니다.
}
public static ApiResult success(T response) {
return new ApiResult<>(true, response, null);
}
public static ApiResult error(Throwable throwable, HttpStatus status) {
return new ApiResult<>(false, null, new ApiError(throwable, status));
}
public static ApiResult error(String message, HttpStatus status) {
return new ApiResult<>(false, null, new ApiError(message, status));
}
public static ApiResult error(ErrorCode errorCode, HttpStatus status) {
return new ApiResult<>(false, null, new ApiError(errorCode, status));
}
public static ApiResult error(String message, ErrorCode errorCode, HttpStatus status) {
return new ApiResult<>(false, null, new ApiError(message, errorCode, status));
}
@ToString
public static class ApiError {
private final String message;
private String errorCode;
private final int status;
ApiError(Throwable throwable, HttpStatus status) {
this(throwable.getMessage(), status);
}
ApiError(String message, HttpStatus status) {
this.message = message;
this.status = status.value();
}
ApiError(ErrorCode errorCode, HttpStatus status) {
this.message = errorCode.getErrorMsg();
this.errorCode = errorCode.name();
this.status = status.value();
}
ApiError(String message, ErrorCode errorCode, HttpStatus status) {
this.message = message;
this.errorCode = errorCode.name();
this.status = status.value();
}
public String getMessage() {
return message;
}
public int getStatus() {
return status;
}
public String getErrorCode() {
return errorCode;
}
}
@ToString
public static class ApiResult {
private final boolean success;
private final T response;
private final ApiError error;
private ApiResult(boolean success, T response, ApiError error) {
this.success = success;
this.response = response;
this.error = error;
}
public boolean isSuccess() {
return success;
}
public ApiError getError() {
return error;
}
public T getResponse() {
return response;
}
}
}