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.
50 lines
1.2 KiB
50 lines
1.2 KiB
#ifndef RESPONSE_H |
|
#define RESPONSE_H |
|
|
|
#include <netinet/in.h> |
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <stdbool.h> |
|
|
|
#include "util.h" |
|
#include "requestresponse.h" |
|
|
|
|
|
/* |
|
* A struct reperesenting an http request |
|
*/ |
|
typedef struct { |
|
// Common versions are: 0.9, 1.0, 1.1, 2.0 |
|
float version; |
|
int statusCode; |
|
char *statusMessage; |
|
HeaderList *headers; |
|
void *body; |
|
unsigned int headerLength; |
|
} Response; |
|
|
|
Response* newResponse(); |
|
/* |
|
* creates the minium viable valid response |
|
*/ |
|
void responseBarebones(Response *rsp); |
|
void connectionEstablished(Response *rsp); |
|
char *responseToString(Response *rsp); |
|
/* sets the body of a response to a string |
|
* @param rsp the response |
|
* @param string the string |
|
* @param updateContentLength whether the content-length header should be auto-updated |
|
* Note: if you want to set a binary body, use responseSetBodyRaw |
|
*/ |
|
void responseSetBody(Response *rsp, char *string, bool updateContentLength); |
|
// TODO: |
|
//void responseSetBodyRaw(Response *rsp, void *body, size_t size, bool updateContentLength); |
|
void responseAddHeader(Response *rsp, char header[]); |
|
Response* newResponseFromSocket(int socket); |
|
void responseFirstLine( Response *req, char line[] ); |
|
|
|
void freeResponse( Response *rsp ); |
|
|
|
|
|
#endif /* ifndef REQUEST_H */
|
|
|