28 #ifndef CPL_GOOGLE_CLOUD_INCLUDED_H
29 #define CPL_GOOGLE_CLOUD_INCLUDED_H
39 #include <curl/curl.h>
44 class VSIGSHandleHelper final:
public IVSIS3LikeHandleHelper
53 bool m_bUseHeaderFile;
55 std::string m_osUserProject{};
57 static bool GetConfiguration(
const std::string& osPathForOption,
64 static bool GetConfigurationFromConfigFile(
72 void RebuildURL()
override;
75 VSIGSHandleHelper(
const CPLString& osEndpoint,
81 const std::string& osUserProject);
84 static VSIGSHandleHelper* BuildFromURI(
const char* pszURI,
85 const char* pszFSPrefix,
88 bool UsesHMACKey()
const;
90 struct curl_slist* GetCurlHeaders(
92 const struct curl_slist* psExistingHeaders,
93 const void *pabyDataContent =
nullptr,
94 size_t nBytesContent = 0)
const override;
96 const CPLString& GetURL()
const override {
return m_osURL; }
98 CPLString GetCopySourceHeader()
const override {
return "x-goog-copy-source"; }
99 const char* GetMetadataDirectiveREPLACE()
const override {
return "x-goog-metadata-directive: REPLACE"; }
103 static void CleanMutex();
104 static void ClearCache();