/****************************************************************************************************************************** * MODULE IMPLEMENTATION FILE ****************************************************************************************************************************** * COPYRIGHT (C) 2019 ASR Corporation. * * This file and the software in it is furnished under * license and may only be used or copied in accordance with the terms of the * license. The information in this file is furnished for informational use * only, is subject to change without notice, and should not be construed as * a commitment by ASR Corporation. ASR Corporation assumes no * responsibility or liability for any errors or inaccuracies that may appear * in this document or any software that may be provided in association with * this document. * Except as permitted by such license, no part of this document may be * reproduced, stored in a retrieval system, or transmitted in any form or by * any means without the express written consent of ASR Corporation. * * Title: HTTP Package HTTP API * * Filename: libhttpclient.h * Target, subsystem: Common Platform, HAL * * Authors: Roy Shi * * Description: This file includes all the API that the http Package support * * Last Modified: * * Notes: *********************************************************************************************************************************/ #ifndef __LIBHTTPCLIENT_H__ #define __LIBHTTPCLIENT_H__ #include "quec_cust_feature.h" /* buffer: the buffer is received http context data size: the length of http context data nitems: the http response header "Content-Length" value private_data: user private data */ typedef int (*client_response_cb)(char *buffer, int size, int nitems, void *private_data); typedef void http_client; //#define HTTP_CLIENT_ERROR -1 //#define HTTP_CLIENT_OK 0 #define HTTPCLIENT_MEM_SIZE 2560 enum { HTTPCLIENT_OPT_URL, HTTPCLIENT_OPT_METHOD, HTTPCLIENT_OPT_HTTP1_0, HTTPCLIENT_OPT_HTTPHEADER, HTTPCLIENT_OPT_POSTDATA, HTTPCLIENT_OPT_POSTLENGTH, HTTPCLIENT_OPT_RESPONSECB, HTTPCLIENT_OPT_RESPONSECB_DATA, HTTPCLIENT_OPT_AUTH_TYPE, HTTPCLIENT_OPT_AUTH_USERNAME, HTTPCLIENT_OPT_AUTH_PASSWORD, HTTPCLIENT_OPT_PDP_CID, HTTPCLIENT_OPT_BIND_PORT, #ifdef QUEC_FOTA_BREAK_POINT_DOWN_LOAD_CACHE_FEATURE HTTPCLIENT_QUEC_MINISYS_OFFSET, HTTPCLIENT_QUEC_MINISYS_REQSIZE, HTTPCLIENT_QUEC_MINISYS_BP_ENABLE, HTTPCLIENT_QUEC_MINISYS_CACHE_ENABLE, #endif HTTPCLIENT_OPT_DNS_TYPE, HTTPCLIENT_OPT_PROXY_ENABLE, HTTPCLIENT_OPT_PROXY_URL, HTTPCLIENT_OPT_RECV_TIMEOUT, HTTPCLIENT_OPT_NOSACK, HTTPCLIENT_OPT_NOSCALE, }; enum { HTTPCLIENT_GETINFO_RESPONSE_CODE, HTTPCLIENT_GETINFO_TCP_STATE, }; enum { HTTPCLIENT_REQUEST_GET, HTTPCLIENT_REQUEST_POST, HTTPCLIENT_REQUEST_PUT, HTTPCLIENT_REQUEST_MAX }; enum { HTTP_AUTH_TYPE_BASE = 1, HTTP_AUTH_TYPE_DIGEST }; enum { HTTP_TCP_NOT_ESTABLISHED = 0, HTTP_TCP_ESTABLISHED }; enum { HTTP_CLIENT_ERROR = -1, HTTP_CLIENT_OK = 0, HTTP_CLIENT_BAD_SOCKET_ID, HTTP_CLIENT_NO_MEMORY, HTTP_CLIENT_BAD_HTTP_REQUEST, HTTP_CLIENT_SEND_FAILED, HTTP_CLIENT_RECV_FAILED, HTTP_CLIENT_HEADER_SIZE_TOO_LARGE, HTTP_CLIENT_GET_INVALID_HEADER, HTTP_CLIENT_PROCESS_HEADER_FAILED, HTTP_CLIENT_CALLBACK_FAILED, HTTP_CLIENT_CREATE_SOCKET_FAILED, HTTP_CLIENT_INVALID_LOCATION, HTTP_CLIENT_ACTIVE_STOP, HTTP_CLIENT_DNS_QUERY_FAILED, }; enum { HTTP_DNS_TYPE_IPV4IPV6 = 0, HTTP_DNS_TYPE_IPV6IPV4, HTTP_DNS_TYPE_IPV4, HTTP_DNS_TYPE_IPV6 }; struct http_client_list { char * data; struct http_client_list * next; }; extern struct http_client * http_client_init(void); extern void http_client_shutdown(struct http_client *); extern struct http_client_list * http_client_list_append(struct http_client_list *, const char *); extern void http_client_list_destroy(struct http_client_list *); extern int http_client_setopt(struct http_client *, int, ...); extern int http_client_perform(struct http_client *); extern int http_client_getinfo(struct http_client *, int, void *); extern void http_client_stop(struct http_client * client); #endif