HttpConstants.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */

  20. package org.openspcoop2.utils.transport.http;

  21. import java.util.ArrayList;
  22. import java.util.Arrays;
  23. import java.util.List;

  24. import org.openspcoop2.utils.mime.MimeTypeConstants;

  25. /**
  26.  * HttpConstants
  27.  *
  28.  *
  29.  * @author Poli Andrea (apoli@link.it)
  30.  * @author Tommaso Burlon (tommaso.burlon@link.it)
  31.  * @author $Author$
  32.  * @version $Rev$, $Date$
  33.  */
  34. public class HttpConstants {
  35.    
  36.     public static byte[] CR_LF_BREAK_LINE = { 13, 10 };
  37.     public static String HTTP_HEADER_SEPARATOR = ": ";
  38.    
  39.     /** HTTP HEADERS */
  40.     public static final String CONTENT_TYPE = "Content-Type";
  41.     public static final String CONTENT_LENGTH = "Content-Length";
  42.     public static final String CONTENT_LOCATION = "Content-Location";
  43.     public static final String CONTENT_ID = "Content-ID";
  44.     public static final String RETURN_CODE = "ReturnCode";
  45.    
  46.     /** ContentType */
  47.     public static final String CONTENT_TYPE_NON_VALORIZZATO = "Not valued (null)";
  48.     public static final String CONTENT_TYPE_NON_PRESENTE = "Undefined";
  49.    
  50.     /** Transfer Encoding */
  51.     public static final String TRANSFER_ENCODING = "Transfer-Encoding";
  52.     public static final String TRANSFER_ENCODING_VALUE_CHUNCKED = "chunked";
  53.    
  54.     /** Content Transfer Encoding */
  55.     public static final String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
  56.     public static final String CONTENT_TRANSFER_ENCODING_VALUE_BINARY = "binary";
  57.     public static final String CONTENT_TRANSFER_ENCODING_VALUE_BASE64 = "base64";
  58.    
  59.     /** Content Encoding */
  60.     public static final String CONTENT_ENCODING = "Content-Encoding";
  61.    
  62.     /** Redirect */
  63.     public static final String REDIRECT_LOCATION = "Location";
  64.    
  65.     /** Proxy */
  66.     public static final String PROXY_AUTHORIZATION = "Proxy-Authorization";
  67.    
  68.     /** Accept */
  69.     public static final String ACCEPT = "Accept";
  70.    
  71.     /** Connection */
  72.     public static final String CONNECTION = "Connection";
  73.     public static final String CONNECTION_VALUE_KEEP_ALIVE = "keep-alive";
  74.     public static final String CONNECTION_VALUE_CLOSE = "close";
  75.    
  76.     /** Retry-After */
  77.     public static final String RETRY_AFTER = "Retry-After";
  78.    
  79.     /** Cookie */
  80.     public static final String COOKIE = "Cookie";
  81.     public static final String COOKIE_SEPARATOR = ";";
  82.     public static final String COOKIE_NAME_VALUE_SEPARATOR = "=";
  83.    
  84.     /** SetCookie */
  85.     public static final String SET_COOKIE = "Set-Cookie";
  86.     public static final String SET_COOKIE_EXPIRES_PARAMETER = "Expires"; // <date>
  87.     public static final String SET_COOKIE_MAX_AGE_PARAMETER = "Max-Age"; // <non-zero-digit>
  88.     public static final String SET_COOKIE_PATH_PARAMETER = "Path"; // <path-value>
  89.     public static final String SET_COOKIE_DOMAIN_PARAMETER = "Domain"; // <domain-value>
  90.     public static final String SET_COOKIE_SECURE_PARAMETER = "Secure";
  91.     public static final String SET_COOKIE_HTTP_ONLY_PARAMETER = "HttpOnly";
  92.    
  93.     /** Digest */
  94.     public static final String DIGEST = "Digest";
  95.     public static final String DIGEST_ALGO_MD5 = "MD5";
  96.     public static final String DIGEST_ALGO_SHA = "SHA";
  97.     public static final String DIGEST_ALGO_SHA_1 = "SHA-1";
  98.     public static final String DIGEST_ALGO_SHA_256 = "SHA-256";
  99.     public static final String DIGEST_ALGO_SHA_384 = "SHA-384";
  100.     public static final String DIGEST_ALGO_SHA_512 = "SHA-512";
  101.    
  102.     /** Authentication */
  103.     public static final String AUTHENTICATION_BASIC = "Basic";
  104.     public static final String AUTHENTICATION_BEARER = "Bearer";
  105.    
  106.     /** Authorization */
  107.     public static final String AUTHORIZATION = "Authorization";
  108.     public static final String AUTHORIZATION_PREFIX_BASIC = AUTHENTICATION_BASIC+" ";
  109.     public static final String AUTHORIZATION_PREFIX_BEARER = AUTHENTICATION_BEARER+" ";
  110.     public static final String AUTHORIZATION_RESPONSE_WWW_AUTHENTICATE = "WWW-Authenticate";
  111.     public static final String AUTHORIZATION_RESPONSE_WWW_AUTHENTICATE_BASIC_REALM_PREFIX = "Basic realm=\"\"";
  112.     public static final String AUTHORIZATION_RESPONSE_WWW_AUTHENTICATE_BASIC_REALM_SUFFIX = "\"";
  113.    
  114.     /** Download */
  115.     public static final String CONTENT_DISPOSITION = "Content-Disposition";
  116.     public static final String CONTENT_DISPOSITION_ATTACH_FILE_PREFIX = "attachment; filename=";
  117.     public static final String CONTENT_DISPOSITION_NAME_PREFIX = "name=";
  118.     public static final String CONTENT_DISPOSITION_FILENAME_PREFIX = "filename=";
  119.    
  120.     /** Cache */
  121.     public static final String CACHE_STATUS_DIRECTIVE_NO_CACHE = "no-cache";
  122.     public static final String CACHE_STATUS_DIRECTIVE_NO_STORE = "no-store";
  123.     public static final String CACHE_STATUS_DIRECTIVE_MAX_AGE = "max-age";
  124.     public static final String CACHE_STATUS_DIRECTIVE_MUST_REVALIDATE = "must-revalidate";
  125.     public static final String CACHE_STATUS_HTTP_1_1 = "Cache-Control";
  126.     public static final String CACHE_STATUS_HTTP_1_1_DISABLE_CACHE = CACHE_STATUS_DIRECTIVE_NO_CACHE+", "+CACHE_STATUS_DIRECTIVE_NO_STORE+", "+CACHE_STATUS_DIRECTIVE_MUST_REVALIDATE;
  127.     public static final String CACHE_STATUS_HTTP_1_0 = "Pragma";
  128.     public static final String CACHE_STATUS_HTTP_1_0_DISABLE_CACHE = CACHE_STATUS_DIRECTIVE_NO_CACHE;
  129.     public static final String CACHE_STATUS_PROXY_EXPIRES = "Expires";
  130.     public static final long CACHE_STATUS_PROXY_EXPIRES_DISABLE_CACHE = 0;
  131.     public static final String CACHE_STATUS_VARY = "Vary";
  132.     public static final String CACHE_STATUS_VARY_UNCACHABLE = "*"; // Indicates that factors other than request headers influenced the generation of this response. Implies that the response is uncacheable.
  133.     public static final List<String> CACHE_STATUS_HEADERS = new ArrayList<>();
  134.     static {
  135.         CACHE_STATUS_HEADERS.add(CACHE_STATUS_HTTP_1_1);
  136.         CACHE_STATUS_HEADERS.add(CACHE_STATUS_HTTP_1_0);
  137.         CACHE_STATUS_HEADERS.add(CACHE_STATUS_PROXY_EXPIRES);
  138.         CACHE_STATUS_HEADERS.add(CACHE_STATUS_VARY);
  139.     }
  140.     public static boolean isCacheStatusHeader(String hdr) {
  141.         if(hdr==null) {
  142.             return false;
  143.         }
  144.         for (String h : CACHE_STATUS_HEADERS) {
  145.             if(h.toLowerCase().equals(hdr.toLowerCase())) {
  146.                 return true;
  147.             }
  148.         }
  149.         return false;
  150.     }
  151.    
  152.     /** CORS Request */
  153.     public static final String ACCESS_CONTROL_REQUEST_HEADERS = "Access-Control-Request-Headers";
  154.     public static final String ACCESS_CONTROL_REQUEST_METHOD = "Access-Control-Request-Method";
  155.     public static final String ACCESS_CONTROL_REQUEST_ORIGIN = "Origin";
  156.        
  157.     /** CORS Response */
  158.     public static final String ACCESS_CONTROL_ALLOW_CREDENTIALS = "Access-Control-Allow-Credentials";
  159.     public static final String ACCESS_CONTROL_ALLOW_HEADERS = "Access-Control-Allow-Headers";
  160.     public static final String ALLOW_HEADERS = "Allow";
  161.     public static final String ACCESS_CONTROL_ALLOW_METHODS = "Access-Control-Allow-Methods";
  162.     public static final String ACCESS_CONTROL_ALLOW_ORIGIN = "Access-Control-Allow-Origin";
  163.     public static final String ACCESS_CONTROL_ALLOW_ORIGIN_ALL_VALUE = "*";
  164.     public static final String ACCESS_CONTROL_ALLOW_ORIGIN_VARY = "Vary";
  165.     public static final String ACCESS_CONTROL_ALLOW_ORIGIN_VARY_ORIGIN_VALUE = "Origin";
  166.     public static final String ACCESS_CONTROL_EXPOSE_HEADERS = "Access-Control-Expose-Headers";
  167.     public static final String ACCESS_CONTROL_MAX_AGE = "Access-Control-Max-Age";
  168.     public static final String ACCESS_CONTROL_MAX_AGE_DISABLE_CACHE = "-1";
  169.     public static final List<String> ACCESS_CONTROL_SIMPLE_REQUEST_CONTENT_TYPES = new ArrayList<>(Arrays.asList(
  170.             HttpConstants.CONTENT_TYPE_X_WWW_FORM_URLENCODED,
  171.             HttpConstants.CONTENT_TYPE_FORM_DATA,
  172.             HttpConstants.CONTENT_TYPE_PLAIN));

  173.     /** Agent */
  174.     public static final String USER_AGENT = "User-Agent";
  175.     public static final String SERVER = "Server";
  176.     public static final String X_POWERED_BY = "X-Powered-By";
  177.    
  178.     /** Content Type */
  179.     public static final String CONTENT_TYPE_SOAP_1_1 = MimeTypeConstants.MEDIA_TYPE_SOAP_1_1;
  180.     public static final String CONTENT_TYPE_SOAP_1_2 = MimeTypeConstants.MEDIA_TYPE_SOAP_1_2;
  181.     public static final String CONTENT_TYPE_APPLICATION_OCTET_STREAM = MimeTypeConstants.MEDIA_TYPE_APPLICATION_OCTET_STREAM;
  182.     public static final String CONTENT_TYPE_ZIP = MimeTypeConstants.MEDIA_TYPE_ZIP;
  183.     public static final String CONTENT_TYPE_PDF = MimeTypeConstants.MEDIA_TYPE_PDF;
  184.     public static final String CONTENT_TYPE_APPLICATION_XOP_XML = MimeTypeConstants.MEDIA_TYPE_APPLICATION_XOP_XML;
  185.     public static final String CONTENT_TYPE_HTML = MimeTypeConstants.MEDIA_TYPE_HTML;
  186.     public static final String CONTENT_TYPE_PLAIN = MimeTypeConstants.MEDIA_TYPE_PLAIN;
  187.     public static final String CONTENT_TYPE_XML = MimeTypeConstants.MEDIA_TYPE_XML;
  188.     public static final String CONTENT_TYPE_TEXT_XML = CONTENT_TYPE_SOAP_1_1;
  189.     public static final String CONTENT_TYPE_JSON = MimeTypeConstants.MEDIA_TYPE_JSON;
  190.     public static final String CONTENT_TYPE_OPENSPCOOP2_TUNNEL_SOAP = MimeTypeConstants.MEDIA_TYPE_OPENSPCOOP2_TUNNEL_SOAP;
  191.     public static final String CONTENT_TYPE_X_DOWNLOAD = MimeTypeConstants.MEDIA_TYPE_X_DOWNLOAD;
  192.     public static final String CONTENT_TYPE_X_WWW_FORM_URLENCODED = MimeTypeConstants.MEDIA_TYPE_X_WWW_FORM_URLENCODED;
  193.     public static final String CONTENT_TYPE_FORM_DATA = MimeTypeConstants.MEDIA_TYPE_FORM_DATA;
  194.     public static final String CONTENT_TYPE_JSON_PROBLEM_DETAILS_RFC_7807 = MimeTypeConstants.MEDIA_TYPE_JSON_PROBLEM_DETAILS_RFC_7807;
  195.     public static final String CONTENT_TYPE_XML_PROBLEM_DETAILS_RFC_7807 = MimeTypeConstants.MEDIA_TYPE_XML_PROBLEM_DETAILS_RFC_7807;
  196.     public static final String CONTENT_TYPE_OCSP_REQUEST = MimeTypeConstants.MEDIA_TYPE_OCSP_REQUEST;
  197.     public static final String CONTENT_TYPE_OCSP_RESPONSE = MimeTypeConstants.MEDIA_TYPE_OCSP_RESPONSE;
  198.    
  199.     /** SOAP */
  200.     public static final String SOAP11_MANDATORY_HEADER_HTTP_SOAP_ACTION = "SOAPAction";
  201.     public static final String SOAP12_OPTIONAL_CONTENT_TYPE_PARAMETER_SOAP_ACTION = "action";
  202.    
  203.     /** Content Type, Parameter */
  204.     public static final String CONTENT_TYPE_PARAMETER_CHARSET = "charset";
  205.    
  206.     /** Multipart Content Type */
  207.    
  208.     public static final String CONTENT_TYPE_MULTIPART_TYPE = "multipart";
  209.     public static final String CONTENT_TYPE_MULTIPART_ALTERNATIVE_SUBTYPE = "alternative";
  210.     public static final String CONTENT_TYPE_MULTIPART_MIXED_SUBTYPE = "mixed";
  211.     public static final String CONTENT_TYPE_MULTIPART_RELATED_SUBTYPE = "related";
  212.     public static final String CONTENT_TYPE_MULTIPART_FORM_DATA_SUBTYPE = "form-data";
  213.    
  214.     public static final String CONTENT_TYPE_MULTIPART_ALTERNATIVE = CONTENT_TYPE_MULTIPART_TYPE+"/"+CONTENT_TYPE_MULTIPART_ALTERNATIVE_SUBTYPE;
  215.     public static final String CONTENT_TYPE_MULTIPART_MIXED = CONTENT_TYPE_MULTIPART_TYPE+"/"+CONTENT_TYPE_MULTIPART_MIXED_SUBTYPE;
  216.     public static final String CONTENT_TYPE_MULTIPART_RELATED = CONTENT_TYPE_MULTIPART_TYPE+"/"+CONTENT_TYPE_MULTIPART_RELATED_SUBTYPE;
  217.     public static final String CONTENT_TYPE_MULTIPART_FORM_DATA = CONTENT_TYPE_MULTIPART_TYPE+"/"+CONTENT_TYPE_MULTIPART_FORM_DATA_SUBTYPE;
  218.    
  219.     @Deprecated
  220.     public static final String CONTENT_TYPE_MULTIPART = CONTENT_TYPE_MULTIPART_RELATED;
  221.    
  222.     public static final String CONTENT_TYPE_MULTIPART_PARAMETER_BOUNDARY = "boundary";
  223.     public static final String CONTENT_TYPE_MULTIPART_PARAMETER_TYPE = "type";
  224.     public static final String CONTENT_TYPE_MULTIPART_PARAMETER_START = "start";
  225.     public static final String CONTENT_TYPE_MULTIPART_PARAMETER_START_INFO = "start-info";
  226.     public static final String CONTENT_TYPE_MULTIPART_PARAMETER_FORM_DATA = "form-data";
  227.    
  228.     /** Source */
  229.     public static final String SEPARATOR_SOURCE = ":";
  230.    
  231.     /** Content Security Policy */
  232.     public static final String HEADER_NAME_CONTENT_SECURITY_POLICY = "Content-Security-Policy";
  233.     public static final String HEADER_NAME_CONTENT_SECURITY_POLICY_REPORT_ONLY = "Content-Security-Policy-Report-Only";
  234.    
  235. }