Compare commits
6 Commits
deaea2ebdc
...
master
Author | SHA1 | Date | |
---|---|---|---|
dbbf6bf0c5 | |||
aed4fdb08a | |||
521cdd7941 | |||
a563ec0e79 | |||
49030166f3 | |||
d0d1660367 |
12
main.c
Normal file
12
main.c
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#include "url.h"
|
||||||
|
#include "request.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
char* url_str = "http://www.google.com";
|
||||||
|
// URL* url = new_url(url_str);
|
||||||
|
// printf("Schema is %s\nHostname is %s\nPort is %s\nFilepath is %s\n",get_schema(url),get_hostname(url),get_port(url),get_filepath(url));
|
||||||
|
|
||||||
|
Request* req = new_request(url_str,"GET");
|
||||||
|
printf("%s",make_request(req));
|
||||||
|
}
|
31
request.c
31
request.c
@@ -1,16 +1,43 @@
|
|||||||
#include "stdlib.h"
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "url.h"
|
#include "url.h"
|
||||||
#include "request.h"
|
#include "request.h"
|
||||||
|
|
||||||
|
#define MAX_BUFFER_SIZE 50000
|
||||||
|
|
||||||
struct Request_s {
|
struct Request_s {
|
||||||
URL* url;
|
URL* url;
|
||||||
char* req_type;
|
char* req_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
Request* new_Request(char* url_str,char* req_type_str) {
|
Request* new_request(char* url_str,char* req_type_str) {
|
||||||
Request* req = malloc(sizeof(struct Request_s));
|
Request* req = malloc(sizeof(struct Request_s));
|
||||||
req->url = new_url(url_str);
|
req->url = new_url(url_str);
|
||||||
req->req_type = req_type_str;
|
req->req_type = req_type_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
URL* get_url(Request* req) {
|
||||||
|
return req->url;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* make_request(Request* req) {
|
||||||
|
char* request_str = malloc(sizeof(char) * MAX_BUFFER_SIZE);
|
||||||
|
|
||||||
|
strcat(request_str,req->req_type);
|
||||||
|
strcat(request_str," ");
|
||||||
|
strcat(request_str,get_filepath(req->url));
|
||||||
|
strcat(request_str," HTTP/1.1");
|
||||||
|
strcat(request_str,"\r\n");
|
||||||
|
strcat(request_str,"Host: ");
|
||||||
|
strcat(request_str,get_hostname(req->url));
|
||||||
|
strcat(request_str,"\r\n\r\n");
|
||||||
|
|
||||||
|
return request_str;
|
||||||
|
|
||||||
|
if (strcmp(get_schema(req->url),"http") == 0) {
|
||||||
|
|
||||||
|
} else if (strcmp(get_schema(req->url),"https") == 0) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,3 +1,7 @@
|
|||||||
|
#include "url.h"
|
||||||
|
|
||||||
typedef struct Request_s Request;
|
typedef struct Request_s Request;
|
||||||
|
|
||||||
Request* new_request(char* url,char* req_type);
|
Request* new_request(char* url,char* req_type);
|
||||||
|
URL* get_url(Request* req);
|
||||||
|
char* make_request(Request* req);
|
||||||
|
15
url.c
15
url.c
@@ -7,6 +7,7 @@ struct URL_s {
|
|||||||
char* hostname;
|
char* hostname;
|
||||||
char* port;
|
char* port;
|
||||||
char* filepath;
|
char* filepath;
|
||||||
|
char* url_str;
|
||||||
};
|
};
|
||||||
|
|
||||||
char* get_schema(URL* url) {
|
char* get_schema(URL* url) {
|
||||||
@@ -26,11 +27,15 @@ char* get_filepath(URL* url) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
URL* new_url(char* url_str) {
|
char* url_to_str(URL* url) {
|
||||||
char* url_dup = strdup(url_str);
|
return url->url_str;
|
||||||
URL* url = malloc(sizeof(struct URL_s));
|
}
|
||||||
|
|
||||||
url->schema = strtok(url_dup,":");
|
URL* new_url(char* url_str) {
|
||||||
|
URL* url = malloc(sizeof(struct URL_s));
|
||||||
|
url->url_str = strdup(url_str);
|
||||||
|
|
||||||
|
url->schema = strtok(url->url_str,":");
|
||||||
|
|
||||||
url->hostname = strtok(NULL,"/");
|
url->hostname = strtok(NULL,"/");
|
||||||
|
|
||||||
@@ -42,7 +47,7 @@ URL* new_url(char* url_str) {
|
|||||||
|
|
||||||
url->filepath = strtok(NULL,"/");
|
url->filepath = strtok(NULL,"/");
|
||||||
if (url->filepath == NULL) {
|
if (url->filepath == NULL) {
|
||||||
url->filepath = "/index.html";
|
url->filepath = "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
return url;
|
return url;
|
||||||
|
Reference in New Issue
Block a user