/**
* Copyright 2013, Landz and its contributors. All rights reserved.
*
* Licensed 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 z.net.http.parser;
import java.nio.charset.Charset;
public enum HTTPMethod {
HTTP_DELETE("DELETE")// = 0
, HTTP_GET("GET")
, HTTP_HEAD("HEAD")
, HTTP_POST("POST")
, HTTP_PUT("PUT")
, HTTP_PATCH("PATCH")
/* pathological */
, HTTP_CONNECT("CONNECT")
, HTTP_OPTIONS("OPTIONS")
, HTTP_TRACE("TRACE")
/* webdav */
, HTTP_COPY("COPY")
, HTTP_LOCK("LOCK")
, HTTP_MKCOL("MKCOL")
, HTTP_MOVE("MOVE")
, HTTP_PROPFIND("PROPFIND")
, HTTP_PROPPATCH("PROPPATCH")
, HTTP_UNLOCK("UNLOCK")
, HTTP_REPORT("REPORT")
, HTTP_MKACTIVITY("MKACTIVITY")
, HTTP_CHECKOUT("CHECKOUT")
, HTTP_MERGE("MERGE")
, HTTP_MSEARCH("M-SEARCH")
, HTTP_NOTIFY("NOTIFY")
, HTTP_SUBSCRIBE("SUBSCRIBE")
, HTTP_UNSUBSCRIBE("UNSUBSCRIBE")
, HTTP_PURGE("PURGE")
;
private static Charset ASCII;
static {
ASCII = Charset.forName("US-ASCII");;
}
public byte[] bytes;
HTTPMethod(String name) {
// good grief, Charlie Brown, the following is necessary because
// java is retarded:
// illegal reference to static field from initializer
// this.bytes = name.getBytes(ASCII);
// yet it's not illegal to reference static fields from
// methods called from initializer.
init(name);
}
public static HTTPMethod parse(String s) {
if ("HTTP_DELETE".equalsIgnoreCase(s)) {return HTTP_DELETE;}
else if ("DELETE".equalsIgnoreCase(s)) {return HTTP_DELETE;}
else if ("HTTP_GET".equalsIgnoreCase(s)) {return HTTP_GET;}
else if ("GET".equalsIgnoreCase(s)) {return HTTP_GET;}
else if ("HTTP_HEAD".equalsIgnoreCase(s)) {return HTTP_HEAD;}
else if ("HEAD".equalsIgnoreCase(s)) {return HTTP_HEAD;}
else if ("HTTP_POST".equalsIgnoreCase(s)) {return HTTP_POST;}
else if ("POST".equalsIgnoreCase(s)) {return HTTP_POST;}
else if ("HTTP_PUT".equalsIgnoreCase(s)) {return HTTP_PUT;}
else if ("PUT".equalsIgnoreCase(s)) {return HTTP_PUT;}
else if ("HTTP_PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;}
else if ("PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;}
else if ("HTTP_CONNECT".equalsIgnoreCase(s)) {return HTTP_CONNECT;}
else if ("CONNECT".equalsIgnoreCase(s)) {return HTTP_CONNECT;}
else if ("HTTP_OPTIONS".equalsIgnoreCase(s)) {return HTTP_OPTIONS;}
else if ("OPTIONS".equalsIgnoreCase(s)) {return HTTP_OPTIONS;}
else if ("HTTP_TRACE".equalsIgnoreCase(s)) {return HTTP_TRACE;}
else if ("TRACE".equalsIgnoreCase(s)) {return HTTP_TRACE;}
else if ("HTTP_COPY".equalsIgnoreCase(s)) {return HTTP_COPY;}
else if ("COPY".equalsIgnoreCase(s)) {return HTTP_COPY;}
else if ("HTTP_LOCK".equalsIgnoreCase(s)) {return HTTP_LOCK;}
else if ("LOCK".equalsIgnoreCase(s)) {return HTTP_LOCK;}
else if ("HTTP_MKCOL".equalsIgnoreCase(s)) {return HTTP_MKCOL;}
else if ("MKCOL".equalsIgnoreCase(s)) {return HTTP_MKCOL;}
else if ("HTTP_MOVE".equalsIgnoreCase(s)) {return HTTP_MOVE;}
else if ("MOVE".equalsIgnoreCase(s)) {return HTTP_MOVE;}
else if ("HTTP_PROPFIND".equalsIgnoreCase(s)){return HTTP_PROPFIND;}
else if ("PROPFIND".equalsIgnoreCase(s)) {return HTTP_PROPFIND;}
else if ("HTTP_PROPPATCH".equalsIgnoreCase(s)){return HTTP_PROPPATCH;}
else if ("PROPPATCH".equalsIgnoreCase(s)) {return HTTP_PROPPATCH;}
else if ("HTTP_UNLOCK".equalsIgnoreCase(s)) {return HTTP_UNLOCK;}
else if ("UNLOCK".equalsIgnoreCase(s)) {return HTTP_UNLOCK;}
else if ("HTTP_REPORT".equalsIgnoreCase(s)) {return HTTP_REPORT;}
else if ("REPORT".equalsIgnoreCase(s)){return HTTP_REPORT;}
else if ("HTTP_MKACTIVITY".equalsIgnoreCase(s)) {return HTTP_MKACTIVITY;}
else if ("MKACTIVITY".equalsIgnoreCase(s)){return HTTP_MKACTIVITY;}
else if ("HTTP_CHECKOUT".equalsIgnoreCase(s)) {return HTTP_CHECKOUT;}
else if ("CHECKOUT".equalsIgnoreCase(s)){return HTTP_CHECKOUT;}
else if ("HTTP_MERGE".equalsIgnoreCase(s)) {return HTTP_MERGE;}
else if ("MERGE".equalsIgnoreCase(s)){return HTTP_MERGE;}
else if ("HTTP_MSEARCH".equalsIgnoreCase(s)) {return HTTP_MSEARCH;}
else if ("M-SEARCH".equalsIgnoreCase(s)) {return HTTP_MSEARCH;}
else if ("HTTP_NOTIFY".equalsIgnoreCase(s)) {return HTTP_NOTIFY;}
else if ("NOTIFY".equalsIgnoreCase(s)) {return HTTP_NOTIFY;}
else if ("HTTP_SUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_SUBSCRIBE;}
else if ("SUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_SUBSCRIBE;}
else if ("HTTP_UNSUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_UNSUBSCRIBE;}
else if ("UNSUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_UNSUBSCRIBE;}
else if ("PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;}
else if ("PURGE".equalsIgnoreCase(s)) {return HTTP_PURGE;}
else {return null;}
}
void init (String name) {
ASCII = null == ASCII ? Charset.forName("US-ASCII") : ASCII;
this.bytes = name.getBytes(ASCII);
}
}