/*
* Copyright 2017 LINE Corporation
*
* LINE Corporation licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.linecorp.armeria.common.http;
import static java.util.Objects.requireNonNull;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import com.linecorp.armeria.common.SessionProtocol;
/**
* HTTP-related {@link SessionProtocol} instances.
*/
public final class HttpSessionProtocols {
/**
* HTTP - over TLS, HTTP/2 preferred.
*/
public static final SessionProtocol HTTPS = SessionProtocol.of("https");
/**
* HTTP - cleartext, HTTP/2 preferred.
*/
public static final SessionProtocol HTTP = SessionProtocol.of("http");
/**
* HTTP/1 - over TLS.
*/
public static final SessionProtocol H1 = SessionProtocol.of("h1");
/**
* HTTP/1 - cleartext.
*/
public static final SessionProtocol H1C = SessionProtocol.of("h1c");
/**
* HTTP/2 - over TLS.
*/
public static final SessionProtocol H2 = SessionProtocol.of("h2");
/**
* HTTP/2 - cleartext.
*/
public static final SessionProtocol H2C = SessionProtocol.of("h2c");
private static final Set<SessionProtocol> HTTP_PROTOCOLS = ImmutableSet.of(HTTPS, HTTP, H1, H1C, H2, H2C);
/**
* Returns the set of all known HTTP {@link SessionProtocol}s.
*/
public static Set<SessionProtocol> values() {
return HTTP_PROTOCOLS;
}
/**
* Returns whether the specified {@link SessionProtocol} is HTTP.
*/
public static boolean isHttp(SessionProtocol protocol) {
return values().contains(requireNonNull(protocol, "protocol"));
}
private HttpSessionProtocols() {}
}