Fork of my MQTTGateway

Dependencies:   mbed-http

Committer:
vpcola
Date:
Sat Apr 08 14:45:51 2017 +0000
Revision:
0:f1d3878b8dd9
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vpcola 0:f1d3878b8dd9 1 #ifndef _DOWNLOAD_FILE_H_
vpcola 0:f1d3878b8dd9 2 #define _DOWNLOAD_FILE_H_
vpcola 0:f1d3878b8dd9 3
vpcola 0:f1d3878b8dd9 4 #include <stdio.h>
vpcola 0:f1d3878b8dd9 5 #include <string>
vpcola 0:f1d3878b8dd9 6 #include "mbed.h"
vpcola 0:f1d3878b8dd9 7 #include "rtos.h"
vpcola 0:f1d3878b8dd9 8 #include "NetworkInterface.h"
vpcola 0:f1d3878b8dd9 9 #include "https_request.h"
vpcola 0:f1d3878b8dd9 10 #include "http_request.h"
vpcola 0:f1d3878b8dd9 11
vpcola 0:f1d3878b8dd9 12 class DownloadFile
vpcola 0:f1d3878b8dd9 13 {
vpcola 0:f1d3878b8dd9 14 public:
vpcola 0:f1d3878b8dd9 15 DownloadFile(NetworkInterface* nw, const char * file = NULL, const char * capem = NULL)
vpcola 0:f1d3878b8dd9 16 :network(nw),
vpcola 0:f1d3878b8dd9 17 filename(file),
vpcola 0:f1d3878b8dd9 18 pem(capem),
vpcola 0:f1d3878b8dd9 19 useSSL(capem != NULL),
vpcola 0:f1d3878b8dd9 20 fp(NULL),
vpcola 0:f1d3878b8dd9 21 size_written(0),
vpcola 0:f1d3878b8dd9 22 get_req_ssl(NULL),
vpcola 0:f1d3878b8dd9 23 get_req(NULL)
vpcola 0:f1d3878b8dd9 24 {
vpcola 0:f1d3878b8dd9 25 if (filename)
vpcola 0:f1d3878b8dd9 26 {
vpcola 0:f1d3878b8dd9 27 fp = fopen(file, "w+");
vpcola 0:f1d3878b8dd9 28 if (fp != NULL)
vpcola 0:f1d3878b8dd9 29 printf("File open successfull!\r\n");
vpcola 0:f1d3878b8dd9 30 }
vpcola 0:f1d3878b8dd9 31 }
vpcola 0:f1d3878b8dd9 32
vpcola 0:f1d3878b8dd9 33 virtual ~DownloadFile()
vpcola 0:f1d3878b8dd9 34 {
vpcola 0:f1d3878b8dd9 35 if (fp != NULL)
vpcola 0:f1d3878b8dd9 36 fclose(fp);
vpcola 0:f1d3878b8dd9 37
vpcola 0:f1d3878b8dd9 38 // HttpsRequest destructor also free's up
vpcola 0:f1d3878b8dd9 39 // the HttpsResult ... so it must be consumed
vpcola 0:f1d3878b8dd9 40 // before this class goes out of scope
vpcola 0:f1d3878b8dd9 41 if(get_req)
vpcola 0:f1d3878b8dd9 42 delete get_req;
vpcola 0:f1d3878b8dd9 43 if(get_req_ssl)
vpcola 0:f1d3878b8dd9 44 delete get_req_ssl;
vpcola 0:f1d3878b8dd9 45 }
vpcola 0:f1d3878b8dd9 46
vpcola 0:f1d3878b8dd9 47 HttpResponse* get_file(const char * url);
vpcola 0:f1d3878b8dd9 48
vpcola 0:f1d3878b8dd9 49 std::string get_file_content();
vpcola 0:f1d3878b8dd9 50
vpcola 0:f1d3878b8dd9 51 const char * get_filename()
vpcola 0:f1d3878b8dd9 52 {
vpcola 0:f1d3878b8dd9 53 return filename;
vpcola 0:f1d3878b8dd9 54 }
vpcola 0:f1d3878b8dd9 55
vpcola 0:f1d3878b8dd9 56 size_t get_written_size() {
vpcola 0:f1d3878b8dd9 57 return size_written;
vpcola 0:f1d3878b8dd9 58 }
vpcola 0:f1d3878b8dd9 59
vpcola 0:f1d3878b8dd9 60 void basic_auth(const char * user, const char * password);
vpcola 0:f1d3878b8dd9 61
vpcola 0:f1d3878b8dd9 62
vpcola 0:f1d3878b8dd9 63 protected:
vpcola 0:f1d3878b8dd9 64 void body_callback(const char* data, size_t data_len);
vpcola 0:f1d3878b8dd9 65
vpcola 0:f1d3878b8dd9 66 private:
vpcola 0:f1d3878b8dd9 67 NetworkInterface* network;
vpcola 0:f1d3878b8dd9 68 const char * filename;
vpcola 0:f1d3878b8dd9 69 const char * pem;
vpcola 0:f1d3878b8dd9 70 bool useSSL;
vpcola 0:f1d3878b8dd9 71 FILE * fp;
vpcola 0:f1d3878b8dd9 72 size_t size_written;
vpcola 0:f1d3878b8dd9 73 std::string authstr;
vpcola 0:f1d3878b8dd9 74
vpcola 0:f1d3878b8dd9 75 HttpsRequest* get_req_ssl;
vpcola 0:f1d3878b8dd9 76 HttpRequest* get_req;
vpcola 0:f1d3878b8dd9 77 };
vpcola 0:f1d3878b8dd9 78
vpcola 0:f1d3878b8dd9 79 #endif
vpcola 0:f1d3878b8dd9 80