31#ifndef CPL_HTTP_H_INCLUDED
32#define CPL_HTTP_H_INCLUDED
36#include "cpl_progress.h"
46#define CPL_HTTP_MAX_RETRY 0
47#define CPL_HTTP_RETRY_DELAY 30.0
53typedef struct {
char **papszHeaders;
55 GByte *pabyData;
int nDataLen;
91typedef size_t (*CPLHTTPFetchWriteFunc)(
void *pBuffer,
size_t nSize,
size_t nMemb,
void *pWriteArg);
97 GDALProgressFunc pfnProgress,
99 CPLHTTPFetchWriteFunc pfnWrite,
103 int nMaxSimultaneous,
121 const char *pszScope );
122char CPL_DLL *GOA2GetAccessToken(
const char *pszRefreshToken,
123 const char *pszScope );
126 const char* pszPrivateKey,
127 const char* pszClientEmail,
128 const char* pszScope,
136#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
139void* CPLHTTPSetOptions(
void *pcurl,
const char *
const* papszOptions);
140char** CPLHTTPGetOptionsFromEnv();
141double CPLHTTPGetNewRetryDelay(
int response_code,
double dfOldDelay);
142void* CPLHTTPIgnoreSigPipe();
143void CPLHTTPRestoreSigPipeHandler(
void* old_handler);
144bool CPLMultiPerformWait(
void* hCurlMultiHandle,
int& repeats);
147bool CPLIsMachinePotentiallyGCEInstance();
148bool CPLIsMachineForSureGCEInstance();
168 ACCESS_TOKEN_FROM_REFRESH,
173 bool SetAuthFromRefreshToken(
const char* pszRefreshToken,
174 const char* pszClientId,
175 const char* pszClientSecret,
177 bool SetAuthFromServiceAccount(
const char* pszPrivateKey,
178 const char* pszClientEmail,
179 const char* pszScope,
184 AuthMethod GetAuthMethod()
const {
return m_eMethod; }
186 const char* GetBearer()
const;
189 const CPLString& GetPrivateKey()
const {
return m_osPrivateKey; }
192 const CPLString& GetClientEmail()
const {
return m_osClientEmail; }
196 mutable CPLString m_osCurrentBearer;
197 mutable time_t m_nExpirationTime;
198 AuthMethod m_eMethod;
201 CPLString m_osClientId;
202 CPLString m_osClientSecret;
203 CPLString m_osRefreshToken;
206 CPLString m_osPrivateKey;
207 CPLString m_osClientEmail;
209 CPLStringList m_aosAdditionalClaims;
211 CPLStringList m_aosOptions;
int CPL_DLL CPLHTTPEnabled(void)
Return if CPLHTTP services can be useful.
Definition: cpl_http.cpp:1853
char CPL_DLL ** GOA2GetAccessTokenFromServiceAccount(const char *pszPrivateKey, const char *pszClientEmail, const char *pszScope, CSLConstList papszAdditionalClaims, CSLConstList papszOptions)
Definition: cpl_google_oauth2.cpp:459
CPLHTTPResult CPL_DLL * CPLHTTPFetch(const char *pszURL, CSLConstList papszOptions)
Fetch a document from an url and return in a string.
Definition: cpl_http.cpp:620
void CPL_DLL CPLHTTPDestroyResult(CPLHTTPResult *psResult)
Clean the memory associated with the return value of CPLHTTPFetch()
Definition: cpl_http.cpp:1932
char CPL_DLL * GOA2GetAuthorizationURL(const char *pszScope)
Definition: cpl_google_oauth2.cpp:127
CPLHTTPResult CPL_DLL * CPLHTTPFetchEx(const char *pszURL, CSLConstList papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg, CPLHTTPFetchWriteFunc pfnWrite, void *pWriteArg)
Definition: cpl_http.cpp:636
char CPL_DLL * GOA2GetRefreshToken(const char *pszAuthToken, const char *pszScope)
Definition: cpl_google_oauth2.cpp:164
CPLHTTPResult CPL_DLL ** CPLHTTPMultiFetch(const char *const *papszURL, int nURLCount, int nMaxSimultaneous, CSLConstList papszOptions)
Fetch several documents at once.
Definition: cpl_http.cpp:1102
int CPL_DLL CPLHTTPParseMultipartMime(CPLHTTPResult *psResult)
Parses a MIME multipart message.
Definition: cpl_http.cpp:1965
void CPL_DLL CPLHTTPCleanup(void)
Cleanup function to call at application termination.
Definition: cpl_http.cpp:1870
char CPL_DLL ** GOA2GetAccessTokenFromCloudEngineVM(CSLConstList papszOptions)
Definition: cpl_google_oauth2.cpp:418
void CPL_DLL CPLHTTPDestroyMultiResult(CPLHTTPResult **papsResults, int nCount)
Clean the memory associated with the return value of CPLHTTPMultiFetch()
Definition: cpl_http.cpp:1350
char ** CSLConstList
Definition: cpl_port.h:1184
unsigned char GByte
Definition: cpl_port.h:213
Definition: cpl_http.h:61
GByte * pabyData
Definition: cpl_http.h:77
int nStatus
Definition: cpl_http.h:63
CPLMimePart * pasMimePart
Definition: cpl_http.h:86
char * pszContentType
Definition: cpl_http.h:66
int nDataAlloc
Definition: cpl_http.h:74
char ** papszHeaders
Definition: cpl_http.h:80
char * pszErrBuf
Definition: cpl_http.h:69
int nMimePartCount
Definition: cpl_http.h:83
int nDataLen
Definition: cpl_http.h:72
Definition: cpl_http.h:53