Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
lwip/HTTPServer/HTTPFields.h@0:9cf1d79ebe04, 2011-09-08 (annotated)
- Committer:
- geiineuville
- Date:
- Thu Sep 08 08:57:21 2011 +0000
- Revision:
- 0:9cf1d79ebe04
v0 v1 v2 \"v3\"
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
geiineuville | 0:9cf1d79ebe04 | 1 | #ifndef HTTPATTRIBUTE_H |
geiineuville | 0:9cf1d79ebe04 | 2 | #define HTTPATTRIBUTE_H |
geiineuville | 0:9cf1d79ebe04 | 3 | |
geiineuville | 0:9cf1d79ebe04 | 4 | #include "HTTPServer.h" |
geiineuville | 0:9cf1d79ebe04 | 5 | |
geiineuville | 0:9cf1d79ebe04 | 6 | /** |
geiineuville | 0:9cf1d79ebe04 | 7 | * A simple HTTPHandler which will add new fields to the httpresult header. |
geiineuville | 0:9cf1d79ebe04 | 8 | * It can be used for adding caching strtegies. |
geiineuville | 0:9cf1d79ebe04 | 9 | */ |
geiineuville | 0:9cf1d79ebe04 | 10 | class HTTPFields : public HTTPHandler { |
geiineuville | 0:9cf1d79ebe04 | 11 | public: |
geiineuville | 0:9cf1d79ebe04 | 12 | /** |
geiineuville | 0:9cf1d79ebe04 | 13 | * Create new HTTPFields |
geiineuville | 0:9cf1d79ebe04 | 14 | * @param prefix The prefix path on witch we will execute the Handler. Means add the fields. |
geiineuville | 0:9cf1d79ebe04 | 15 | * @param fields The Fields wicht are added to all Handlers with the same prefix and which are added after this one. |
geiineuville | 0:9cf1d79ebe04 | 16 | */ |
geiineuville | 0:9cf1d79ebe04 | 17 | HTTPFields(const char *prefix, const char *fields) : HTTPHandler(prefix) { _fields = fields; } |
geiineuville | 0:9cf1d79ebe04 | 18 | HTTPFields(HTTPServer *server, const char *prefix, const char *fields) : HTTPHandler(prefix) { _fields = fields; server->addHandler(this); } |
geiineuville | 0:9cf1d79ebe04 | 19 | |
geiineuville | 0:9cf1d79ebe04 | 20 | private: |
geiineuville | 0:9cf1d79ebe04 | 21 | /** |
geiineuville | 0:9cf1d79ebe04 | 22 | * The Action methon should work on a Connection. |
geiineuville | 0:9cf1d79ebe04 | 23 | * If the result is HTTP_AddFields the Server will know that we modified the connection header. |
geiineuville | 0:9cf1d79ebe04 | 24 | * If the result is HTTP_Deliver the server will use this object to anwere the request. |
geiineuville | 0:9cf1d79ebe04 | 25 | * |
geiineuville | 0:9cf1d79ebe04 | 26 | * In this case we add new fields to the header. |
geiineuville | 0:9cf1d79ebe04 | 27 | */ |
geiineuville | 0:9cf1d79ebe04 | 28 | virtual HTTPHandle action(HTTPConnection *con) const { |
geiineuville | 0:9cf1d79ebe04 | 29 | char *old = (char *)con->getHeaderFields(); |
geiineuville | 0:9cf1d79ebe04 | 30 | int oldlen = strlen(old); |
geiineuville | 0:9cf1d79ebe04 | 31 | int atrlen = strlen(_fields); |
geiineuville | 0:9cf1d79ebe04 | 32 | char *fields = new char[atrlen+oldlen+3]; |
geiineuville | 0:9cf1d79ebe04 | 33 | strcpy(fields,old); |
geiineuville | 0:9cf1d79ebe04 | 34 | fields[oldlen+0] = '\r'; |
geiineuville | 0:9cf1d79ebe04 | 35 | fields[oldlen+1] = '\n'; |
geiineuville | 0:9cf1d79ebe04 | 36 | strcpy(&fields[oldlen+2], _fields); |
geiineuville | 0:9cf1d79ebe04 | 37 | fields[atrlen+2+oldlen] = '\0'; |
geiineuville | 0:9cf1d79ebe04 | 38 | con->setHeaderFields(fields); |
geiineuville | 0:9cf1d79ebe04 | 39 | if(*old) { |
geiineuville | 0:9cf1d79ebe04 | 40 | delete old; |
geiineuville | 0:9cf1d79ebe04 | 41 | } |
geiineuville | 0:9cf1d79ebe04 | 42 | return HTTP_AddFields; |
geiineuville | 0:9cf1d79ebe04 | 43 | } |
geiineuville | 0:9cf1d79ebe04 | 44 | |
geiineuville | 0:9cf1d79ebe04 | 45 | const char *_fields; |
geiineuville | 0:9cf1d79ebe04 | 46 | }; |
geiineuville | 0:9cf1d79ebe04 | 47 | |
geiineuville | 0:9cf1d79ebe04 | 48 | #endif |
geiineuville | 0:9cf1d79ebe04 | 49 |