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.
c-utility/inc/azure_c_shared_utility/httpapiex.h@0:f7f1f0d76dd6, 2018-08-23 (annotated)
- Committer:
- XinZhangMS
- Date:
- Thu Aug 23 06:52:14 2018 +0000
- Revision:
- 0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| XinZhangMS | 0:f7f1f0d76dd6 | 1 | // Copyright (c) Microsoft. All rights reserved. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 3 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 4 | /** @file httpapiex.h | 
| XinZhangMS | 0:f7f1f0d76dd6 | 5 | * @brief This is a utility module that provides HTTP requests with | 
| XinZhangMS | 0:f7f1f0d76dd6 | 6 | * build-in retry capabilities. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 7 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 8 | * @details HTTAPIEX is a utility module that provides HTTP requests with build-in | 
| XinZhangMS | 0:f7f1f0d76dd6 | 9 | * retry capability to an HTTP server. Features over "regular" HTTPAPI include: | 
| XinZhangMS | 0:f7f1f0d76dd6 | 10 | * - Optional parameters | 
| XinZhangMS | 0:f7f1f0d76dd6 | 11 | * - Implementation independent | 
| XinZhangMS | 0:f7f1f0d76dd6 | 12 | * - Retry mechanism | 
| XinZhangMS | 0:f7f1f0d76dd6 | 13 | * - Persistent options | 
| XinZhangMS | 0:f7f1f0d76dd6 | 14 | */ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 15 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 16 | #ifndef HTTPAPIEX_H | 
| XinZhangMS | 0:f7f1f0d76dd6 | 17 | #define HTTPAPIEX_H | 
| XinZhangMS | 0:f7f1f0d76dd6 | 18 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 19 | #include "azure_c_shared_utility/macro_utils.h" | 
| XinZhangMS | 0:f7f1f0d76dd6 | 20 | #include "azure_c_shared_utility/httpapi.h" | 
| XinZhangMS | 0:f7f1f0d76dd6 | 21 | #include "azure_c_shared_utility/umock_c_prod.h" | 
| XinZhangMS | 0:f7f1f0d76dd6 | 22 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 23 | #ifdef __cplusplus | 
| XinZhangMS | 0:f7f1f0d76dd6 | 24 | #include <cstddef> | 
| XinZhangMS | 0:f7f1f0d76dd6 | 25 | extern "C" { | 
| XinZhangMS | 0:f7f1f0d76dd6 | 26 | #else | 
| XinZhangMS | 0:f7f1f0d76dd6 | 27 | #include <stddef.h> | 
| XinZhangMS | 0:f7f1f0d76dd6 | 28 | #endif | 
| XinZhangMS | 0:f7f1f0d76dd6 | 29 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 30 | typedef struct HTTPAPIEX_HANDLE_DATA_TAG* HTTPAPIEX_HANDLE; | 
| XinZhangMS | 0:f7f1f0d76dd6 | 31 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 32 | #define HTTPAPIEX_RESULT_VALUES \ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 33 | HTTPAPIEX_OK, \ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 34 | HTTPAPIEX_ERROR, \ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 35 | HTTPAPIEX_INVALID_ARG, \ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 36 | HTTPAPIEX_RECOVERYFAILED | 
| XinZhangMS | 0:f7f1f0d76dd6 | 37 | /*to be continued*/ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 38 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 39 | /** @brief Enumeration specifying the status of calls to various APIs in this module. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 40 | */ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 41 | DEFINE_ENUM(HTTPAPIEX_RESULT, HTTPAPIEX_RESULT_VALUES); | 
| XinZhangMS | 0:f7f1f0d76dd6 | 42 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 43 | /** | 
| XinZhangMS | 0:f7f1f0d76dd6 | 44 | * @brief Creates an @c HTTPAPIEX_HANDLE that can be used in further calls. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 45 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 46 | * @param hostName Pointer to a null-terminated string that contains the host name | 
| XinZhangMS | 0:f7f1f0d76dd6 | 47 | * of an HTTP server. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 48 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 49 | * If @p hostName is @c NULL then @c HTTPAPIEX_Create returns @c NULL. The @p | 
| XinZhangMS | 0:f7f1f0d76dd6 | 50 | * hostName value is saved and associated with the returned handle. If creating | 
| XinZhangMS | 0:f7f1f0d76dd6 | 51 | * the handle fails for any reason, then @c HTTAPIEX_Create returns @c NULL. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 52 | * Otherwise, @c HTTPAPIEX_Create returns an @c HTTAPIEX_HANDLE suitable for | 
| XinZhangMS | 0:f7f1f0d76dd6 | 53 | * further calls to the module. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 54 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 55 | * @return An @c HTTAPIEX_HANDLE suitable for further calls to the module. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 56 | */ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 57 | MOCKABLE_FUNCTION(, HTTPAPIEX_HANDLE, HTTPAPIEX_Create, const char*, hostName); | 
| XinZhangMS | 0:f7f1f0d76dd6 | 58 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 59 | /** | 
| XinZhangMS | 0:f7f1f0d76dd6 | 60 | * @brief Tries to execute an HTTP request. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 61 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 62 | * @param handle A valid @c HTTPAPIEX_HANDLE value. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 63 | * @param requestType A value from the ::HTTPAPI_REQUEST_TYPE enum. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 64 | * @param relativePath Relative path to send the request to on the server. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 65 | * @param requestHttpHeadersHandle Handle to the request HTTP headers. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 66 | * @param requestContent The request content. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 67 | * @param statusCode If non-null, the HTTP status code is written to this | 
| XinZhangMS | 0:f7f1f0d76dd6 | 68 | * pointer. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 69 | * @param responseHttpHeadersHandle Handle to the response HTTP headers. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 70 | * @param responseContent The response content. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 71 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 72 | * @c HTTPAPIEX_ExecuteRequest tries to execute an HTTP request of type @p | 
| XinZhangMS | 0:f7f1f0d76dd6 | 73 | * requestType, on the server's @p relativePath, pushing the request HTTP | 
| XinZhangMS | 0:f7f1f0d76dd6 | 74 | * headers @p requestHttpHeadersHandle, having the content of the request | 
| XinZhangMS | 0:f7f1f0d76dd6 | 75 | * as pointed to by @p requestContent. If successful, @c HTTAPIEX_ExecuteRequest | 
| XinZhangMS | 0:f7f1f0d76dd6 | 76 | * writes in the out @p parameter statusCode the HTTP status, populates the @p | 
| XinZhangMS | 0:f7f1f0d76dd6 | 77 | * responseHeadersHandle with the response headers and copies the response body | 
| XinZhangMS | 0:f7f1f0d76dd6 | 78 | * to @p responseContent. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 79 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 80 | * @return An @c HTTAPIEX_HANDLE suitable for further calls to the module. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 81 | */ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 82 | MOCKABLE_FUNCTION(, HTTPAPIEX_RESULT, HTTPAPIEX_ExecuteRequest, HTTPAPIEX_HANDLE, handle, HTTPAPI_REQUEST_TYPE, requestType, const char*, relativePath, HTTP_HEADERS_HANDLE, requestHttpHeadersHandle, BUFFER_HANDLE, requestContent, unsigned int*, statusCode, HTTP_HEADERS_HANDLE, responseHttpHeadersHandle, BUFFER_HANDLE, responseContent); | 
| XinZhangMS | 0:f7f1f0d76dd6 | 83 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 84 | /** | 
| XinZhangMS | 0:f7f1f0d76dd6 | 85 | * @brief Frees all resources used by the @c HTTPAPIEX_HANDLE object. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 86 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 87 | * @param handle The @c HTTPAPIEX_HANDLE object to be freed. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 88 | */ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 89 | MOCKABLE_FUNCTION(, void, HTTPAPIEX_Destroy, HTTPAPIEX_HANDLE, handle); | 
| XinZhangMS | 0:f7f1f0d76dd6 | 90 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 91 | /** | 
| XinZhangMS | 0:f7f1f0d76dd6 | 92 | * @brief Sets the option @p optionName to the value pointed to by @p value. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 93 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 94 | * @param handle The @c HTTPAPIEX_HANDLE representing this session. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 95 | * @param optionName Name of the option. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 96 | * @param value The value to be set for the option. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 97 | * | 
| XinZhangMS | 0:f7f1f0d76dd6 | 98 | * @return An @c HTTPAPIEX_RESULT indicating the status of the call. | 
| XinZhangMS | 0:f7f1f0d76dd6 | 99 | */ | 
| XinZhangMS | 0:f7f1f0d76dd6 | 100 | MOCKABLE_FUNCTION(, HTTPAPIEX_RESULT, HTTPAPIEX_SetOption, HTTPAPIEX_HANDLE, handle, const char*, optionName, const void*, value); | 
| XinZhangMS | 0:f7f1f0d76dd6 | 101 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 102 | #ifdef __cplusplus | 
| XinZhangMS | 0:f7f1f0d76dd6 | 103 | } | 
| XinZhangMS | 0:f7f1f0d76dd6 | 104 | #endif | 
| XinZhangMS | 0:f7f1f0d76dd6 | 105 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 106 | #endif /* HTTPAPIEX_H */ |