-
Notifications
You must be signed in to change notification settings - Fork 0
/
wxBupCurl.cpp
93 lines (88 loc) · 2.92 KB
/
wxBupCurl.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*-----------------------------------------------------------------
* Name: wxBupCurl.cpp
* Purpose:
* Author: A. Wiegert
*
* Copyright:
* Licence: wxWidgets licence
*---------------------------------------------------------------- */
/*----------------------------------------------------------------
* Standard wxWidgets headers
*---------------------------------------------------------------- */
// Note __VISUALC__ is defined by wxWidgets, not by MSVC IDE
// and thus won't be defined until some wxWidgets headers are included
#if defined( _MSC_VER )
# if defined ( _DEBUG )
// this statement NEEDS to go BEFORE all headers
# define _CRTDBG_MAP_ALLOC
# endif
#endif
#include "wxBupPreProcDefsh.h" // needs to be first
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
/* For all others, include the necessary headers
* (this file is usually all you need because it
* includes almost all "standard" wxWidgets headers) */
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
// ------------------------------------------------------------------
#include "wxBupPreProcDefsh.h" // needs to be first
#if defined( WANT_CURL )
#include "wxBupCurlh.h"
// ------------------------------------------------------------------
#if defined( _MSC_VER )
// this block needs to go AFTER all headers
#include <crtdbg.h>
#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
#endif
// ------------------------------------------------------------------
MyCurlObject::MyCurlObject ( wxString wsUrl, wxString wsUserAgent )
{
wxASSERT( !wsUrl.IsEmpty() );
wxASSERT( !wsUserAgent.IsEmpty() );
char buf[100];
strcpy( buf, (const char*)wsUrl.mb_str(wxConvUTF8) );
m_curlCode = CURLE_FAILED_INIT;
m_longHttpCode = 0l;
m_pCurl = curl_easy_init();
if( m_pCurl )
{
m_curlCode = curl_easy_setopt( m_pCurl, CURLOPT_URL, buf );
m_curlCode = curl_easy_setopt( m_pCurl, CURLOPT_WRITEFUNCTION, &MyCurlObject::curlWriter);
strcpy( buf, (const char*)wsUserAgent.mb_str(wxConvUTF8) );
m_curlCode = curl_easy_setopt( m_pCurl, CURLOPT_USERAGENT, buf );
m_curlCode = curl_easy_setopt( m_pCurl, CURLOPT_WRITEDATA, &m_curlBuffer);
m_curlCode = curl_easy_perform( m_pCurl);
}
};
// ------------------------------------------------------------------
/**
* Get the HTTP status code.
*/
void MyCurlObject::GetHttpCode( long & lCode )
{
curl_easy_getinfo ( m_pCurl, CURLINFO_RESPONSE_CODE, &lCode );
}
// ------------------------------------------------------------------
/**
* Writer call back for libcurl.
*/
int MyCurlObject::curlWriter(char *data, size_t size, size_t nmemb, void *buffer)
{
int result = 0;
if (buffer != NULL)
{
((std::string *)buffer)->append(data, size * nmemb);
result = size * nmemb;
}
return result;
}
#endif
// ------------------------------- eof ------------------------------