/**************************************************************************//* *//* Copyright (c) Microsoft Corporation. All rights reserved. *//* *//* This software is licensed under the Microsoft Software License *//* Terms for Microsoft Azure RTOS. Full text of the license can be *//* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA *//* and in the root directory of this software. *//* */.../**************************************************************************/.../**************************************************************************//**************************************************************************//** *//** NetX Component *//** *//** Hypertext Transfer Protocol (HTTP) *//** */.../**************************************************************************//**************************************************************************/.../**************************************************************************//* *//* APPLICATION INTERFACE DEFINITION RELEASE *//* *//* nx_web_http_common.h PORTABLE C *//* 6.1.6 *//* AUTHOR *//* *//* Yuxin Zhou, Microsoft Corporation *//* *//* DESCRIPTION *//* *//* This file defines the NetX Web Hypertext Transfer Protocol (HTTP) *//* component, including all data types and external references. *//* It is assumed that nx_api.h and nx_port.h have already been *//* included, along with fx_api.h and fx_port.h. If HTTPS is being used *//* then nx_secure_tls_api.h must also be included. *//* *//* RELEASE HISTORY *//* *//* DATE NAME DESCRIPTION *//* *//* 05-19-2020 Yuxin Zhou Initial Version 6.0 *//* 09-30-2020 Yuxin Zhou Modified comment(s), *//* resulting in version 6.1 *//* 04-02-2021 Yuxin Zhou Modified comment(s), and *//* improved the logic of *//* parsing base64, *//* resulting in version 6.1.6 *//* */.../**************************************************************************/#ifndefNX_WEB_HTTP_COMMON_H#defineNX_WEB_HTTP_COMMON_H/* Determine if a C++ compiler is being used. If so, ensure that standard C is used to process the API information. *//* ... */#ifdef__cplusplus/* Yes, C++ compiler is present. Use standard C. */extern"C"{#endif/* Define the HTTP version. */#defineNX_WEB_HTTP_VERSION"HTTP/1.1"/* Define HTTP TCP socket create options. */#ifndefNX_WEB_HTTP_TYPE_OF_SERVICE#defineNX_WEB_HTTP_TYPE_OF_SERVICENX_IP_NORMAL#endif#ifndefNX_WEB_HTTP_FRAGMENT_OPTION#defineNX_WEB_HTTP_FRAGMENT_OPTIONNX_DONT_FRAGMENT#endif#ifndefNX_WEB_HTTP_TIME_TO_LIVE#defineNX_WEB_HTTP_TIME_TO_LIVE0x80#endif#ifndefNX_WEB_HTTP_MAX_RESOURCE#defineNX_WEB_HTTP_MAX_RESOURCE40#endif#ifndefNX_WEB_HTTP_MAX_NAME#defineNX_WEB_HTTP_MAX_NAME20#endif#ifndefNX_WEB_HTTP_MAX_PASSWORD#defineNX_WEB_HTTP_MAX_PASSWORD20#endif/* To enabled HTTPS, define this symbol #define NX_WEB_HTTPS_ENABLE*//* ... *//* To enable MD5 digest authentication, define this symbol #define NX_WEB_HTTP_DIGEST_ENABLE*//* ... */#ifndefNX_PHYSICAL_TRAILER#defineNX_PHYSICAL_TRAILER4#endif/* NX_WEB_HTTP_MAX_STRING is base64 of "name:password" and plus 1 if an extra conversion is needed and plus 2 pad if needed.. */#defineNX_WEB_HTTP_MAX_STRING((NX_WEB_HTTP_MAX_NAME+NX_WEB_HTTP_MAX_PASSWORD+1)*4/3+1+2)#defineNX_WEB_HTTP_MAX_BINARY_MD516#defineNX_WEB_HTTP_MAX_ASCII_MD532/* Define return code constants. */#defineNX_WEB_HTTP_ERROR0x30000/* HTTP internal error */#defineNX_WEB_HTTP_TIMEOUT0x30001/* HTTP timeout occurred */#defineNX_WEB_HTTP_FAILED0x30002/* HTTP error */#defineNX_WEB_HTTP_DONT_AUTHENTICATE0x30003/* HTTP authentication not needed */#defineNX_WEB_HTTP_BASIC_AUTHENTICATE0x30004/* HTTP basic authentication requested */#defineNX_WEB_HTTP_DIGEST_AUTHENTICATE0x30005/* HTTP digest authentication requested */#defineNX_WEB_HTTP_NOT_FOUND0x30006/* HTTP request not found */#defineNX_WEB_HTTP_DATA_END0x30007/* HTTP end of content area */#defineNX_WEB_HTTP_CALLBACK_COMPLETED0x30008/* HTTP user callback completed the processing */#defineNX_WEB_HTTP_POOL_ERROR0x30009/* HTTP supplied pool payload is too small */#defineNX_WEB_HTTP_NOT_READY0x3000A/* HTTP client not ready for operation */#defineNX_WEB_HTTP_GET_DONE0x3000C/* HTTP client get is complete */#defineNX_WEB_HTTP_BAD_PACKET_LENGTH0x3000D/* Invalid packet received - length incorrect */#defineNX_WEB_HTTP_REQUEST_UNSUCCESSFUL_CODE0x3000E/* Received an error code instead of 2xx from server */#defineNX_WEB_HTTP_INCOMPLETE_PUT_ERROR0x3000F/* Server responds before PUT is complete */#defineNX_WEB_HTTP_PASSWORD_TOO_LONG0x30011/* Password exceeded expected length */#defineNX_WEB_HTTP_USERNAME_TOO_LONG0x30012/* Username exceeded expected length */#defineNX_WEB_HTTP_NO_QUERY_PARSED0x30013/* Server unable to find query in client request */#defineNX_WEB_HTTP_METHOD_ERROR0x30014/* Client method (e.g. GET, POST) was missing required information. */#defineNX_WEB_HTTP_IMPROPERLY_TERMINATED_PARAM0x30015/* Client request parameter not properly terminated */#defineNX_WEB_HTTP_BOUNDARY_ALREADY_FOUND0x30016/* Boundary is already found. */#defineNX_WEB_HTTP_MISSING_CONTENT_LENGTH0x30017/* The Content-Length header was not found. */#defineNX_WEB_HTTP_EXTENSION_NOT_FOUND0x30018/* A searched-for HTTP type extension was not found. */#defineNX_WEB_HTTP_EXTENSION_MIME_DEFAULT0x30019/* No matching extension found, return default. */#defineNX_WEB_HTTP_STATUS_CODE_CONTINUE0x3001A/* "100 Continue" */#defineNX_WEB_HTTP_STATUS_CODE_SWITCHING_PROTOCOLS0x3001B/* "101 Switching Protocols" */#defineNX_WEB_HTTP_STATUS_CODE_CREATED0x3001C/* "201 Created" */#defineNX_WEB_HTTP_STATUS_CODE_ACCEPTED0x3001D/* "202 Accepted" */#defineNX_WEB_HTTP_STATUS_CODE_NON_AUTH_INFO0x3001E/* "203 Non-Authoritative Information" */#defineNX_WEB_HTTP_STATUS_CODE_NO_CONTENT0x3001F/* "204 No Content" */#defineNX_WEB_HTTP_STATUS_CODE_RESET_CONTENT0x30020/* "205 Reset Content" */#defineNX_WEB_HTTP_STATUS_CODE_PARTIAL_CONTENT0x30021/* "206 Partial Content" */#defineNX_WEB_HTTP_STATUS_CODE_MULTIPLE_CHOICES0x30022/* "300 Multiple Choices" */#defineNX_WEB_HTTP_STATUS_CODE_MOVED_PERMANETLY0x30023/* "301 Moved Permanently" */#defineNX_WEB_HTTP_STATUS_CODE_FOUND0x30024/* "302 Found" */#defineNX_WEB_HTTP_STATUS_CODE_SEE_OTHER0x30025/* "303 See Other" */#defineNX_WEB_HTTP_STATUS_CODE_NOT_MODIFIED0x30026/* "304 Not Modified" */#defineNX_WEB_HTTP_STATUS_CODE_USE_PROXY0x30027/* "305 Use Proxy" */#defineNX_WEB_HTTP_STATUS_CODE_TEMPORARY_REDIRECT0x30028/* "307 Temporary Redirect" */#defineNX_WEB_HTTP_STATUS_CODE_BAD_REQUEST0x30029/* "400 Bad Request" */#defineNX_WEB_HTTP_STATUS_CODE_UNAUTHORIZED0x3002A/* "401 Unauthorized" */#defineNX_WEB_HTTP_STATUS_CODE_PAYMENT_REQUIRED0x3002B/* "402 Payment Required" */#defineNX_WEB_HTTP_STATUS_CODE_FORBIDDEN0x3002C/* "403 Forbidden" */#defineNX_WEB_HTTP_STATUS_CODE_NOT_FOUND0x3002D/* "404 Not Found" */#defineNX_WEB_HTTP_STATUS_CODE_METHOD_NOT_ALLOWED0x3002E/* "405 Method Not Allowed" */#defineNX_WEB_HTTP_STATUS_CODE_NOT_ACCEPTABLE0x3002F/* "406 Not Acceptable" */#defineNX_WEB_HTTP_STATUS_CODE_PROXY_AUTH_REQUIRED0x30030/* "407 Proxy Authentication Required" */#defineNX_WEB_HTTP_STATUS_CODE_REQUEST_TIMEOUT0x30031/* "408 Request Time-out" */#defineNX_WEB_HTTP_STATUS_CODE_CONFLICT0x30032/* "409 Conflict" */#defineNX_WEB_HTTP_STATUS_CODE_GONE0x30033/* "410 Gone" */#defineNX_WEB_HTTP_STATUS_CODE_LENGTH_REQUIRED0x30034/* "411 Length Required" */#defineNX_WEB_HTTP_STATUS_CODE_PRECONDITION_FAILED0x30035/* "412 Precondition Failed" */#defineNX_WEB_HTTP_STATUS_CODE_ENTITY_TOO_LARGE0x30036/* "413 Request Entity Too Large" */#defineNX_WEB_HTTP_STATUS_CODE_URL_TOO_LARGE0x30037/* "414 Request-URL Too Large" */#defineNX_WEB_HTTP_STATUS_CODE_UNSUPPORTED_MEDIA0x30038/* "415 Unsupported Media Type" */#defineNX_WEB_HTTP_STATUS_CODE_RANGE_NOT_SATISFY0x30039/* "416 Requested range not satisfiable" */#defineNX_WEB_HTTP_STATUS_CODE_EXPECTATION_FAILED0x3003A/* "417 Expectation Failed" */#defineNX_WEB_HTTP_STATUS_CODE_INTERNAL_ERROR0x3003B/* "500 Internal Server Error" */#defineNX_WEB_HTTP_STATUS_CODE_NOT_IMPLEMENTED0x3003C/* "501 Not Implemented" */#defineNX_WEB_HTTP_STATUS_CODE_BAD_GATEWAY0x3003D/* "502 Bad Gateway" */#defineNX_WEB_HTTP_STATUS_CODE_SERVICE_UNAVAILABLE0x3003E/* "503 Service Unavailable" */#defineNX_WEB_HTTP_STATUS_CODE_GATEWAY_TIMEOUT0x3003F/* "504 Gateway Time-out" */#defineNX_WEB_HTTP_STATUS_CODE_VERSION_ERROR0x30040/* "505 HTTP Version not supported" */#defineNX_WEB_HTTP_AUTHENTICATION_ERRORNX_WEB_HTTP_STATUS_CODE_UNAUTHORIZED/* HTTP client authentication failed *//* Define the HTTP Server TCP port number */#defineNX_WEB_HTTP_SERVER_PORT80/* Port for HTTP server */#defineNX_WEB_HTTPS_SERVER_PORT443/* Port for HTTPS server. *//* Define constants for the various HTTP methods supported. */#defineNX_WEB_HTTP_METHOD_NONE0x0#defineNX_WEB_HTTP_METHOD_GET0x1#defineNX_WEB_HTTP_METHOD_PUT0x2#defineNX_WEB_HTTP_METHOD_POST0x3#defineNX_WEB_HTTP_METHOD_DELETE0x4#defineNX_WEB_HTTP_METHOD_HEAD0x5/* Define status codes. */#defineNX_WEB_HTTP_STATUS_CONTINUE"100 Continue"#defineNX_WEB_HTTP_STATUS_SWITCHING_PROTOCOLS"101 Switching Protocols"#defineNX_WEB_HTTP_STATUS_OK"200 OK"#defineNX_WEB_HTTP_STATUS_CREATED"201 Created"#defineNX_WEB_HTTP_STATUS_ACCEPTED"202 Accepted"#defineNX_WEB_HTTP_STATUS_NON_AUTH_INFO"203 Non-Authoritative Information"#defineNX_WEB_HTTP_STATUS_NO_CONTENT"204 No Content"#defineNX_WEB_HTTP_STATUS_RESET_CONTENT"205 Reset Content"#defineNX_WEB_HTTP_STATUS_PARTIAL_CONTENT"206 Partial Content"#defineNX_WEB_HTTP_STATUS_MULTIPLE_CHOICES"300 Multiple Choices"#defineNX_WEB_HTTP_STATUS_MOVED_PERMANETLY"301 Moved Permanently"#defineNX_WEB_HTTP_STATUS_FOUND"302 Found"#defineNX_WEB_HTTP_STATUS_SEE_OTHER"303 See Other"#defineNX_WEB_HTTP_STATUS_NOT_MODIFIED"304 Not Modified"#defineNX_WEB_HTTP_STATUS_USE_PROXY"305 Use Proxy"#defineNX_WEB_HTTP_STATUS_TEMPORARY_REDIRECT"307 Temporary Redirect"#defineNX_WEB_HTTP_STATUS_BAD_REQUEST"400 Bad Request"#defineNX_WEB_HTTP_STATUS_UNAUTHORIZED"401 Unauthorized"#defineNX_WEB_HTTP_STATUS_PAYMENT_REQUIRED"402 Payment Required"#defineNX_WEB_HTTP_STATUS_FORBIDDEN"403 Forbidden"#defineNX_WEB_HTTP_STATUS_NOT_FOUND"404 Not Found"#defineNX_WEB_HTTP_STATUS_METHOD_NOT_ALLOWED"405 Method Not Allowed"#defineNX_WEB_HTTP_STATUS_NOT_ACCEPTABLE"406 Not Acceptable"#defineNX_WEB_HTTP_STATUS_PROXY_AUTH_REQUIRED"407 Proxy Authentication Required"#defineNX_WEB_HTTP_STATUS_REQUEST_TIMEOUT"408 Request Time-out"#defineNX_WEB_HTTP_STATUS_CONFLICT"409 Conflict"#defineNX_WEB_HTTP_STATUS_GONE"410 Gone"#defineNX_WEB_HTTP_STATUS_LENGTH_REQUIRED"411 Length Required"#defineNX_WEB_HTTP_STATUS_PRECONDITION_FAILED"412 Precondition Failed"#defineNX_WEB_HTTP_STATUS_ENTITY_TOO_LARGE"413 Request Entity Too Large"#defineNX_WEB_HTTP_STATUS_URL_TOO_LARGE"414 Request-URL Too Large"#defineNX_WEB_HTTP_STATUS_UNSUPPORTED_MEDIA"415 Unsupported Media Type"#defineNX_WEB_HTTP_STATUS_RANGE_NOT_SATISFY"416 Requested range not satisfiable"#defineNX_WEB_HTTP_STATUS_EXPECTATION_FAILED"417 Expectation Failed"#defineNX_WEB_HTTP_STATUS_INTERNAL_ERROR"500 Internal Server Error"#defineNX_WEB_HTTP_STATUS_NOT_IMPLEMENTED"501 Not Implemented"#defineNX_WEB_HTTP_STATUS_BAD_GATEWAY"502 Bad Gateway"#defineNX_WEB_HTTP_STATUS_SERVICE_UNAVAILABLE"503 Service Unavailable"#defineNX_WEB_HTTP_STATUS_GATEWAY_TIMEOUT"504 Gateway Time-out"#defineNX_WEB_HTTP_STATUS_VERSION_ERROR"505 HTTP Version not supported"115 defines/* Define the max length of header field. */#ifndefNX_WEB_HTTP_MAX_HEADER_FIELD#defineNX_WEB_HTTP_MAX_HEADER_FIELD256#endif/* Determine if a C++ compiler is being used. If so, complete the standard C conditional started above. *//* ... */#ifdef__cplusplus}extern "C" { ... }#endif/* ... */...#endif/* NX_WEB_HTTP_COMMON_H */
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.