/** * \file * * \author Georg Hopp * * \copyright * Copyright (C) 2012 Georg Hopp * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "http/message.h" #include "http/request.h" #include "http/message.h" #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MIN(x,y) ((x) < (y) ? (x) : (y)) #define MIN_SIZE(x,y) (MAX(strlen((x)), (y))) enum e_method { OPTIONS=0, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT }; #define N_METHODS 8 static const char * method[N_METHODS] = { "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT" }; ssize_t httpRequestParserGetRequestLine(HttpRequestParser this, char * cr) { char * method, * uri, * version; HttpMessage message = (HttpMessage)request; method = line; uri = strchr(line, ' '); if (NULL == uri) return; *uri++ = 0; for (; *uri == ' ' && *uri != 0; uri++); version = strchr(uri, ' '); if (NULL == version) return; *version++ = 0; for (; *version == ' ' && *version != 0; version++); request->method = malloc(strlen(method) + 1); strcpy(request->method, method); request->uri = malloc(strlen(uri) + 1); strcpy(request->uri, uri); message->version = malloc(strlen(version) + 1); strcpy(message->version, version); } // vim: set ts=4 sw=4: