Added httpver to response
parent
3b38fe1ae5
commit
ab82e09798
|
@ -24,15 +24,15 @@ class HttpRequest
|
|||
const char * setUrl(const char *);
|
||||
const char * setUrl(const char *, size_t);
|
||||
const char * getUrl();
|
||||
const char * setHttpVer(const char *);
|
||||
const char * getHttpVer();
|
||||
const char * setHttpVer(const char *); // TODO: setHttpVersion()
|
||||
const char * getHttpVer(); // TODO: getHttpVersion()
|
||||
const char * setMessage(const char *);
|
||||
const char * setMessage(const char *, unsigned int);
|
||||
const char * getMessage();
|
||||
unsigned int getMessageLength() { return message_length; };
|
||||
char method [HTTPREQUEST_METHOD_SIZE];
|
||||
char * url;
|
||||
char httpver [HTTPREQUEST_HTTPVER_SIZE];
|
||||
char httpver [HTTPREQUEST_HTTPVER_SIZE]; // TODO: private
|
||||
HttpHeaders headers;
|
||||
protected:
|
||||
long int message_length;
|
||||
|
|
|
@ -1,21 +1,50 @@
|
|||
#include "HttpResponse.h"
|
||||
|
||||
HttpResponse::HttpResponse(Buffer & buffer): buffer(&buffer), code(200), reason() {};
|
||||
/**
|
||||
* TODO: this is the only constructor really needed unless _TEST_
|
||||
*/
|
||||
HttpResponse::HttpResponse(Buffer & buffer):
|
||||
buffer(&buffer),
|
||||
code(200),
|
||||
reason(),
|
||||
httpver()
|
||||
{};
|
||||
|
||||
HttpResponse::HttpResponse(Buffer & buffer, unsigned int code): buffer(&buffer), code(code), reason() {};
|
||||
HttpResponse::HttpResponse(Buffer & buffer, unsigned int code):
|
||||
buffer(&buffer),
|
||||
code(code),
|
||||
reason(),
|
||||
httpver()
|
||||
{};
|
||||
|
||||
HttpResponse::HttpResponse(Buffer & buffer, unsigned int code, const char * reason)
|
||||
:buffer(&buffer), code(code), reason()
|
||||
HttpResponse::HttpResponse(Buffer & buffer, unsigned int code, const char * reason):
|
||||
buffer(&buffer),
|
||||
code(code),
|
||||
reason(),
|
||||
httpver()
|
||||
{
|
||||
setReason(reason);
|
||||
}
|
||||
|
||||
HttpResponse::HttpResponse(): buffer(), code(200), reason() {};
|
||||
HttpResponse::HttpResponse():
|
||||
buffer(),
|
||||
code(200),
|
||||
reason(),
|
||||
httpver()
|
||||
{};
|
||||
|
||||
HttpResponse::HttpResponse(unsigned int code): buffer(), code(code), reason() {}
|
||||
HttpResponse::HttpResponse(unsigned int code):
|
||||
buffer(),
|
||||
code(code),
|
||||
reason(),
|
||||
httpver()
|
||||
{}
|
||||
|
||||
HttpResponse::HttpResponse(unsigned int code, const char * reason)
|
||||
: buffer(), code(code), reason()
|
||||
HttpResponse::HttpResponse(unsigned int code, const char * reason):
|
||||
buffer(),
|
||||
code(code),
|
||||
reason(),
|
||||
httpver()
|
||||
{
|
||||
setReason(reason);
|
||||
}
|
||||
|
@ -36,6 +65,18 @@ const char * HttpResponse::getReason() const
|
|||
return HttpResponse::getDefaultReason(code);
|
||||
}
|
||||
|
||||
const char * HttpResponse::setHttpVersion(const char * version)
|
||||
{
|
||||
strncpy(httpver, version, HTTPRESPONSE_HTTPVER_SIZE - 1);
|
||||
httpver[HTTPRESPONSE_HTTPVER_SIZE - 1] = '\0';
|
||||
return httpver;
|
||||
}
|
||||
|
||||
const char * HttpResponse::getHttpVersion() const
|
||||
{
|
||||
return httpver;
|
||||
}
|
||||
|
||||
const char * HttpResponse::getDefaultReason(unsigned int code)
|
||||
{
|
||||
switch(code) {
|
||||
|
@ -101,6 +142,8 @@ size_t HttpResponse::write(uint8_t * data, size_t len)
|
|||
size_t HttpResponse::printTo(Print& client) const
|
||||
{
|
||||
size_t len = 0;
|
||||
len += client.print(getHttpVersion());
|
||||
len += client.print(' ');
|
||||
len += client.print((int) code);
|
||||
len += client.print(' ');
|
||||
len += client.println(getReason());
|
||||
|
|
|
@ -11,11 +11,13 @@
|
|||
#include "Print.h"
|
||||
#include "Printable.h"
|
||||
|
||||
#define HTTPRESPONSE_HTTPVER_SIZE 9
|
||||
|
||||
class HttpResponse: public Print, public Printable
|
||||
{
|
||||
public:
|
||||
HttpResponse(Buffer&);
|
||||
HttpResponse(Buffer&, unsigned int);
|
||||
HttpResponse(Buffer&); // TODO: only cnstr needed by WebKernel, add httpver param
|
||||
HttpResponse(Buffer&, unsigned int); // TODO: remove unnecessary constructors
|
||||
HttpResponse(Buffer&, unsigned int, const char *);
|
||||
HttpResponse();
|
||||
HttpResponse(unsigned int code);
|
||||
|
@ -23,6 +25,8 @@ class HttpResponse: public Print, public Printable
|
|||
~HttpResponse();
|
||||
unsigned int code;
|
||||
HttpHeaders headers;
|
||||
const char * setHttpVersion(const char *);
|
||||
const char * getHttpVersion() const;
|
||||
const char * setReason(const char * reason);
|
||||
const char * getReason() const;
|
||||
static const char * getDefaultReason(unsigned int);
|
||||
|
@ -35,4 +39,5 @@ class HttpResponse: public Print, public Printable
|
|||
private:
|
||||
Buffer * buffer;
|
||||
char * reason;
|
||||
char httpver[HTTPRESPONSE_HTTPVER_SIZE];
|
||||
};
|
||||
|
|
|
@ -37,6 +37,7 @@ void WebKernel::handleClients()
|
|||
_client.flush();
|
||||
case S_DISPATCHING:
|
||||
HttpResponse response(_resp_buffer);
|
||||
response.setHttpVersion(_request.getHttpVer());
|
||||
_dispatcher.handle(_request, response);
|
||||
response.headers.set("Connection","close");
|
||||
_client.print(response);
|
||||
|
|
|
@ -39,11 +39,31 @@ TEST_CASE("HttpResponse printTo", "[HttpResponse]")
|
|||
Buffer message(response_buffer, 100);
|
||||
Buffer client(print_buffer, 100);
|
||||
HttpResponse r(message);
|
||||
r.setHttpVersion("HTTP/1.1");
|
||||
|
||||
r.code = 200;
|
||||
r.write("Response Body");
|
||||
r.headers.set("Cookie","1234");
|
||||
client.print(r);
|
||||
|
||||
CHECK_THAT((char *)print_buffer, Equals("200 OK\r\nCookie: 1234\r\n\r\nResponse Body"));
|
||||
CHECK_THAT((char *)print_buffer, Equals("HTTP/1.1 200 OK\r\nCookie: 1234\r\n\r\nResponse Body"));
|
||||
}
|
||||
|
||||
TEST_CASE("HttpResponse get/setHttpVersion", "[HttpResponse]")
|
||||
{
|
||||
HttpResponse r;
|
||||
|
||||
SECTION("Empty") {
|
||||
r.setHttpVersion("");
|
||||
CHECK_THAT(r.getHttpVersion(), Equals(""));
|
||||
}
|
||||
|
||||
SECTION("HTTP/1.1") {
|
||||
r.setHttpVersion("HTTP/1.1");
|
||||
CHECK_THAT(r.getHttpVersion(), Equals("HTTP/1.1"));
|
||||
}
|
||||
|
||||
SECTION("Overflow buffer") {
|
||||
r.setHttpVersion("AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPP");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue