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

Fork of PicoTCP by Daniele Lacamera

Committer:
daniele
Date:
Sat Aug 03 08:50:27 2013 +0000
Revision:
51:18637a3d071f
Parent:
3:b4047e8a0123
Branch for CDC-ECM: Work in progress

Who changed what in which revision?

UserRevisionLine numberNew 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_ */