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