| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- * Copyright (C) 2012-2019 UCloud. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License").
- * You may not use this file except in compliance with the License.
- * A copy of the License is located at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * or in the "license" file accompanying this file. This file is distributed
- * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
- #ifndef C_SDK_UTILS_HTTPC_H_
- #define C_SDK_UTILS_HTTPC_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <stdbool.h>
- #include "utils_net.h"
- typedef enum {
- HTTP_GET,
- HTTP_POST,
- HTTP_PUT,
- HTTP_DELETE,
- HTTP_HEAD
- } HTTP_Request_Method;
- /** @brief This structure defines the http_client_t structure. */
- typedef struct {
- int remote_port; /**< HTTP or HTTPS port. */
- utils_network_t net;
- int response_code; /**< Response code. */
- char *header; /**< Custom header. */
- char *auth_user; /**< Username for basic authentication. */
- char *auth_password; /**< Password for basic authentication. */
- } http_client_t;
- /** @brief This structure defines the HTTP data structure. */
- typedef struct {
- int is_more; /**< Indicates if more data needs to be retrieved. */
- int is_chunked; /**< Response data is encoded in portions/chunks.*/
- int retrieve_len; /**< Content length to be retrieved. */
- int response_content_len; /**< Response content length. */
- int response_received_len; /**< Response have received length. */
- int post_buf_len; /**< Post data length. */
- int response_buf_len; /**< Response buffer length. */
- char *post_content_type; /**< Content type of the post data. */
- unsigned char *post_buf; /**< User data to be posted. */
- char *response_buf; /**< Buffer to store the response data. */
- } http_client_data_t;
- int http_client_connect(http_client_t *client, const char *url, int port, const char *ca_crt);
- int http_client_common(http_client_t *client, const char *url, int port, const char *ca_crt,
- HTTP_Request_Method method, http_client_data_t *client_data, uint32_t timeout_ms);
- int http_client_recv_data(http_client_t *client, uint32_t timeout_ms, http_client_data_t *client_data);
- void http_client_close(http_client_t *client);
- int _http_send_user_data(http_client_t *client, http_client_data_t *client_data, uint32_t timeout_ms);
- void http_client_file_md5(char* file_path, char *output);
- void http_client_buffer_md5(char* buffer, uint32_t buffer_len, char *output);
- int _http_send_request(http_client_t *client, const char *url, HTTP_Request_Method method, uint32_t size_fetched, size_t range_len,
- http_client_data_t *client_data, uint32_t timeout_ms);
- #ifdef __cplusplus
- }
- #endif
- #endif /* C_SDK_UTILS_HTTPC_H_ */
|