Exemplo n.º 1
0
ReqLine_t parseRequestLine (int fd)
{
  enum ReqKind_t kind;
  ReqLine_t reqline;

  switch(token.kind){
  case TOKEN_HEAD:
    kind = REQ_KIND_HEAD;
    break;
  case TOKEN_GET:
    kind = REQ_KIND_GET;
    break;
  default:
    parseError(fd);
    break;
  }
  advance(fd, 1);

  eatToken(TOKEN_SPACE, fd, 1);
  char *uri = eatToken(TOKEN_STR, fd, 1);
  eatToken(TOKEN_SPACE, fd, 1);
  eatToken(TOKEN_HTTP_ONE_ONE, fd, 1);
  eatToken(TOKEN_CRLF, fd, 1);

  if (DEBUG){
    fprintf (stderr, "uri=%s\n", uri);
  }

  reqline = ReqLine_new (0
			 , uri
			 , HTTP_ONE_ONE);
  ReqLine_print (1, reqline);
  return reqline;
}
Exemplo n.º 2
0
void Http_print (int fd, Http_t http)
{
  assert (http);
  assert (http->reqLine || http->respLine);
  if (http->reqLine)
    ReqLine_print(fd, http->reqLine);
  else RespLine_print (fd, http->respLine);
  // more code ...
  
  return;
}
Exemplo n.º 3
0
ReqLine_t Parse_reqLine (int fd)
{
  enum ReqKind_t kind;
  ReqLine_t reqline;
  getToken(fd, 1);  //modify
  //printf("parse(F) uri =  %s; kind = %d; n = %d\n", token.lexeme, token.kind, TOKEN_POST);
  switch(token.kind){
  case TOKEN_HEAD:
    kind = REQ_KIND_HEAD;
    break;
  case TOKEN_GET:
    kind = REQ_KIND_GET;
    break;
  case TOKEN_POST:
    
    kind = REQ_KIND_POST;
    break;
  default:
    parseError(fd);
    break;
  }
  
  advance(fd, 1);
      
  eatToken(TOKEN_SPACE, fd, 1);
  
  advance (fd, 1); //modify
  
  char *uri = eatToken(TOKEN_STR, fd, 1);
  //eatToken(TOKEN_SPACE, fd, 1);

  advance (fd, 1);
  eatToken(TOKEN_SPACE, fd , 1);

  advance(fd, 1);
  eatToken(TOKEN_HTTP_ONE_ONE, fd, 1);

  advance(fd, 1);
  eatToken(TOKEN_CRLF, fd, 1);
  ///no more eat token

  if (DEBUG){
    fprintf (stderr, "uri=%s\n", uri);
  }

  reqline = ReqLine_new ( kind
			 , uri
			 , HTTP_ONE_ONE);
  ReqLine_print (1, reqline);
  return reqline;
}