forked from HISONA/https_client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhttps.h
101 lines (75 loc) · 2.17 KB
/
https.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//
// Created by HISONA on 2016. 2. 29..
//
#ifndef HTTPS_CLIENT_HTTPS_H
#define HTTPS_CLIENT_HTTPS_H
/*---------------------------------------------------------------------*/
#include "mbedtls/net.h"
#include "mbedtls/entropy.h"
#include "mbedtls/ctr_drbg.h"
#include "mbedtls/error.h"
#include "mbedtls/certs.h"
/*---------------------------------------------------------------------*/
#define H_FIELD_SIZE 512
#define H_READ_SIZE 2048
#undef TRUE
#undef FALSE
#define TRUE 1
#define FALSE 0
typedef unsigned char BOOL;
typedef struct
{
char method[8];
int status;
char content_type[H_FIELD_SIZE];
long content_length;
BOOL chunked;
BOOL close;
char location[H_FIELD_SIZE];
char referrer[H_FIELD_SIZE];
char cookie[H_FIELD_SIZE];
char boundary[H_FIELD_SIZE];
} HTTP_HEADER;
typedef struct
{
BOOL verify;
mbedtls_net_context ssl_fd;
mbedtls_entropy_context entropy;
mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_ssl_context ssl;
mbedtls_ssl_config conf;
mbedtls_x509_crt cacert;
} HTTP_SSL;
typedef struct {
BOOL https;
char host[256];
char port[8];
char path[H_FIELD_SIZE];
} HTTP_URL;
typedef struct
{
HTTP_URL url;
HTTP_HEADER request;
HTTP_HEADER response;
HTTP_SSL tls;
long length;
char r_buf[H_READ_SIZE];
long r_len;
BOOL header_end;
char *body;
long body_size;
long body_len;
} HTTP_INFO;
/*---------------------------------------------------------------------*/
char *strtoken(char *src, char *dst, int size);
int http_init(HTTP_INFO *hi, BOOL verify);
int http_close(HTTP_INFO *hi);
int http_get(HTTP_INFO *hi, char *url, char *response, int size);
int http_post(HTTP_INFO *hi, char *url, char *data, char *response, int size);
void http_strerror(char *buf, int len);
int http_open(HTTP_INFO *hi, char *url);
int http_write_header(HTTP_INFO *hi);
int http_write(HTTP_INFO *hi, char *data, int len);
int http_write_end(HTTP_INFO *hi);
int http_read_chunked(HTTP_INFO *hi, char *response, int size);
#endif //HTTPS_CLIENT_HTTPS_H