GDAL
port
cpl_google_cloud.h
1
/**********************************************************************
2
* Project: CPL - Common Portability Library
3
* Purpose: Google Cloud Storage routines
4
* Author: Even Rouault <even.rouault at spatialys.com>
5
*
6
**********************************************************************
7
* Copyright (c) 2017, Even Rouault <even.rouault at spatialys.com>
8
*
9
* Permission is hereby granted, free of charge, to any person obtaining a
10
* copy of this software and associated documentation files (the "Software"),
11
* to deal in the Software without restriction, including without limitation
12
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
13
* and/or sell copies of the Software, and to permit persons to whom the
14
* Software is furnished to do so, subject to the following conditions:
15
*
16
* The above copyright notice and this permission notice shall be included
17
* in all copies or substantial portions of the Software.
18
*
19
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
* DEALINGS IN THE SOFTWARE.
26
****************************************************************************/
27
28
#ifndef CPL_GOOGLE_CLOUD_INCLUDED_H
29
#define CPL_GOOGLE_CLOUD_INCLUDED_H
30
31
#ifndef DOXYGEN_SKIP
32
33
#include <cstddef>
34
35
#include "
cpl_string.h
"
36
37
#ifdef HAVE_CURL
38
39
#include <curl/curl.h>
40
#include "
cpl_http.h
"
41
#include "cpl_aws.h"
42
#include <map>
43
44
class
VSIGSHandleHelper final:
public
IVSIS3LikeHandleHelper
45
{
46
CPL_DISALLOW_COPY_ASSIGN
(VSIGSHandleHelper)
47
48
CPLString
m_osURL;
49
CPLString
m_osEndpoint;
50
CPLString
m_osBucketObjectKey;
51
CPLString
m_osSecretAccessKey;
52
CPLString
m_osAccessKeyId;
53
bool
m_bUseHeaderFile;
54
GOA2Manager
m_oManager;
55
56
static
bool
GetConfiguration(
CSLConstList
papszOptions,
57
CPLString
& osSecretAccessKey,
58
CPLString
& osAccessKeyId,
59
CPLString
& osHeaderFile,
60
GOA2Manager
& oManager);
61
62
static
bool
GetConfigurationFromConfigFile(
63
CPLString
& osSecretAccessKey,
64
CPLString
& osAccessKeyId,
65
CPLString
& osOAuth2RefreshToken,
66
CPLString
& osOAuth2ClientId,
67
CPLString
& osOAuth2ClientSecret,
68
CPLString
& osCredentials);
69
70
void
RebuildURL()
override
;
71
72
public
:
73
VSIGSHandleHelper(
const
CPLString
& osEndpoint,
74
const
CPLString
& osBucketObjectKey,
75
const
CPLString
& osSecretAccessKey,
76
const
CPLString
& osAccessKeyId,
77
bool
bUseHeaderFile,
78
const
GOA2Manager
& oManager);
79
~VSIGSHandleHelper();
80
81
static
VSIGSHandleHelper* BuildFromURI(
const
char
* pszURI,
82
const
char
* pszFSPrefix,
83
CSLConstList
papszOptions =
nullptr
);
84
85
struct
curl_slist* GetCurlHeaders(
86
const
CPLString
& osVerbosVerb,
87
const
struct
curl_slist* psExistingHeaders,
88
const
void
*pabyDataContent =
nullptr
,
89
size_t
nBytesContent = 0)
const override
;
90
91
const
CPLString
& GetURL()
const override
{
return
m_osURL; }
92
93
CPLString
GetSignedURL(
CSLConstList
papszOptions);
94
95
static
void
CleanMutex();
96
static
void
ClearCache();
97
};
98
99
#endif
/* HAVE_CURL */
100
101
#endif
/* #ifndef DOXYGEN_SKIP */
102
103
#endif
/* CPL_GOOGLE_CLOUD_INCLUDED_H */
GOA2Manager
Manager of Google OAuth2 authentication.
Definition:
cpl_http.h:162
CPLString
Convenient string class based on std::string.
Definition:
cpl_string.h:328
cpl_http.h
CSLConstList
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition:
cpl_port.h:1192
cpl_string.h
CPL_DISALLOW_COPY_ASSIGN
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition:
cpl_port.h:995
Generated for GDAL by
1.8.16.