Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

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?

UserRevisionLine numberNew 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 #ifndef UHTTP_H
XinZhangMS 0:f7f1f0d76dd6 5 #define UHTTP_H
XinZhangMS 0:f7f1f0d76dd6 6
XinZhangMS 0:f7f1f0d76dd6 7 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 8 extern "C" {
XinZhangMS 0:f7f1f0d76dd6 9 #include <cstddef>
XinZhangMS 0:f7f1f0d76dd6 10 #else
XinZhangMS 0:f7f1f0d76dd6 11 #include <stddef.h>
XinZhangMS 0:f7f1f0d76dd6 12 #include <stdbool.h>
XinZhangMS 0:f7f1f0d76dd6 13 #endif /* __cplusplus */
XinZhangMS 0:f7f1f0d76dd6 14
XinZhangMS 0:f7f1f0d76dd6 15 #include "azure_c_shared_utility/httpheaders.h"
XinZhangMS 0:f7f1f0d76dd6 16 #include "azure_c_shared_utility/macro_utils.h"
XinZhangMS 0:f7f1f0d76dd6 17 #include "azure_c_shared_utility/xio.h"
XinZhangMS 0:f7f1f0d76dd6 18 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 19
XinZhangMS 0:f7f1f0d76dd6 20 typedef struct HTTP_CLIENT_HANDLE_DATA_TAG* HTTP_CLIENT_HANDLE;
XinZhangMS 0:f7f1f0d76dd6 21
XinZhangMS 0:f7f1f0d76dd6 22 #define HTTP_CLIENT_RESULT_VALUES \
XinZhangMS 0:f7f1f0d76dd6 23 HTTP_CLIENT_OK, \
XinZhangMS 0:f7f1f0d76dd6 24 HTTP_CLIENT_INVALID_ARG, \
XinZhangMS 0:f7f1f0d76dd6 25 HTTP_CLIENT_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 26 HTTP_CLIENT_OPEN_FAILED, \
XinZhangMS 0:f7f1f0d76dd6 27 HTTP_CLIENT_SEND_FAILED, \
XinZhangMS 0:f7f1f0d76dd6 28 HTTP_CLIENT_ALREADY_INIT, \
XinZhangMS 0:f7f1f0d76dd6 29 HTTP_CLIENT_HTTP_HEADERS_FAILED, \
XinZhangMS 0:f7f1f0d76dd6 30 HTTP_CLIENT_INVALID_STATE \
XinZhangMS 0:f7f1f0d76dd6 31
XinZhangMS 0:f7f1f0d76dd6 32
XinZhangMS 0:f7f1f0d76dd6 33 /** @brief Enumeration specifying the possible return values for the APIs in
XinZhangMS 0:f7f1f0d76dd6 34 * this module.
XinZhangMS 0:f7f1f0d76dd6 35 */
XinZhangMS 0:f7f1f0d76dd6 36 DEFINE_ENUM(HTTP_CLIENT_RESULT, HTTP_CLIENT_RESULT_VALUES);
XinZhangMS 0:f7f1f0d76dd6 37
XinZhangMS 0:f7f1f0d76dd6 38 #define HTTP_CLIENT_REQUEST_TYPE_VALUES \
XinZhangMS 0:f7f1f0d76dd6 39 HTTP_CLIENT_REQUEST_OPTIONS, \
XinZhangMS 0:f7f1f0d76dd6 40 HTTP_CLIENT_REQUEST_GET, \
XinZhangMS 0:f7f1f0d76dd6 41 HTTP_CLIENT_REQUEST_POST, \
XinZhangMS 0:f7f1f0d76dd6 42 HTTP_CLIENT_REQUEST_PUT, \
XinZhangMS 0:f7f1f0d76dd6 43 HTTP_CLIENT_REQUEST_DELETE, \
XinZhangMS 0:f7f1f0d76dd6 44 HTTP_CLIENT_REQUEST_PATCH
XinZhangMS 0:f7f1f0d76dd6 45
XinZhangMS 0:f7f1f0d76dd6 46 DEFINE_ENUM(HTTP_CLIENT_REQUEST_TYPE, HTTP_CLIENT_REQUEST_TYPE_VALUES);
XinZhangMS 0:f7f1f0d76dd6 47
XinZhangMS 0:f7f1f0d76dd6 48 #define HTTP_CALLBACK_REASON_VALUES \
XinZhangMS 0:f7f1f0d76dd6 49 HTTP_CALLBACK_REASON_OK, \
XinZhangMS 0:f7f1f0d76dd6 50 HTTP_CALLBACK_REASON_OPEN_FAILED, \
XinZhangMS 0:f7f1f0d76dd6 51 HTTP_CALLBACK_REASON_SEND_FAILED, \
XinZhangMS 0:f7f1f0d76dd6 52 HTTP_CALLBACK_REASON_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 53 HTTP_CALLBACK_REASON_PARSING_ERROR, \
XinZhangMS 0:f7f1f0d76dd6 54 HTTP_CALLBACK_REASON_DESTROY, \
XinZhangMS 0:f7f1f0d76dd6 55 HTTP_CALLBACK_REASON_DISCONNECTED
XinZhangMS 0:f7f1f0d76dd6 56
XinZhangMS 0:f7f1f0d76dd6 57 DEFINE_ENUM(HTTP_CALLBACK_REASON, HTTP_CALLBACK_REASON_VALUES);
XinZhangMS 0:f7f1f0d76dd6 58
XinZhangMS 0:f7f1f0d76dd6 59 typedef void(*ON_HTTP_OPEN_COMPLETE_CALLBACK)(void* callback_ctx, HTTP_CALLBACK_REASON open_result);
XinZhangMS 0:f7f1f0d76dd6 60 typedef void(*ON_HTTP_ERROR_CALLBACK)(void* callback_ctx, HTTP_CALLBACK_REASON error_result);
XinZhangMS 0:f7f1f0d76dd6 61 typedef void(*ON_HTTP_REQUEST_CALLBACK)(void* callback_ctx, HTTP_CALLBACK_REASON request_result, const unsigned char* content, size_t content_length, unsigned int status_code,
XinZhangMS 0:f7f1f0d76dd6 62 HTTP_HEADERS_HANDLE response_headers);
XinZhangMS 0:f7f1f0d76dd6 63 typedef void(*ON_HTTP_CLOSED_CALLBACK)(void* callback_ctx);
XinZhangMS 0:f7f1f0d76dd6 64
XinZhangMS 0:f7f1f0d76dd6 65 MOCKABLE_FUNCTION(, HTTP_CLIENT_HANDLE, uhttp_client_create, const IO_INTERFACE_DESCRIPTION*, io_interface_desc, const void*, xio_param, ON_HTTP_ERROR_CALLBACK, on_http_error, void*, callback_ctx);
XinZhangMS 0:f7f1f0d76dd6 66 MOCKABLE_FUNCTION(, void, uhttp_client_destroy, HTTP_CLIENT_HANDLE, handle);
XinZhangMS 0:f7f1f0d76dd6 67 MOCKABLE_FUNCTION(, HTTP_CLIENT_RESULT, uhttp_client_open, HTTP_CLIENT_HANDLE, handle, const char*, host, int, port_num, ON_HTTP_OPEN_COMPLETE_CALLBACK, on_connect, void*, callback_ctx);
XinZhangMS 0:f7f1f0d76dd6 68 MOCKABLE_FUNCTION(, void, uhttp_client_close, HTTP_CLIENT_HANDLE, handle, ON_HTTP_CLOSED_CALLBACK, on_close_callback, void*, callback_ctx);
XinZhangMS 0:f7f1f0d76dd6 69 MOCKABLE_FUNCTION(, HTTP_CLIENT_RESULT, uhttp_client_execute_request, HTTP_CLIENT_HANDLE, handle, HTTP_CLIENT_REQUEST_TYPE, request_type, const char*, relative_path,
XinZhangMS 0:f7f1f0d76dd6 70 HTTP_HEADERS_HANDLE, http_header_handle, const unsigned char*, content, size_t, content_length, ON_HTTP_REQUEST_CALLBACK, on_request_callback, void*, callback_ctx);
XinZhangMS 0:f7f1f0d76dd6 71
XinZhangMS 0:f7f1f0d76dd6 72 MOCKABLE_FUNCTION(, void, uhttp_client_dowork, HTTP_CLIENT_HANDLE, handle);
XinZhangMS 0:f7f1f0d76dd6 73
XinZhangMS 0:f7f1f0d76dd6 74 MOCKABLE_FUNCTION(, HTTP_CLIENT_RESULT, uhttp_client_set_trace, HTTP_CLIENT_HANDLE, handle, bool, trace_on, bool, trace_data);
XinZhangMS 0:f7f1f0d76dd6 75 MOCKABLE_FUNCTION(, HTTP_CLIENT_RESULT, uhttp_client_set_X509_cert, HTTP_CLIENT_HANDLE, handle, bool, ecc_type, const char*, certificate, const char*, private_key);
XinZhangMS 0:f7f1f0d76dd6 76 MOCKABLE_FUNCTION(, HTTP_CLIENT_RESULT, uhttp_client_set_trusted_cert, HTTP_CLIENT_HANDLE, handle, const char*, certificate);
XinZhangMS 0:f7f1f0d76dd6 77 MOCKABLE_FUNCTION(, const char*, uhttp_client_get_trusted_cert, HTTP_CLIENT_HANDLE, handle);
XinZhangMS 0:f7f1f0d76dd6 78 MOCKABLE_FUNCTION(, HTTP_CLIENT_RESULT, uhttp_client_set_option, HTTP_CLIENT_HANDLE, handle, const char*, optionName, const void*, value);
XinZhangMS 0:f7f1f0d76dd6 79
XinZhangMS 0:f7f1f0d76dd6 80 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 81 }
XinZhangMS 0:f7f1f0d76dd6 82 #endif /* __cplusplus */
XinZhangMS 0:f7f1f0d76dd6 83
XinZhangMS 0:f7f1f0d76dd6 84 #endif /* UHTTP_H */