/* * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.restconf.api; import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; /** * A simple DTO definitiong an HTTP Status Code. Integer * values used here are assigned through the * IANA Status Code Registry. */ @Beta @NonNullByDefault public final class HttpStatusCode { /** * 200 OK. */ public static final HttpStatusCode OK = new HttpStatusCode(200, "OK"); /** * 201 Created. */ public static final HttpStatusCode CREATED = new HttpStatusCode(201, "Created"); /** * 202 Accepted. */ public static final HttpStatusCode ACCEPTED = new HttpStatusCode(202, "Accepted"); /** * 203 Non-Authoritative Information. */ public static final HttpStatusCode NON_AUTHORITATIVE_INFORMATION = new HttpStatusCode(203, "Non-Authoritative Information"); /** * 204 No Content. */ public static final HttpStatusCode NO_CONTENT = new HttpStatusCode(204, "No Content"); /** * 205 Reset Content. */ public static final HttpStatusCode RESET_CONTENT = new HttpStatusCode(205, "Reset Content"); /** * 206 Partial Content. */ public static final HttpStatusCode PARTIAL_CONTENT = new HttpStatusCode(206, "Partial Content"); /** * 300 Multiple Choices. */ public static final HttpStatusCode MULTIPLE_CHOICES = new HttpStatusCode(300, "Multiple Choices"); /** * 301 Moved Permanently. */ public static final HttpStatusCode MOVED_PERMANENTLY = new HttpStatusCode(301, "Moved Permanently"); /** * 302 Found. */ public static final HttpStatusCode FOUND = new HttpStatusCode(302, "Found"); /** * 303 See Other. */ public static final HttpStatusCode SEE_OTHER = new HttpStatusCode(303, "See Other"); /** * 304 Not Modified. */ public static final HttpStatusCode NOT_MODIFIED = new HttpStatusCode(304, "Not Modified"); /** * 305 Use Proxy. */ public static final HttpStatusCode USE_PROXY = new HttpStatusCode(305, "Use Proxy"); /** * 307 Temporary Redirect. */ public static final HttpStatusCode TEMPORARY_REDIRECT = new HttpStatusCode(307, "Temporary Redirect"); /** * 308 Permanent Redirect. */ public static final HttpStatusCode PERMANENT_REDIRECT = new HttpStatusCode(308, "Permanent Redirect"); /** * 400 Bad Request. */ public static final HttpStatusCode BAD_REQUEST = new HttpStatusCode(400, "Bad Request"); /** * 401 Unauthorized. */ public static final HttpStatusCode UNAUTHORIZED = new HttpStatusCode(401, "Unauthorized"); /** * 402 Payment Required. */ public static final HttpStatusCode PAYMENT_REQUIRED = new HttpStatusCode(402, "Payment Required"); /** * 403 Forbidden. */ public static final HttpStatusCode FORBIDDEN = new HttpStatusCode(403, "Forbidden"); /** * 404 Not Found. */ public static final HttpStatusCode NOT_FOUND = new HttpStatusCode(404, "Not Found"); /** * 405 Method Not Allowed. */ public static final HttpStatusCode METHOD_NOT_ALLOWED = new HttpStatusCode(405, "Method Not Allowed"); /** * 406 Not Acceptable. */ public static final HttpStatusCode NOT_ACCEPTABLE = new HttpStatusCode(406, "Not Acceptable"); /** * 407 Proxy Authentication Required. */ public static final HttpStatusCode PROXY_AUTHENTICATION_REQUIRED = new HttpStatusCode(407, "Proxy Authentication Required"); /** * 408 Request Timeout. */ public static final HttpStatusCode REQUEST_TIMEOUT = new HttpStatusCode(408, "Request Timeout"); /** * 409 Conflict. */ public static final HttpStatusCode CONFLICT = new HttpStatusCode(409, "Conflict"); /** * 410 Gone. */ public static final HttpStatusCode GONE = new HttpStatusCode(410, "Gone"); /** * 411 Length Required. */ public static final HttpStatusCode LENGTH_REQUIRED = new HttpStatusCode(411, "Length Required"); /** * 412 Precondition Failed. */ public static final HttpStatusCode PRECONDITION_FAILED = new HttpStatusCode(412, "Precondition Failed"); /** * 413 Content Too Large. */ public static final HttpStatusCode CONTENT_TOO_LARGE = new HttpStatusCode(413, "Content Too Large"); /** * 414 Content Too Long. */ public static final HttpStatusCode URI_TOO_LONG = new HttpStatusCode(414, "URI Too Long"); /** * 415 Unsupported Media Type. */ public static final HttpStatusCode UNSUPPORTED_MEDIA_TYPE = new HttpStatusCode(415, "Unsupported Media Type"); /** * 416 Requested Range Not Satisfiable. */ public static final HttpStatusCode REQUESTED_RANGE_NOT_SATISFIABLE = new HttpStatusCode(416, "Requested Range Not Satisfiable"); /** * 417 Expectation Failed. */ public static final HttpStatusCode EXPECTATION_FAILED = new HttpStatusCode(417, "Expectation Failed"); /** * 418 (Unused). */ @Deprecated(forRemoval = true) public static final HttpStatusCode I_M_A_TEAPOT = new HttpStatusCode(418, "I'm a teapot"); /** * 421 Misdirected Request. */ public static final HttpStatusCode MISDIRECTED_REQUEST = new HttpStatusCode(421, "Misdirected Request"); /** * 422 Unprocessable Content. */ public static final HttpStatusCode UNPROCESSABLE_CONTENT = new HttpStatusCode(422, "Unprocessable Content"); /** * 426 Upgrade Required. */ public static final HttpStatusCode UPGRADE_REQUIRED = new HttpStatusCode(426, "Upgrade Required"); /** * 428 Precondition Required. */ public static final HttpStatusCode PRECONDITION_REQUIRED = new HttpStatusCode(428, "Precondition Required"); /** * 429 Too Many Requests. */ public static final HttpStatusCode TOO_MANY_REQUESTS = new HttpStatusCode(429, "Too Many Requests"); /** * 431 Request Header Fields Too Large. */ public static final HttpStatusCode REQUEST_HEADER_FIELDS_TOO_LARGE = new HttpStatusCode(431, "Request Header Fields Too Large"); /** * 500 Internal Server Error. */ public static final HttpStatusCode INTERNAL_SERVER_ERROR = new HttpStatusCode(500, "Internal Server Error"); /** * 501 Not Implemented. */ public static final HttpStatusCode NOT_IMPLEMENTED = new HttpStatusCode(501, "Not Implemented"); /** * 502 Bad Gateway. */ public static final HttpStatusCode BAD_GATEWAY = new HttpStatusCode(502, "Bad Gateway"); /** * 503 Service Unavailable. */ public static final HttpStatusCode SERVICE_UNAVAILABLE = new HttpStatusCode(503, "Service Unavailable"); /** * 504 Gateway Timeout. */ public static final HttpStatusCode GATEWAY_TIMEOUT = new HttpStatusCode(504, "Gateway Timeout"); /** * 505 HTTP Version Not Supported. */ public static final HttpStatusCode HTTP_VERSION_NOT_SUPPORTED = new HttpStatusCode(505, "HTTP Version Not Supported"); /** * 511 Network Authentication Required. */ public static final HttpStatusCode NETWORK_AUTHENTICATION_REQUIRED = new HttpStatusCode(511, "Network Authentication Required"); private final int code; private final String phrase; public HttpStatusCode(final int code, final @Nullable String phrase) { if (code < 100 || code > 599) { throw new IllegalArgumentException("Invalid statusCode " + code); } this.code = code; this.phrase = phrase; } /** * Returns the HTTP status code, {@code 100-599}. * * @return the HTTP status code */ public int code() { return code; } /** * Returns the phrase or {@code null}. * * @return the phrase or {@code null} */ public @Nullable String phrase() { return phrase; } @Override public int hashCode() { return code; } @Override public boolean equals(final @Nullable Object obj) { return obj == this || obj instanceof HttpStatusCode other && code == other.code; } @Override public String toString() { return phrase == null ? Integer.toString(code) : code + " " + phrase; } }