Skip to content

Commit

Permalink
🐛 fix: fix HTTP status code parser #3
Browse files Browse the repository at this point in the history
  • Loading branch information
pnguyen215 committed May 26, 2024
1 parent 1514024 commit 8046ef7
Showing 1 changed file with 75 additions and 71 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.unify4j.model.builder;

import org.unify4j.common.Collection4j;
import org.unify4j.model.response.HttpResponse;

import java.util.Arrays;
Expand All @@ -16,79 +17,82 @@
* and an optional description or message.
*/
public class HttpStatusBuilder {
protected static final List<HttpResponse> statuses = Arrays.asList(
HttpStatusBuilder.CONTINUE,
HttpStatusBuilder.SWITCHING_PROTOCOLS,
HttpStatusBuilder.PROCESSING,
HttpStatusBuilder.OK,
HttpStatusBuilder.CREATED,
HttpStatusBuilder.ACCEPTED,
HttpStatusBuilder.NON_AUTHORITATIVE_INFORMATION,
HttpStatusBuilder.NO_CONTENT,
HttpStatusBuilder.RESET_CONTENT,
HttpStatusBuilder.PARTIAL_CONTENT,
HttpStatusBuilder.MULTI_STATUS,
HttpStatusBuilder.ALREADY_REPORTED,
HttpStatusBuilder.IM_USED,
HttpStatusBuilder.MULTIPLE_CHOICES,
HttpStatusBuilder.MOVED_PERMANENTLY,
HttpStatusBuilder.FOUND,
HttpStatusBuilder.SEE_OTHER,
HttpStatusBuilder.NOT_MODIFIED,
HttpStatusBuilder.USE_PROXY,
HttpStatusBuilder.RESERVED,
HttpStatusBuilder.TEMPORARY_REDIRECT,
HttpStatusBuilder.PERMANENT_REDIRECT,
HttpStatusBuilder.BAD_REQUEST,
HttpStatusBuilder.UNAUTHORIZED,
HttpStatusBuilder.PAYMENT_REQUIRED,
HttpStatusBuilder.FORBIDDEN,
HttpStatusBuilder.NOT_FOUND,
HttpStatusBuilder.METHOD_NOT_ALLOWED,
HttpStatusBuilder.NOT_ACCEPTABLE,
HttpStatusBuilder.PROXY_AUTHENTICATION_REQUIRED,
HttpStatusBuilder.REQUEST_TIMEOUT,
HttpStatusBuilder.CONFLICT,
HttpStatusBuilder.GONE,
HttpStatusBuilder.LENGTH_REQUIRED,
HttpStatusBuilder.PRECONDITION_FAILED,
HttpStatusBuilder.REQUEST_ENTITY_TOO_LARGE,
HttpStatusBuilder.REQUEST_URI_TOO_LONG,
HttpStatusBuilder.UNSUPPORTED_MEDIA_TYPE,
HttpStatusBuilder.REQUESTED_RANGE_NOT_SATISFIABLE,
HttpStatusBuilder.EXPECTATION_FAILED,
HttpStatusBuilder.IM_A_TEAPOT,
HttpStatusBuilder.ENHANCE_YOUR_CALM,
HttpStatusBuilder.UN_PROCESSABLE_ENTITY,
HttpStatusBuilder.LOCKED,
HttpStatusBuilder.FAILED_DEPENDENCY,
HttpStatusBuilder.UNORDERED_COLLECTION,
HttpStatusBuilder.UPGRADE_REQUIRED,
HttpStatusBuilder.PRECONDITION_REQUIRED,
HttpStatusBuilder.TOO_MANY_REQUESTS,
HttpStatusBuilder.REQUEST_HEADER_FIELDS_TOO_LARGE,
HttpStatusBuilder.NO_RESPONSE,
HttpStatusBuilder.RETRY_WITH,
HttpStatusBuilder.BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS,
HttpStatusBuilder.UNAVAILABLE_FOR_LEGAL_REASONS,
HttpStatusBuilder.CLIENT_CLOSED_REQUEST,
HttpStatusBuilder.INTERNAL_SERVER_ERROR,
HttpStatusBuilder.NOT_IMPLEMENTED,
HttpStatusBuilder.BAD_GATEWAY,
HttpStatusBuilder.SERVICE_UNAVAILABLE,
HttpStatusBuilder.GATEWAY_TIMEOUT,
HttpStatusBuilder.HTTP_VERSION_NOT_SUPPORTED,
HttpStatusBuilder.VARIANT_ALSO_NEGOTIATES,
HttpStatusBuilder.INSUFFICIENT_STORAGE,
HttpStatusBuilder.LOOP_DETECTED,
HttpStatusBuilder.BANDWIDTH_LIMIT_EXCEEDED,
HttpStatusBuilder.NOT_EXTENDED,
HttpStatusBuilder.NETWORK_AUTHENTICATION_REQUIRED,
HttpStatusBuilder.NETWORK_READ_TIMEOUT_ERROR,
HttpStatusBuilder.NETWORK_CONNECT_TIMEOUT_ERROR
);
protected static List<HttpResponse> statuses;

public static HttpResponse valueOf(int statusCode) {
if (Collection4j.isEmpty(statuses)) {
statuses = Arrays.asList(
HttpStatusBuilder.CONTINUE,
HttpStatusBuilder.SWITCHING_PROTOCOLS,
HttpStatusBuilder.PROCESSING,
HttpStatusBuilder.OK,
HttpStatusBuilder.CREATED,
HttpStatusBuilder.ACCEPTED,
HttpStatusBuilder.NON_AUTHORITATIVE_INFORMATION,
HttpStatusBuilder.NO_CONTENT,
HttpStatusBuilder.RESET_CONTENT,
HttpStatusBuilder.PARTIAL_CONTENT,
HttpStatusBuilder.MULTI_STATUS,
HttpStatusBuilder.ALREADY_REPORTED,
HttpStatusBuilder.IM_USED,
HttpStatusBuilder.MULTIPLE_CHOICES,
HttpStatusBuilder.MOVED_PERMANENTLY,
HttpStatusBuilder.FOUND,
HttpStatusBuilder.SEE_OTHER,
HttpStatusBuilder.NOT_MODIFIED,
HttpStatusBuilder.USE_PROXY,
HttpStatusBuilder.RESERVED,
HttpStatusBuilder.TEMPORARY_REDIRECT,
HttpStatusBuilder.PERMANENT_REDIRECT,
HttpStatusBuilder.BAD_REQUEST,
HttpStatusBuilder.UNAUTHORIZED,
HttpStatusBuilder.PAYMENT_REQUIRED,
HttpStatusBuilder.FORBIDDEN,
HttpStatusBuilder.NOT_FOUND,
HttpStatusBuilder.METHOD_NOT_ALLOWED,
HttpStatusBuilder.NOT_ACCEPTABLE,
HttpStatusBuilder.PROXY_AUTHENTICATION_REQUIRED,
HttpStatusBuilder.REQUEST_TIMEOUT,
HttpStatusBuilder.CONFLICT,
HttpStatusBuilder.GONE,
HttpStatusBuilder.LENGTH_REQUIRED,
HttpStatusBuilder.PRECONDITION_FAILED,
HttpStatusBuilder.REQUEST_ENTITY_TOO_LARGE,
HttpStatusBuilder.REQUEST_URI_TOO_LONG,
HttpStatusBuilder.UNSUPPORTED_MEDIA_TYPE,
HttpStatusBuilder.REQUESTED_RANGE_NOT_SATISFIABLE,
HttpStatusBuilder.EXPECTATION_FAILED,
HttpStatusBuilder.IM_A_TEAPOT,
HttpStatusBuilder.ENHANCE_YOUR_CALM,
HttpStatusBuilder.UN_PROCESSABLE_ENTITY,
HttpStatusBuilder.LOCKED,
HttpStatusBuilder.FAILED_DEPENDENCY,
HttpStatusBuilder.UNORDERED_COLLECTION,
HttpStatusBuilder.UPGRADE_REQUIRED,
HttpStatusBuilder.PRECONDITION_REQUIRED,
HttpStatusBuilder.TOO_MANY_REQUESTS,
HttpStatusBuilder.REQUEST_HEADER_FIELDS_TOO_LARGE,
HttpStatusBuilder.NO_RESPONSE,
HttpStatusBuilder.RETRY_WITH,
HttpStatusBuilder.BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS,
HttpStatusBuilder.UNAVAILABLE_FOR_LEGAL_REASONS,
HttpStatusBuilder.CLIENT_CLOSED_REQUEST,
HttpStatusBuilder.INTERNAL_SERVER_ERROR,
HttpStatusBuilder.NOT_IMPLEMENTED,
HttpStatusBuilder.BAD_GATEWAY,
HttpStatusBuilder.SERVICE_UNAVAILABLE,
HttpStatusBuilder.GATEWAY_TIMEOUT,
HttpStatusBuilder.HTTP_VERSION_NOT_SUPPORTED,
HttpStatusBuilder.VARIANT_ALSO_NEGOTIATES,
HttpStatusBuilder.INSUFFICIENT_STORAGE,
HttpStatusBuilder.LOOP_DETECTED,
HttpStatusBuilder.BANDWIDTH_LIMIT_EXCEEDED,
HttpStatusBuilder.NOT_EXTENDED,
HttpStatusBuilder.NETWORK_AUTHENTICATION_REQUIRED,
HttpStatusBuilder.NETWORK_READ_TIMEOUT_ERROR,
HttpStatusBuilder.NETWORK_CONNECT_TIMEOUT_ERROR
);
}
return statuses.stream().filter(e -> e.getCode() == statusCode).findFirst().orElse(new HttpResponse(-1, "unknown", "unknown", "out of HTTP status version"));
}

Expand Down

0 comments on commit 8046ef7

Please sign in to comment.