31 #ifndef CPL_HTTP_H_INCLUDED 32 #define CPL_HTTP_H_INCLUDED 36 #include "cpl_progress.h" 46 #ifndef CPL_HTTP_MAX_RETRY 47 #define CPL_HTTP_MAX_RETRY 0 50 #ifndef CPL_HTTP_RETRY_DELAY 51 #define CPL_HTTP_RETRY_DELAY 30.0 58 typedef struct {
char **papszHeaders;
60 GByte *pabyData;
int nDataLen;
96 typedef size_t (*CPLHTTPFetchWriteFunc)(
void *pBuffer,
size_t nSize,
size_t nMemb,
void *pWriteArg);
102 GDALProgressFunc pfnProgress,
104 CPLHTTPFetchWriteFunc pfnWrite,
108 int nMaxSimultaneous,
126 const char *pszScope );
127 char CPL_DLL *GOA2GetAccessToken(
const char *pszRefreshToken,
128 const char *pszScope );
131 const char* pszPrivateKey,
132 const char* pszClientEmail,
133 const char* pszScope,
141 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) 144 void* CPLHTTPSetOptions(
void *pcurl,
const char *pszURL,
const char *
const* papszOptions);
145 char** CPLHTTPGetOptionsFromEnv();
146 double CPLHTTPGetNewRetryDelay(
int response_code,
double dfOldDelay,
147 const char* pszErrBuf,
const char* pszCurlError);
148 void* CPLHTTPIgnoreSigPipe();
149 void CPLHTTPRestoreSigPipeHandler(
void* old_handler);
150 bool CPLMultiPerformWait(
void* hCurlMultiHandle,
int& repeats);
153 bool CPLIsMachinePotentiallyGCEInstance();
154 bool CPLIsMachineForSureGCEInstance();
174 ACCESS_TOKEN_FROM_REFRESH,
179 bool SetAuthFromRefreshToken(
const char* pszRefreshToken,
180 const char* pszClientId,
181 const char* pszClientSecret,
183 bool SetAuthFromServiceAccount(
const char* pszPrivateKey,
184 const char* pszClientEmail,
185 const char* pszScope,
190 AuthMethod GetAuthMethod()
const {
return m_eMethod; }
192 const char* GetBearer()
const;
195 const CPLString& GetPrivateKey()
const {
return m_osPrivateKey; }
198 const CPLString& GetClientEmail()
const {
return m_osClientEmail; }
202 mutable CPLString m_osCurrentBearer{};
203 mutable time_t m_nExpirationTime = 0;
204 AuthMethod m_eMethod = NONE;
207 CPLString m_osClientId{};
208 CPLString m_osClientSecret{};
209 CPLString m_osRefreshToken{};
212 CPLString m_osPrivateKey{};
213 CPLString m_osClientEmail{};
214 CPLString m_osScope{};
215 CPLStringList m_aosAdditionalClaims{};
217 CPLStringList m_aosOptions{};
221 #endif // __cplusplus void CPL_DLL CPLHTTPDestroyMultiResult(CPLHTTPResult **papsResults, int nCount)
Clean the memory associated with the return value of CPLHTTPMultiFetch()
Definition: cpl_http.cpp:1466
CPLMimePart * pasMimePart
Definition: cpl_http.h:91
int CPL_DLL CPLHTTPParseMultipartMime(CPLHTTPResult *psResult)
Parses a MIME multipart message.
Definition: cpl_http.cpp:2113
CPLHTTPResult CPL_DLL * CPLHTTPFetchEx(const char *pszURL, CSLConstList papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg, CPLHTTPFetchWriteFunc pfnWrite, void *pWriteArg)
Definition: cpl_http.cpp:664
char * pszContentType
Definition: cpl_http.h:71
int CPL_DLL CPLHTTPEnabled(void)
Return if CPLHTTP services can be useful.
Definition: cpl_http.cpp:2001
unsigned char GByte
Definition: cpl_port.h:215
char ** papszHeaders
Definition: cpl_http.h:85
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:648
char CPL_DLL ** GOA2GetAccessTokenFromCloudEngineVM(CSLConstList papszOptions)
Definition: cpl_google_oauth2.cpp:418
char ** CSLConstList
Definition: cpl_port.h:1194
int nMimePartCount
Definition: cpl_http.h:88
int nDataAlloc
Definition: cpl_http.h:79
char CPL_DLL * GOA2GetRefreshToken(const char *pszAuthToken, const char *pszScope)
Definition: cpl_google_oauth2.cpp:164
void CPL_DLL CPLHTTPCleanup(void)
Cleanup function to call at application termination.
Definition: cpl_http.cpp:2018
int nDataLen
Definition: cpl_http.h:77
void CPL_DLL CPLHTTPDestroyResult(CPLHTTPResult *psResult)
Clean the memory associated with the return value of CPLHTTPFetch()
Definition: cpl_http.cpp:2080
char CPL_DLL * GOA2GetAuthorizationURL(const char *pszScope)
Definition: cpl_google_oauth2.cpp:127
Definition: cpl_http.h:66
int nStatus
Definition: cpl_http.h:68
GByte * pabyData
Definition: cpl_http.h:82
Definition: cpl_http.h:58
CPLHTTPResult CPL_DLL ** CPLHTTPMultiFetch(const char *const *papszURL, int nURLCount, int nMaxSimultaneous, CSLConstList papszOptions)
Fetch several documents at once.
Definition: cpl_http.cpp:1219
char * pszErrBuf
Definition: cpl_http.h:74