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  }