9d9be1ef124de31a2c2b1b11af730dd1be786219
[scilab.git] / scilab / modules / webtools / src / cpp / sciCurl.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *
4  *  Copyright (C) 2017 - ESI-Group - Cedric DELAMARRE
5  *
6  * This file is hereby licensed under the terms of the GNU GPL v2.0,
7  * pursuant to article 5.3.4 of the CeCILL v.2.1.
8  * This file was originally licensed under the terms of the CeCILL v2.1,
9  * and continues to be available under such terms.
10  * For more information, see the COPYING file which you should have received
11  * along with this program.
12  *
13  */
14
15 #ifndef __SCICURL_HXX__
16 #define __SCICURL_HXX__
17
18 #include <curl/curl.h>
19 #include <sys/stat.h>
20
21 #include "internal.hxx"
22
23 extern "C"
24 {
25 #include "dynlib_webtools.h"
26 }
27
28 class WEBTOOLS_IMPEXP SciCurl
29 {
30 public:
31     static SciCurl* getInstance(void);
32     static void destroyInstance(void);
33
34     void getResultAsObject(CURL* curl);
35     void getResultAsFile(CURL* curl, FILE* fd);
36     int setProxy(CURL* curl);
37
38     types::InternalType* getResult(void);
39     void clear(void);
40
41     static int write_result(char* pcInput, size_t size, size_t nmemb, void* output);
42
43 private:
44     SciCurl();
45     ~SciCurl();
46
47     static SciCurl* me;
48     static std::string data;
49     static bool useFile;
50 };
51
52 #endif /* !__SCICURL_HXX__ */