You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
1.9 KiB
91 lines
1.9 KiB
/**
|
|
* \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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#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:
|