NetBurner 3.1
http_funcs.h
1 /*NB_REVISION*/
2 
3 /*NB_COPYRIGHT*/
4 
5 #ifndef _HTTP_FUNCS_H
6 #define _HTTP_FUNCS_H
7 
8 #include <webclient/web_buffers.h>
9 
10 class ParsedURI
11 {
12  char CachedURI[256];
13  char CachedPath[256];
14  char CachedHost[256];
15  IPADDR CachedHostIp;
16  uint16_t CachedPort;
17 #ifdef WEB_CLIENT_SSL_SUPPORT
18  bool secure;
19 #endif
20 
21  public:
22  void NewUri(const char *uri, uint16_t timeout = 10 * TICKS_PER_SECOND);
23 
24  ParsedURI() { CachedURI[0] = 0; };
25  ParsedURI(const char *uri, uint16_t timeout = 10 * TICKS_PER_SECOND)
26  {
27  CachedURI[0] = 0;
28  NewUri(uri, timeout);
29  };
30  bool valid() { return (CachedURI[0] != 0); };
31  const char *GetPath()
32  {
33  if (valid())
34  return CachedPath;
35  else
36  return NULL;
37  };
38  const char *GetHost()
39  {
40  if (valid())
41  return CachedHost;
42  else
43  return NULL;
44  };
45  IPADDR GetAddr()
46  {
47  if (valid())
48  return CachedHostIp;
49  else
50  return IPADDR4::NullIP();
51  };
52  uint16_t GetPort()
53  {
54  if (valid())
55  return CachedPort;
56  else
57  return 0;
58  };
59 
60 #ifdef WEB_CLIENT_SSL_SUPPORT
61  bool IsSecure()
62  {
63  if (valid()) { return secure; }
64  else
65  {
66  return false;
67  }
68  }
69 #endif
70  void Invalidate() { CachedURI[0] = 0; };
71 };
72 
73 void SetHttpDiag(bool b);
74 
75 #ifndef WebErrorReporterFunc
76 typedef void(WebErrorReporterFunc)(int ErrorState);
77 #endif
78 
79 extern WebErrorReporterFunc *pWebErrorReporter;
80 
81 class ParsedJsonDataSet; // Forward declaraion
82 
83 int DoMultipartStartPost(ParsedURI &TheUri,
84  const char *Seperator,
85  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND,
86  uint32_t contentLength = 0);
87 int DoMultipartStartPost(const char *pUrl,
88  const char *Seperator,
89  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND,
90  uint32_t contentLength = 0);
91 void DoMultipartItem(int tcpfd, const char *Disposition, const char *Seperator, puint8_t data, int len);
92 bool DoMultipartFinished(int tcpfd, const char *Seperator, buffer_object &result_buffer, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
93 
94 bool DoUrlEncodedFormPost( ParsedURI & TheUri,
95  char * headers,
96  char * form_data,
97  buffer_object & result_buffer,
98  uint16_t TIMEOUT_WAIT);
99 
100 bool DoUrlEncodedFormPost( const char * pUrl,
101  char * headers,
102  char * form_data,
103  buffer_object & result_buffer,
104  uint16_t TIMEOUT_WAIT);
105 
106 bool DoJsonPost(const char *pUrl,
107  const char *Json_Data_To_Post,
108  buffer_object &result_buffer,
109  char *AdditionalHeaders = NULL,
110  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
111 bool DoJsonPost(ParsedURI &TheUri,
112  const char *Json_Data_To_Post,
113  buffer_object &result_buffer,
114  char *AdditionalHeaders = NULL,
115  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
116 
117 bool DoJsonPost(const char *pUrl,
118  ParsedJsonDataSet &jsonout,
119  buffer_object &result_buffer,
120  char *AdditionalHeaders,
121  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
122 bool DoJsonPost(ParsedURI &TheUri,
123  ParsedJsonDataSet &jsonout,
124  buffer_object &result_buffer,
125  char *AdditionalHeaders,
126  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
127 
128 // Do a JSON post using a json file template with function file variables call backs etc... like the webserver
129 bool DoJsonPostHttpFile(const char *pUrl,
130  const char *FragmentName,
131  buffer_object &result_buffer,
132  char *AdditionalHeaders,
133  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
134 bool DoJsonPostHttpFile(ParsedURI &TheUri,
135  const char *FragmentName,
136  buffer_object &result_buffer,
137  char *AdditionalHeaders,
138  uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
139 
140 bool DoGet(ParsedURI &TheUri, buffer_object &result_buffer, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
141 bool DoGet(const char *pUrl, buffer_object &result_buffer, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
142 
143 int DoGet(ParsedURI &TheUri, unsigned char *result, int maxl, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
144 int DoGet(const char *pUrl, unsigned char *result, int maxl, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
145 
146 // Do a code update from a URI...
147 int DoGetUpdate(ParsedURI &TheUri, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
148 int DoGetUpdate(const char *pUrl, uint16_t TIMEOUT_WAIT = 10 * TICKS_PER_SECOND);
149 
150 #endif
Used to hold and manipulate IPv4 and IPv6 addresses in dual stack mode.
Definition: ipv6_addr.h:28
#define NULL
Definition: nm_bsp.h:76