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      */
fromValue(String value)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