Free (GPLv2) TCP/IP stack developed by TASS Belgium

Fork of PicoTCP by Daniele Lacamera

Committer:
tass
Date:
Fri May 17 12:09:59 2013 +0000
Revision:
1:cfe8984a32b4
Parent:
libraries/picotcp/modules/pico_http_util.h@0:d7f2341ab245
Update for smaller SOCKETQ

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniele 0:d7f2341ab245 1 /*********************************************************************
daniele 0:d7f2341ab245 2 PicoTCP. Copyright (c) 2012 TASS Belgium NV. Some rights reserved.
daniele 0:d7f2341ab245 3 See LICENSE and COPYING for usage.
daniele 0:d7f2341ab245 4
daniele 0:d7f2341ab245 5 Author: Andrei Carp <andrei.carp@tass.be>
daniele 0:d7f2341ab245 6 *********************************************************************/
daniele 0:d7f2341ab245 7
daniele 0:d7f2341ab245 8 #ifndef PICO_HTTP_UTIL_H_
daniele 0:d7f2341ab245 9 #define PICO_HTTP_UTIL_H_
daniele 0:d7f2341ab245 10
daniele 0:d7f2341ab245 11 /* Informational reponses */
daniele 0:d7f2341ab245 12 #define HTTP_CONTINUE 100u
daniele 0:d7f2341ab245 13 #define HTTP_SWITCHING_PROTOCOLS 101u
daniele 0:d7f2341ab245 14 #define HTTP_PROCESSING 102u
daniele 0:d7f2341ab245 15
daniele 0:d7f2341ab245 16 /* Success */
daniele 0:d7f2341ab245 17 #define HTTP_OK 200u
daniele 0:d7f2341ab245 18 #define HTTP_CREATED 201u
daniele 0:d7f2341ab245 19 #define HTTP_ACCEPTED 202u
daniele 0:d7f2341ab245 20 #define HTTP_NON_AUTH_INFO 203u
daniele 0:d7f2341ab245 21 #define HTTP_NO_CONTENT 204u
daniele 0:d7f2341ab245 22 #define HTTP_RESET_CONTENT 205u
daniele 0:d7f2341ab245 23 #define HTTP_PARTIAL_CONTENT 206u
daniele 0:d7f2341ab245 24 #define HTTP_MULTI_STATUS 207u
daniele 0:d7f2341ab245 25 #define HTTP_ALREADY_REPORTED 208u
daniele 0:d7f2341ab245 26 #define HTTP_LOW_SPACE 250u
daniele 0:d7f2341ab245 27 #define HTTP_IM_SPACE 226u
daniele 0:d7f2341ab245 28
daniele 0:d7f2341ab245 29 /* Redirection */
daniele 0:d7f2341ab245 30 #define HTTP_MULTI_CHOICE 300u
daniele 0:d7f2341ab245 31 #define HTTP_MOVED_PERMANENT 301u
daniele 0:d7f2341ab245 32 #define HTTP_FOUND 302u
daniele 0:d7f2341ab245 33 #define HTTP_SEE_OTHER 303u
daniele 0:d7f2341ab245 34 #define HTTP_NOT_MODIFIED 304u
daniele 0:d7f2341ab245 35 #define HTTP_USE_PROXY 305u
daniele 0:d7f2341ab245 36 #define HTTP_SWITCH_PROXY 306u
daniele 0:d7f2341ab245 37 #define HTTP_TEMP_REDIRECT 307u
daniele 0:d7f2341ab245 38 #define HTTP_PERM_REDIRECT 308u
daniele 0:d7f2341ab245 39
daniele 0:d7f2341ab245 40 /* Client error */
daniele 0:d7f2341ab245 41 #define HTTP_BAD_REQUEST 400u
daniele 0:d7f2341ab245 42 #define HTTP_UNAUTH 401u
daniele 0:d7f2341ab245 43 #define HTTP_PAYMENT_REQ 402u
daniele 0:d7f2341ab245 44 #define HTTP_FORBIDDEN 403u
daniele 0:d7f2341ab245 45 #define HTTP_NOT_FOUND 404u
daniele 0:d7f2341ab245 46 #define HTTP_METH_NOT_ALLOWED 405u
daniele 0:d7f2341ab245 47 #define HTTP_NOT_ACCEPTABLE 406u
daniele 0:d7f2341ab245 48 #define HTTP_PROXY_AUTH_REQ 407u
daniele 0:d7f2341ab245 49 #define HTTP_REQ_TIMEOUT 408u
daniele 0:d7f2341ab245 50 #define HTTP_CONFLICT 409u
daniele 0:d7f2341ab245 51 #define HTTP_GONE 410u
daniele 0:d7f2341ab245 52 #define HTTP_LEN_REQ 411u
daniele 0:d7f2341ab245 53 #define HTTP_PRECONDITION_FAIL 412u
daniele 0:d7f2341ab245 54 #define HTTP_REQ_ENT_LARGE 413u
daniele 0:d7f2341ab245 55 #define HTTP_URI_TOO_LONG 414u
daniele 0:d7f2341ab245 56 #define HTTP_UNSUPORTED_MEDIA 415u
daniele 0:d7f2341ab245 57 #define HTTP_REQ_RANGE_NOK 416u
daniele 0:d7f2341ab245 58 #define HTTP_EXPECT_FAILED 417u
daniele 0:d7f2341ab245 59 #define HTTP_TEAPOT 418u
daniele 0:d7f2341ab245 60 #define HTTP_UNPROC_ENTITY 422u
daniele 0:d7f2341ab245 61 #define HTTP_LOCKED 423u
daniele 0:d7f2341ab245 62 #define HTTP_METHOD_FAIL 424u
daniele 0:d7f2341ab245 63 #define HTTP_UNORDERED 425u
daniele 0:d7f2341ab245 64 #define HTTP_UPGRADE_REQ 426u
daniele 0:d7f2341ab245 65 #define HTTP_PRECOND_REQ 428u
daniele 0:d7f2341ab245 66 #define HTTP_TOO_MANY_REQ 429u
daniele 0:d7f2341ab245 67 #define HTTP_HEDER_FIELD_LARGE 431u
daniele 0:d7f2341ab245 68
daniele 0:d7f2341ab245 69 /* Server error */
daniele 0:d7f2341ab245 70 #define HTTP_INTERNAL_SERVER_ERR 500u
daniele 0:d7f2341ab245 71 #define HTTP_NOT_IMPLEMENTED 501u
daniele 0:d7f2341ab245 72 #define HTTP_BAD_GATEWAY 502u
daniele 0:d7f2341ab245 73 #define HTTP_SERVICE_UNAVAILABLE 503u
daniele 0:d7f2341ab245 74 #define HTTP_GATEWAY_TIMEOUT 504u
daniele 0:d7f2341ab245 75 #define HTTP_NOT_SUPPORTED 505u
daniele 0:d7f2341ab245 76 #define HTTP_SERV_LOW_STORAGE 507u
daniele 0:d7f2341ab245 77 #define HTTP_LOOP_DETECTED 508u
daniele 0:d7f2341ab245 78 #define HTTP_NOT_EXTENDED 510u
daniele 0:d7f2341ab245 79 #define HTTP_NETWORK_AUTH 511u
daniele 0:d7f2341ab245 80 #define HTTP_PERMISSION_DENIED 550u
daniele 0:d7f2341ab245 81
daniele 0:d7f2341ab245 82 /* Returns used */
daniele 0:d7f2341ab245 83 #define HTTP_RETURN_ERROR -1
daniele 0:d7f2341ab245 84 #define HTTP_RETURN_OK 0
daniele 0:d7f2341ab245 85
daniele 0:d7f2341ab245 86 /* List of events - shared between client and server */
daniele 0:d7f2341ab245 87 #define EV_HTTP_CON 1u
daniele 0:d7f2341ab245 88 #define EV_HTTP_REQ 2u
daniele 0:d7f2341ab245 89 #define EV_HTTP_PROGRESS 4u
daniele 0:d7f2341ab245 90 #define EV_HTTP_SENT 8u
daniele 0:d7f2341ab245 91 #define EV_HTTP_CLOSE 16u
daniele 0:d7f2341ab245 92 #define EV_HTTP_ERROR 32u
daniele 0:d7f2341ab245 93 #define EV_HTTP_BODY 64u
daniele 0:d7f2341ab245 94 #define EV_HTTP_DNS 128u
daniele 0:d7f2341ab245 95
daniele 0:d7f2341ab245 96 #ifndef TRUE
daniele 0:d7f2341ab245 97 #define TRUE 1
daniele 0:d7f2341ab245 98 #endif
daniele 0:d7f2341ab245 99
daniele 0:d7f2341ab245 100 #ifndef FALSE
daniele 0:d7f2341ab245 101 #define FALSE 0
daniele 0:d7f2341ab245 102 #endif
daniele 0:d7f2341ab245 103
daniele 0:d7f2341ab245 104 struct pico_http_uri
daniele 0:d7f2341ab245 105 {
daniele 0:d7f2341ab245 106 uint8_t protoHttp; // is the protocol Http ?
daniele 0:d7f2341ab245 107 char * host; // hostname
daniele 0:d7f2341ab245 108 uint16_t port; // port if specified
daniele 0:d7f2341ab245 109 char * resource; // resource , ignoring the other possible parameters
daniele 0:d7f2341ab245 110 };
daniele 0:d7f2341ab245 111
daniele 0:d7f2341ab245 112 // used for chunks
daniele 0:d7f2341ab245 113 int pico_itoaHex(uint16_t port, char * ptr);
daniele 0:d7f2341ab245 114 int pico_itoa(uint16_t port, char * ptr);
daniele 0:d7f2341ab245 115 int pico_processURI(const char * uri, struct pico_http_uri * urikey);
daniele 0:d7f2341ab245 116
daniele 0:d7f2341ab245 117 #endif /* PICO_HTTP_UTIL_H_ */