14#ifndef CPL_ALIBABA_OSS_INCLUDED_H
15#define CPL_ALIBABA_OSS_INCLUDED_H
29class VSIOSSHandleHelper final :
public IVSIS3LikeHandleHelper
33 std::string m_osURL{};
34 std::string m_osSecretAccessKey{};
35 std::string m_osAccessKeyId{};
36 std::string m_osEndpoint{};
37 std::string m_osBucket{};
38 std::string m_osObjectKey{};
39 bool m_bUseHTTPS =
false;
40 bool m_bUseVirtualHosting =
false;
42 void RebuildURL()
override;
44 static bool GetConfiguration(
const std::string &osPathForOption,
46 std::string &osSecretAccessKey,
47 std::string &osAccessKeyId);
51 VSIOSSHandleHelper(
const std::string &osSecretAccessKey,
52 const std::string &osAccessKeyId,
53 const std::string &osEndpoint,
54 const std::string &osBucket,
55 const std::string &osObjectKey,
bool bUseHTTPS,
56 bool bUseVirtualHosting);
57 ~VSIOSSHandleHelper()
override;
59 static VSIOSSHandleHelper *
60 BuildFromURI(
const char *pszURI,
const char *pszFSPrefix,
61 bool bAllowNoObject,
CSLConstList papszOptions =
nullptr);
62 static std::string BuildURL(
const std::string &osEndpoint,
63 const std::string &osBucket,
64 const std::string &osObjectKey,
bool bUseHTTPS,
65 bool bUseVirtualHosting);
67 struct curl_slist *GetCurlHeaders(
const std::string &osVerb,
68 struct curl_slist *psHeaders,
69 const void *pabyDataContent =
nullptr,
70 size_t nBytesContent = 0)
const override;
72 bool CanRestartOnError(
const char *,
const char *pszHeaders,
73 bool bSetError)
override;
75 const std::string &GetURL()
const override
80 const std::string &GetBucket()
const
85 const std::string &GetObjectKey()
const
90 const std::string &GetEndpoint()
const
95 bool GetVirtualHosting()
const
97 return m_bUseVirtualHosting;
100 std::string GetCopySourceHeader()
const override
102 return "x-oss-copy-source";
105 void SetEndpoint(
const std::string &osStr);
106 void SetVirtualHosting(
bool b);
111class VSIOSSUpdateParams
114 std::string m_osEndpoint{};
116 explicit VSIOSSUpdateParams(
const VSIOSSHandleHelper *poHelper)
117 : m_osEndpoint(poHelper->GetEndpoint())
121 void UpdateHandlerHelper(VSIOSSHandleHelper *poHelper)
123 poHelper->SetEndpoint(m_osEndpoint);
126 static std::mutex gsMutex;
127 static std::map<std::string, VSIOSSUpdateParams> goMapBucketsToOSSParams;
130 VSIOSSUpdateParams() =
default;
132 static void UpdateMapFromHandle(VSIOSSHandleHelper *poHandleHelper);
133 static void UpdateHandleFromMap(VSIOSSHandleHelper *poHandleHelper);
134 static void ClearCache();
#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:936
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition cpl_port.h:1087
Various convenience functions for working with strings and string lists.