1 /***
2 *
3 * Copyright 2004 Hiram Chirino
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.activeio.oneport;
19
20 import java.util.HashSet;
21
22 import org.activeio.Packet;
23
24
25 public class HttpRecognizer implements ProtocolRecognizer {
26
27 static private HashSet methods = new HashSet();
28 static {
29
30 methods.add("GET ");
31 methods.add("PUT ");
32 methods.add("POST ");
33 methods.add("HEAD ");
34 methods.add("LINK ");
35 methods.add("TRACE ");
36 methods.add("UNLINK ");
37 methods.add("SEARCH ");
38 methods.add("DELETE ");
39 methods.add("CHECKIN ");
40 methods.add("OPTIONS ");
41 methods.add("CONNECT ");
42 methods.add("CHECKOUT ");
43 methods.add("SPACEJUMP ");
44 methods.add("SHOWMETHOD ");
45 methods.add("TEXTSEARCH ");
46 }
47
48 static final public HttpRecognizer HTTP_RECOGNIZER = new HttpRecognizer();
49
50 private HttpRecognizer() {}
51
52 public boolean recognizes(Packet packet) {
53
54 StringBuffer b = new StringBuffer(12);
55 for (int i = 0; i < 11; i++) {
56 int c = (char)packet.read();
57 if( c == -1)
58 return false;
59
60 b.append((char)c);
61 if(((char)c)==' ')
62 break;
63 }
64
65 return methods.contains(b.toString());
66 }
67 }