doubao_chat/include_lib/net/uC-HTTPc/http-c_app.h

219 lines
10 KiB
C

/*
*********************************************************************************************************
* EXAMPLE CODE
*
* This file is provided as an example on how to use Micrium products.
*
* Please feel free to use any application code labeled as 'EXAMPLE CODE' in
* your application products. Example code may be used as is, in whole or in
* part, or may be used as a reference only. This file can be modified as
* required to meet the end-product requirements.
*
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*
* EXAMPLE
*
* HTTP CLIENT APPLICATION FUNCTIONS FILE
*
* Filename : http-c_app.h
* Version : V3.01.00
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*********************************************************************************************************
* MODULE
*********************************************************************************************************
*********************************************************************************************************
*/
#ifndef HTTPc_APP_MODULE_PRESENT
#define HTTPc_APP_MODULE_PRESENT
/*
*********************************************************************************************************
* FS MODULE
*
* Note(s): If the uC/FS is present in the project, you can enable it for the example application.
*********************************************************************************************************
*/
#define HTTPc_APP_FS_MODULE_PRESENT DEF_NO
/*
*********************************************************************************************************
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*********************************************************************************************************
*/
#include "http-c.h"
#if (HTTPc_APP_FS_MODULE_PRESENT == DEF_YES)
#include <fs_file.h>
#include <fs_type.h>
#endif
/*
*********************************************************************************************************
*********************************************************************************************************
* EXTERNS
*********************************************************************************************************
*********************************************************************************************************
*/
#ifdef HTTPc_APP_MODULE
#define HTTPc_APP_EXT
#else
#define HTTPc_APP_EXT extern
#endif
/*
*********************************************************************************************************
*********************************************************************************************************
* DEFINES
*********************************************************************************************************
*********************************************************************************************************
*/
#define HTTP_SERVER_HOSTNAME "httpbin.org"
#define HTTPc_APP_CFG_CONN_NBR_MAX 5u
#define HTTPc_APP_CFG_REQ_NBR_MAX 5u
#define HTTPc_APP_CFG_CONN_BUF_SIZE 512u
#define HTTPc_APP_CFG_QUERY_STR_NBR_MAX 6u
#define HTTPc_APP_CFG_QUERY_STR_KEY_LEN_MAX 20u
#define HTTPc_APP_CFG_QUERY_STR_VAL_LEN_MAX 50u
#define HTTPc_APP_CFG_HDR_NBR_MAX 6u
#define HTTPc_APP_CFG_HDR_VAL_LEN_MAX 100u
#define HTTPc_APP_CFG_FORM_BUF_SIZE 256u
#define HTTPc_APP_CFG_FORM_FIELD_NBR_MAX 10u
#define HTTPc_APP_CFG_FORM_FIELD_KEY_LEN_MAX 100u
#define HTTPc_APP_CFG_FORM_FIELD_VAL_LEN_MAX 200u
#define HTTPc_APP_CFG_FORM_MULTIPART_NAME_LEN_MAX 100u
#define HTTPc_APP_CFG_FORM_MULTIPART_FILENAME_LEN_MAX 100u
/*
*********************************************************************************************************
*********************************************************************************************************
* LOCAL DATA TYPES
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* CONNECTION DATA TYPE
*********************************************************************************************************
*/
typedef struct httpc_app_conn_data {
CPU_BOOLEAN Close;
} HTTPc_APP_CONN_DATA;
/*
*********************************************************************************************************
* REQUEST DATA TYPE
*********************************************************************************************************
*/
typedef struct httpc_app_req_data {
CPU_BOOLEAN Done;
CPU_INT08U QueryStrIx;
CPU_INT16U FormIx;
#if (HTTPc_APP_FS_MODULE_PRESENT == DEF_YES)
FS_FILE *FilePtr;
#endif
} HTTPc_APP_REQ_DATA;
/*
*********************************************************************************************************
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*********************************************************************************************************
*/
HTTPc_APP_EXT HTTPc_APP_REQ_DATA HTTPcApp_Data[HTTPc_APP_CFG_REQ_NBR_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_Buf[65535]; /*数据接收buffer*/
HTTPc_APP_EXT HTTPc_CONN_OBJ HTTPcApp_ConnTbl[HTTPc_APP_CFG_CONN_NBR_MAX];
HTTPc_APP_EXT HTTPc_REQ_OBJ HTTPcApp_ReqTbl[HTTPc_APP_CFG_REQ_NBR_MAX];
HTTPc_APP_EXT HTTPc_RESP_OBJ HTTPcApp_RespTbl[HTTPc_APP_CFG_REQ_NBR_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_ConnBufTbl[HTTPc_APP_CFG_CONN_NBR_MAX][HTTPc_APP_CFG_CONN_BUF_SIZE];
HTTPc_APP_EXT HTTPc_KEY_VAL HTTPcApp_ReqQueryStrTbl[HTTPc_APP_CFG_QUERY_STR_NBR_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_ReqQueryStrKeyTbl[HTTPc_APP_CFG_QUERY_STR_NBR_MAX][HTTPc_APP_CFG_QUERY_STR_KEY_LEN_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_ReqQueryStrValTbl[HTTPc_APP_CFG_QUERY_STR_NBR_MAX][HTTPc_APP_CFG_QUERY_STR_VAL_LEN_MAX];
HTTPc_APP_EXT HTTPc_HDR HTTPcApp_ReqHdrTbl[HTTPc_APP_CFG_HDR_NBR_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_ReqHdrValStrTbl[HTTPc_APP_CFG_HDR_NBR_MAX][HTTPc_APP_CFG_HDR_VAL_LEN_MAX];
HTTPc_APP_EXT HTTPc_HDR HTTPcApp_RespHdrTbl[HTTPc_APP_CFG_HDR_NBR_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_RespHdrValStrTbl[HTTPc_APP_CFG_HDR_NBR_MAX][HTTPc_APP_CFG_HDR_VAL_LEN_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_FormBuf[HTTPc_APP_CFG_FORM_BUF_SIZE];
HTTPc_APP_EXT HTTPc_FORM_TBL_FIELD HTTPcApp_FormTbl[HTTPc_APP_CFG_FORM_FIELD_NBR_MAX];
HTTPc_APP_EXT HTTPc_KEY_VAL HTTPcApp_FormKeyValTbl[HTTPc_APP_CFG_FORM_FIELD_NBR_MAX];
HTTPc_APP_EXT HTTPc_KEY_VAL_EXT HTTPcApp_FormKeyValExtTbl[HTTPc_APP_CFG_FORM_FIELD_NBR_MAX];
HTTPc_APP_EXT HTTPc_MULTIPART_FILE HTTPcApp_FormMultipartFileTbl[HTTPc_APP_CFG_FORM_FIELD_NBR_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_FormKeyStrTbl[2 * HTTPc_APP_CFG_FORM_FIELD_NBR_MAX][HTTPc_APP_CFG_FORM_FIELD_KEY_LEN_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_FormValStrTbl[2 * HTTPc_APP_CFG_FORM_FIELD_NBR_MAX][HTTPc_APP_CFG_FORM_FIELD_VAL_LEN_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_FormMultipartNameStrTbl[HTTPc_APP_CFG_FORM_FIELD_NBR_MAX][HTTPc_APP_CFG_FORM_MULTIPART_NAME_LEN_MAX];
HTTPc_APP_EXT CPU_CHAR HTTPcApp_FormMultipartFileNameStrTbl[HTTPc_APP_CFG_FORM_FIELD_NBR_MAX][HTTPc_APP_CFG_FORM_MULTIPART_FILENAME_LEN_MAX];
/*
*********************************************************************************************************
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*********************************************************************************************************
*/
CPU_BOOLEAN HTTPcApp_Init(void);
CPU_BOOLEAN HTTPcApp_ReqSendGet(void);
#if (HTTPc_CFG_FORM_EN == DEF_ENABLED)
CPU_BOOLEAN HTTPcApp_ReqSendPost(void);
CPU_BOOLEAN HTTPcApp_ReqSendAppForm(void);
CPU_BOOLEAN HTTPcApp_ReqSendMultipartForm(void);
#endif
CPU_BOOLEAN HTTPcAPP_ReqSendPut(void);
CPU_BOOLEAN HTTPcApp_PersistentConn(void);
CPU_BOOLEAN HTTPcApp_MultiConn(void);
/*
*********************************************************************************************************
*********************************************************************************************************
* MODULE END
*********************************************************************************************************
*********************************************************************************************************
*/
#endif /* HTTPc_APP_MODULE_PRESENT */