#include "matrix.h"\r
+\r
#include <stdio.h>\r
#include <stdlib.h>\r
#include <string.h>\r
// If s_url is https://, tell client connection to use TLS\r
if (mg_url_is_ssl(client->server))\r
{\r
- struct mg_tls_opts opts = {.srvname = host};\r
+ static struct mg_tls_opts opts;\r
+ opts.srvname = host;\r
mg_tls_init(c, &opts);\r
}\r
\r
struct mg_http_message *hm = (struct mg_http_message *)ev_data;\r
// memcpy_s(client->data, 1024, hm->message.ptr, hm->message.len);\r
// client->dataLen = hm->message.len;\r
- memcpy_s(conn->data, conn->dataCap, hm->body.ptr, hm->body.len);\r
+ memcpy(conn->data, hm->body.ptr, hm->body.len);\r
+ // memcpy_s(conn->data, conn->dataCap, hm->body.ptr, hm->body.len);\r
conn->data[hm->body.len] = '\0';\r
conn->dataLen = hm->body.len;\r
conn->dataReceived = true;\r
+\r
+ //printf("received[%d]:\n%.*s\n", conn->dataLen, conn->dataLen, conn->data);\r
+ }\r
+ if (ev == MG_EV_CLOSE)\r
+ {\r
+ conn->connection = NULL;\r
+ conn->connected = false;\r
}\r
}\r
\r
\r
mg_mgr_init(&conn->mgr);\r
\r
- mg_http_connect(&conn->mgr, client->server, MatrixHttpCallback, client);\r
+ return MatrixHttpConnect(client);\r
+}\r
+\r
+bool\r
+MatrixHttpConnect(\r
+ MatrixClient * client)\r
+{\r
+ MatrixHttpConnection * conn =\r
+ (MatrixHttpConnection *)client->httpUserData;\r
+ \r
+ //struct mg_connection * c =\r
+ mg_http_connect(&conn->mgr, client->server, MatrixHttpCallback, client);\r
\r
while (! conn->connected)\r
mg_mgr_poll(&conn->mgr, 1000);\r
bool authenticated)\r
{\r
MatrixHttpConnection * conn = (MatrixHttpConnection *)client->httpUserData;\r
+ if (! conn->connected)\r
+ MatrixHttpConnect(client);\r
\r
conn->dataReceived = false;\r
\r
struct mg_str host = mg_url_host(client->server);\r
\r
- static char authorizationHeader[AUTHORIZATION_HEADER_LEN] = "\0";\r
+ static char authorizationHeader[AUTHORIZATION_HEADER_LEN];\r
if (authenticated)\r
- sprintf_s(authorizationHeader, AUTHORIZATION_HEADER_LEN,\r
- "Authorization: Bearer %s\r\n", client->accessTokenBuffer);\r
+ sprintf(authorizationHeader,\r
+ "Authorization: Bearer %s\r\n", client->accessToken);\r
+ // sprintf_s(authorizationHeader, AUTHORIZATION_HEADER_LEN,\r
+ // "Authorization: Bearer %s\r\n", client->accessToken);\r
+ else\r
+ authorizationHeader[0] = '\0';\r
+\r
+ printf(\r
+ "GET %s HTTP/1.1\r\n"\r
+ "Host: %.*s\r\n"\r
+ "%s"\r
+ "\r\n",\r
+ url,\r
+ host.len, host.ptr,\r
+ authorizationHeader);\r
\r
mg_printf(conn->connection,\r
"GET %s HTTP/1.1\r\n"\r
bool authenticated)\r
{\r
MatrixHttpConnection * conn = (MatrixHttpConnection *)client->httpUserData;\r
+ if (! conn->connected)\r
+ MatrixHttpConnect(client);\r
\r
conn->dataReceived = false;\r
\r
struct mg_str host = mg_url_host(client->server);\r
\r
- static char authorizationHeader[AUTHORIZATION_HEADER_LEN] = "\0";\r
+ static char authorizationHeader[AUTHORIZATION_HEADER_LEN];\r
if (authenticated)\r
- sprintf_s(authorizationHeader, AUTHORIZATION_HEADER_LEN,\r
- "Authorization: Bearer %s\r\n", client->accessTokenBuffer);\r
+ sprintf(authorizationHeader,\r
+ "Authorization: Bearer %s\r\n", client->accessToken);\r
+ else\r
+ authorizationHeader[0] = '\0';\r
+\r
+ printf(\r
+ "POST %s HTTP/1.0\r\n"\r
+ "Host: %.*s\r\n"\r
+ "%s"\r
+ "Content-Type: application/json\r\n"\r
+ "Content-Length: %d\r\n"\r
+ "\r\n"\r
+ "%s"\r
+ "\r\n",\r
+ url,\r
+ host.len, host.ptr,\r
+ authorizationHeader,\r
+ strlen(requestBuffer),\r
+ requestBuffer);\r
\r
mg_printf(conn->connection,\r
"POST %s HTTP/1.0\r\n"\r
bool authenticated)\r
{\r
MatrixHttpConnection * conn = (MatrixHttpConnection *)client->httpUserData;\r
+ if (! conn->connected)\r
+ MatrixHttpConnect(client);\r
\r
conn->dataReceived = false;\r
\r
\r
static char authorizationHeader[AUTHORIZATION_HEADER_LEN];\r
if (authenticated)\r
- sprintf_s(authorizationHeader, AUTHORIZATION_HEADER_LEN,\r
- "Authorization: Bearer %s\r\n", client->accessTokenBuffer);\r
+ sprintf(authorizationHeader,\r
+ "Authorization: Bearer %s\r\n", client->accessToken);\r
else\r
authorizationHeader[0] = '\0';\r
\r
+ \r
+ printf(\r
+ "PUT %s HTTP/1.0\r\n"\r
+ "Host: %.*s\r\n"\r
+ "%s"\r
+ "Content-Type: application/json\r\n"\r
+ "Content-Length: %d\r\n"\r
+ "\r\n"\r
+ "%s"\r
+ "\r\n",\r
+ url,\r
+ host.len, host.ptr,\r
+ authorizationHeader,\r
+ strlen(requestBuffer),\r
+ requestBuffer);\r
+\r
mg_printf(conn->connection,\r
"PUT %s HTTP/1.0\r\n"\r
"Host: %.*s\r\n"\r