15#ifndef CPL_ALIBABA_OSS_INCLUDED_H
16#define CPL_ALIBABA_OSS_INCLUDED_H
30class VSIOSSHandleHelper final :
public IVSIS3LikeHandleHelper
34 std::string m_osURL{};
35 std::string m_osSecretAccessKey{};
36 std::string m_osAccessKeyId{};
37 std::string m_osEndpoint{};
38 std::string m_osBucket{};
39 std::string m_osObjectKey{};
40 bool m_bUseHTTPS =
false;
41 bool m_bUseVirtualHosting =
false;
43 void RebuildURL()
override;
45 static bool GetConfiguration(
const std::string &osPathForOption,
47 std::string &osSecretAccessKey,
48 std::string &osAccessKeyId);
52 VSIOSSHandleHelper(
const std::string &osSecretAccessKey,
53 const std::string &osAccessKeyId,
54 const std::string &osEndpoint,
55 const std::string &osBucket,
56 const std::string &osObjectKey,
bool bUseHTTPS,
57 bool bUseVirtualHosting);
58 ~VSIOSSHandleHelper();
60 static VSIOSSHandleHelper *
61 BuildFromURI(
const char *pszURI,
const char *pszFSPrefix,
62 bool bAllowNoObject,
CSLConstList papszOptions =
nullptr);
63 static std::string BuildURL(
const std::string &osEndpoint,
64 const std::string &osBucket,
65 const std::string &osObjectKey,
bool bUseHTTPS,
66 bool bUseVirtualHosting);
69 GetCurlHeaders(
const std::string &osVerb,
70 const struct curl_slist *psExistingHeaders,
71 const void *pabyDataContent =
nullptr,
72 size_t nBytesContent = 0)
const override;
74 bool CanRestartOnError(
const char *,
const char *pszHeaders,
75 bool bSetError)
override;
77 const std::string &GetURL()
const override
82 const std::string &GetBucket()
const
87 const std::string &GetObjectKey()
const
92 const std::string &GetEndpoint()
const
97 bool GetVirtualHosting()
const
99 return m_bUseVirtualHosting;
102 std::string GetCopySourceHeader()
const override
104 return "x-oss-copy-source";
107 void SetEndpoint(
const std::string &osStr);
108 void SetVirtualHosting(
bool b);
113class VSIOSSUpdateParams
116 std::string m_osEndpoint{};
118 explicit VSIOSSUpdateParams(
const VSIOSSHandleHelper *poHelper)
119 : m_osEndpoint(poHelper->GetEndpoint())
123 void UpdateHandlerHelper(VSIOSSHandleHelper *poHelper)
125 poHelper->SetEndpoint(m_osEndpoint);
128 static std::mutex gsMutex;
129 static std::map<std::string, VSIOSSUpdateParams> goMapBucketsToOSSParams;
132 VSIOSSUpdateParams() =
default;
134 static void UpdateMapFromHandle(VSIOSSHandleHelper *poHandleHelper);
135 static void UpdateHandleFromMap(VSIOSSHandleHelper *poHandleHelper);
136 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:1030
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1179
Various convenience functions for working with strings and string lists.