1 /*
2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License").
5 * You may not use this file except in compliance with the License.
6 * A copy of the License is located at
7 *
8 * http://aws.amazon.com/apache2.0
9 *
10 * or in the "license" file accompanying this file. This file is distributed
11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12 * express or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15
16 package software.amazon.awssdk.http;
17
18 import java.util.Locale;
19 import java.util.stream.Stream;
20 import software.amazon.awssdk.annotations.SdkProtectedApi;
21
22 /**
23 * Enum for available HTTP methods.
24 */
25 @SdkProtectedApi
26 public enum SdkHttpMethod {
27
28 GET,
29 POST,
30 PUT,
31 DELETE,
32 HEAD,
33 PATCH,
34 OPTIONS,;
35
36 /**
37 * @param value Raw string representing value of enum
38 * @return HttpMethodName enum or null if value is not present.
39 * @throws IllegalArgumentException If value does not represent a known enum value.
40 */
41 public static SdkHttpMethod fromValue(String value) {
42 if (value == null || value.isEmpty()) {
43 return null;
44 }
45 String upperCaseValue = value.toUpperCase(Locale.ENGLISH);
46 return Stream.of(values())
47 .filter(h -> h.name().equals(upperCaseValue))
48 .findFirst()
49 .orElseThrow(() -> new IllegalArgumentException("Unsupported HTTP method name " + value));
50 }
51
52 }
53