Advertisement
Anatom

Untitled

Nov 23rd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. .h
  2.  
  3. HttpClient& client;
  4.     int bytesWritten;
  5. public:
  6.     int contentLength;
  7.     char* client_ID;
  8.     char* api_Key;
  9.  
  10.  
  11.     ParamSender(HttpClient& _client) : client(_client) {
  12.         bytesWritten = 0;
  13.         contentLength = 0;
  14.     }
  15.  
  16.     bool start(int _contentLength);
  17.     bool sendParam(const char* name, char* value);
  18.     bool sendParam(const __FlashStringHelper *ifsh, char* value);
  19.     bool end();
  20. };
  21.  
  22.  
  23.  
  24.  
  25. .cpp
  26.  
  27. #include "ParamSender.h"
  28. #include "GSMmodem.h"
  29.  
  30. #define HTTP_PARAMS_PATH "/client/parameter"
  31.  
  32.  
  33. bool ParamSender::start(int _contentLength) {
  34. #ifdef USE_SSL
  35.     client.connectionKeepAlive();
  36. #endif // USE_SSL
  37.  
  38.     client.beginRequest();
  39.     int err = client.post(HTTP_PARAMS_PATH);
  40.     if (err == 0) {
  41.         client.sendHeader(HTTP_HEADER_CONTENT_TYPE, HTTP_URLENCODED);
  42.         client.sendHeader(HTTP_HEADER_CONTENT_LENGTH, contentLength);
  43.         client.sendHeader(HTTP_HEADER_CLIENT_GUID, client_ID);
  44.         client.sendHeader(HTTP_HEADER_API_KEY, api_Key);
  45.         client.endRequest();
  46.         return true;
  47.     }
  48.     else {
  49.         DBGS("ParamSend START failed");
  50.         client.stop();
  51.         return false;
  52.     }
  53. }
  54.  
  55. bool ParamSender::sendParam(const char* name, char* value) {
  56.     int written = 0;
  57.     written += client.write(name);
  58.     written += client.write("=");
  59.     written += client.write(value);
  60.     written += client.write("\n");
  61.     if (written < strlen(name) + strlen(value) + 3) {
  62.         client.stop();
  63.         return false;
  64.     }
  65.     bytesWritten += written;
  66.     return true;
  67. }
  68.  
  69. bool ParamSender::sendParam(const __FlashStringHelper *ifsh, char* value) {
  70.     int written = 0;
  71.     int namelength = 0;
  72.     //written += client.print(name);
  73.  
  74.     PGM_P p = reinterpret_cast<PGM_P>(ifsh);
  75.     p = reinterpret_cast<PGM_P>(ifsh);
  76.     while (1) {
  77.         unsigned char c = pgm_read_byte(p++);
  78.         if (c == 0) break;
  79.         if (client.write(c)) written++;
  80.         else break;
  81.     }
  82.     namelength = written;
  83.     written += client.write("=");
  84.     written += client.write(value);
  85.     written += client.write("\n");
  86.     if (written < namelength + strlen(value) + 3) {
  87.         client.stop();
  88.         return false;
  89.     }
  90.     bytesWritten += written;
  91.     return true;
  92. }
  93.  
  94. bool ParamSender::end() {
  95.     //char buff[16] = { '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.' };
  96.     char buff[8] = { '.','.','.','.','.','.','.','.'};
  97.     while (bytesWritten < contentLength) {
  98.         int toWrite = contentLength - bytesWritten;
  99.         if (toWrite > 8) toWrite = 8;
  100.  
  101.         int written = client.write(buff, toWrite);
  102.         if (written < toWrite) {
  103.             client.stop();
  104.             return false;
  105.         }
  106.         bytesWritten += written;
  107.     }
  108.  
  109.     int status = client.responseStatusCode();
  110.     client.skipResponseHeaders();
  111.     if (!status) {
  112.         client.stop();
  113.         return false;
  114.     }
  115.  
  116.     client.stop();
  117.     return true;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement