package cn.dreampie.common.http;
import cn.dreampie.common.Constant;
import cn.dreampie.common.http.result.HttpStatus;
import cn.dreampie.common.util.properties.Prop;
import cn.dreampie.common.util.properties.Proper;
import cn.dreampie.log.Logger;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Created by Dreampie on 2016/11/9.
*/
public class HttpMessage {
private final static Logger logger = Logger.getLogger(Constant.class);
public static final String OK = "ok";
public static final String CREATED = "created";
public static final String ACCEPTED = "accepted";
public static final String NOT_MODIFIED = "notModified";
public static final String BAD_REQUEST = "badRequest";
public static final String UNAUTHORIZED = "unauthorized";
public static final String FORBIDDEN = "forbidden";
public static final String NOT_FOUND = "notFound";
public static final String API_NOT_FOUND = "apiNotFound";
public static final String NOT_ACCEPTABLE = "notAcceptable";
public static final String METHOD_NOT_ALLOWED = "methodNotAllowed";
public static final String UNSUPPORTED_MEDIA_TYPE = "unsupportedMediaType";
public static final String UNPROCESSABLE_ENTITY = "unprocessableEntity";
public static final String GONE = "gone";
public static final String INTERNAL_SERVER_ERROR = "internalServerError";
public static final String SERVICE_UNAVAILABLE = "serviceUnavailable";
public static final String TOO_MANY_REQUESTS = "tooManyRequests";
public static final String REQUEST_ENTITY_TOO_LARGE = "requestEntityTooLarge";
//logic error
public static final String HEADER_NOT_MATCH = "headerNotMatch";
public static final String FILE_UPLOAD_ERROR = "fileUploadError";
public static final String FILE_DOWNLOAD_ERROR = "fileDownloadError";
public static final String CORS_FAILED = "CORSFailed";
public static final String USERNAME_NOT_FOUND = "usernameNotFound";
public static final String PASSWORD_ERROR = "passwordError";
private static final Map<String, String> messages = new HashMap<String, String>();
private static final Map<String, HttpStatus> status = new HashMap<String, HttpStatus>() {{
put(OK, HttpStatus.OK);
put(CREATED, HttpStatus.CREATED);
put(ACCEPTED, HttpStatus.ACCEPTED);
put(NOT_MODIFIED, HttpStatus.NOT_MODIFIED);
put(BAD_REQUEST, HttpStatus.BAD_REQUEST);
put(UNAUTHORIZED, HttpStatus.UNAUTHORIZED);
put(FORBIDDEN, HttpStatus.FORBIDDEN);
put(NOT_FOUND, HttpStatus.NOT_FOUND);
put(API_NOT_FOUND, HttpStatus.NOT_FOUND);
put(NOT_ACCEPTABLE, HttpStatus.NOT_ACCEPTABLE);
put(METHOD_NOT_ALLOWED, HttpStatus.METHOD_NOT_ALLOWED);
put(UNSUPPORTED_MEDIA_TYPE, HttpStatus.UNSUPPORTED_MEDIA_TYPE);
put(UNPROCESSABLE_ENTITY, HttpStatus.UNPROCESSABLE_ENTITY);
put(GONE, HttpStatus.GONE);
put(INTERNAL_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR);
put(SERVICE_UNAVAILABLE, HttpStatus.SERVICE_UNAVAILABLE);
put(TOO_MANY_REQUESTS, HttpStatus.TOO_MANY_REQUESTS);
put(REQUEST_ENTITY_TOO_LARGE, HttpStatus.REQUEST_ENTITY_TOO_LARGE);
//logic error
put(HEADER_NOT_MATCH, HttpStatus.NOT_ACCEPTABLE);
put(FILE_UPLOAD_ERROR, HttpStatus.INTERNAL_SERVER_ERROR);
put(FILE_DOWNLOAD_ERROR, HttpStatus.INTERNAL_SERVER_ERROR);
put(CORS_FAILED, HttpStatus.FORBIDDEN);
put(USERNAME_NOT_FOUND, HttpStatus.UNPROCESSABLE_ENTITY);
put(PASSWORD_ERROR, HttpStatus.UNPROCESSABLE_ENTITY);
}};
static {
Prop constants = null;
try {
constants = Proper.use("application.properties");
} catch (Exception e) {
logger.warn(e.getMessage());
}
messages.put(OK, "执行成功.");
messages.put(CREATED, "创建成功.");
messages.put(ACCEPTED, "接收并异步处理.");
messages.put(NOT_MODIFIED, "没有更新.");
messages.put(BAD_REQUEST, "客户端请求错误.");
messages.put(UNAUTHORIZED, "未登录.");
messages.put(FORBIDDEN, "拒绝访问.");
messages.put(NOT_FOUND, "访问资源不存在.");
messages.put(API_NOT_FOUND, "访问接口不存在.");
messages.put(NOT_ACCEPTABLE, "不能接受的请求.");
messages.put(METHOD_NOT_ALLOWED, "请求方法不支持.");
messages.put(UNSUPPORTED_MEDIA_TYPE, "请求数据类型不支持.");
messages.put(UNPROCESSABLE_ENTITY, "请求参数错误.");
messages.put(GONE, "接口已经失效.");
messages.put(INTERNAL_SERVER_ERROR, "服务器错误.");
messages.put(SERVICE_UNAVAILABLE, "服务不可访问.");
messages.put(TOO_MANY_REQUESTS, "请求次数超过限制.");
messages.put(REQUEST_ENTITY_TOO_LARGE, "请求内容超过大小限制.");
//logic error
messages.put(HEADER_NOT_MATCH, "不支持该请求的头信息.");
messages.put(FILE_UPLOAD_ERROR, "文件上传失败.");
messages.put(FILE_DOWNLOAD_ERROR, "文件下载失败.");
messages.put(CORS_FAILED, "跨域请求失败.");
messages.put(USERNAME_NOT_FOUND, "用户名不存在.");
messages.put(PASSWORD_ERROR, "密码错误.");
if (constants != null) {
Set<String> keys = constants.getKeys();
for (String key : keys) {
if (key.startsWith("http.")) {
String useKey = key.split("\\.")[2];
if (key.startsWith("http.status.")) {
HttpStatus oldStatus = status.get(useKey);
if (oldStatus != null) {
status.put(useKey, HttpStatus.havingCode(constants.getInt(key, oldStatus.getCode())));
} else {
status.put(useKey, HttpStatus.havingCode(constants.getInt(key)));
}
}
if (key.startsWith("http.messages.")) {
messages.put(useKey, constants.get(key, messages.get(key)));
}
}
}
}
}
public static String getMessage(String key) {
return messages.get(key);
}
public static HttpStatus getStatus(String key) {
return status.get(key);
}
}