1 /*
2 * Copyright 2012 The Netty Project
3 *
4 * The Netty Project licenses this file to you under the Apache License,
5 * version 2.0 (the "License"); you may not use this file except in compliance
6 * with the License. You may obtain a copy of the License at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations
14 * under the License.
15 */
16 package io.netty.handler.codec.rtsp;
17
18 import static io.netty.util.internal.ObjectUtil.checkNonEmptyAfterTrim;
19
20 import io.netty.handler.codec.http.HttpMethod;
21
22 import java.util.HashMap;
23 import java.util.Map;
24
25 /**
26 * The request getMethod of RTSP.
27 */
28 public final class RtspMethods {
29
30 /**
31 * The OPTIONS getMethod represents a request for information about the communication options
32 * available on the request/response chain identified by the Request-URI. This getMethod allows
33 * the client to determine the options and/or requirements associated with a resource, or the
34 * capabilities of a server, without implying a resource action or initiating a resource
35 * retrieval.
36 */
37 public static final HttpMethod OPTIONS = HttpMethod.OPTIONS;
38
39 /**
40 * The DESCRIBE getMethod retrieves the description of a presentation or
41 * media object identified by the request URL from a server.
42 */
43 public static final HttpMethod DESCRIBE = HttpMethod.valueOf("DESCRIBE");
44
45 /**
46 * The ANNOUNCE posts the description of a presentation or media object
47 * identified by the request URL to a server, or updates the client-side
48 * session description in real-time.
49 */
50 public static final HttpMethod ANNOUNCE = HttpMethod.valueOf("ANNOUNCE");
51
52 /**
53 * The SETUP request for a URI specifies the transport mechanism to be
54 * used for the streamed media.
55 */
56 public static final HttpMethod SETUP = HttpMethod.valueOf("SETUP");
57
58 /**
59 * The PLAY getMethod tells the server to start sending data via the
60 * mechanism specified in SETUP.
61 */
62 public static final HttpMethod PLAY = HttpMethod.valueOf("PLAY");
63
64 /**
65 * The PAUSE request causes the stream delivery to be interrupted
66 * (halted) temporarily.
67 */
68 public static final HttpMethod PAUSE = HttpMethod.valueOf("PAUSE");
69
70 /**
71 * The TEARDOWN request stops the stream delivery for the given URI,
72 * freeing the resources associated with it.
73 */
74 public static final HttpMethod TEARDOWN = HttpMethod.valueOf("TEARDOWN");
75
76 /**
77 * The GET_PARAMETER request retrieves the value of a parameter of a
78 * presentation or stream specified in the URI.
79 */
80 public static final HttpMethod GET_PARAMETER = HttpMethod.valueOf("GET_PARAMETER");
81
82 /**
83 * The SET_PARAMETER requests to set the value of a parameter for a
84 * presentation or stream specified by the URI.
85 */
86 public static final HttpMethod SET_PARAMETER = HttpMethod.valueOf("SET_PARAMETER");
87
88 /**
89 * The REDIRECT request informs the client that it must connect to another
90 * server location.
91 */
92 public static final HttpMethod REDIRECT = HttpMethod.valueOf("REDIRECT");
93
94 /**
95 * The RECORD getMethod initiates recording a range of media data according to
96 * the presentation description.
97 */
98 public static final HttpMethod RECORD = HttpMethod.valueOf("RECORD");
99
100 private static final Map<String, HttpMethod> methodMap = new HashMap<String, HttpMethod>();
101
102 static {
103 methodMap.put(DESCRIBE.toString(), DESCRIBE);
104 methodMap.put(ANNOUNCE.toString(), ANNOUNCE);
105 methodMap.put(GET_PARAMETER.toString(), GET_PARAMETER);
106 methodMap.put(OPTIONS.toString(), OPTIONS);
107 methodMap.put(PAUSE.toString(), PAUSE);
108 methodMap.put(PLAY.toString(), PLAY);
109 methodMap.put(RECORD.toString(), RECORD);
110 methodMap.put(REDIRECT.toString(), REDIRECT);
111 methodMap.put(SETUP.toString(), SETUP);
112 methodMap.put(SET_PARAMETER.toString(), SET_PARAMETER);
113 methodMap.put(TEARDOWN.toString(), TEARDOWN);
114 }
115
116 /**
117 * Returns the {@link HttpMethod} represented by the specified name.
118 * If the specified name is a standard RTSP getMethod name, a cached instance
119 * will be returned. Otherwise, a new instance will be returned.
120 */
121 public static HttpMethod valueOf(String name) {
122 name = checkNonEmptyAfterTrim(name, "name").toUpperCase();
123 HttpMethod result = methodMap.get(name);
124 if (result != null) {
125 return result;
126 } else {
127 return HttpMethod.valueOf(name);
128 }
129 }
130
131 private RtspMethods() {
132 }
133 }