View Javadoc

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          // This list built using: http://www.w3.org/Protocols/HTTP/Methods.html
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  }