LCOV - code coverage report
Current view: top level - port - cpl_azure.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 9 9 100.0 %
Date: 2024-11-21 22:18:42 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /**********************************************************************
       2             :  * Project:  CPL - Common Portability Library
       3             :  * Purpose:  Microsoft Azure Storage Blob 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             :  * SPDX-License-Identifier: MIT
      10             :  ****************************************************************************/
      11             : 
      12             : #ifndef CPL_AZURE_INCLUDED_H
      13             : #define CPL_AZURE_INCLUDED_H
      14             : 
      15             : #ifndef DOXYGEN_SKIP
      16             : 
      17             : #ifdef HAVE_CURL
      18             : 
      19             : #include <curl/curl.h>
      20             : #include "cpl_http.h"
      21             : #include "cpl_aws.h"
      22             : #include <map>
      23             : 
      24             : class VSIAzureBlobHandleHelper final : public IVSIS3LikeHandleHelper
      25             : {
      26             :     std::string m_osPathForOption;
      27             :     std::string m_osURL;
      28             :     std::string m_osEndpoint;
      29             :     std::string m_osBucket;
      30             :     std::string m_osObjectKey;
      31             :     std::string m_osStorageAccount;
      32             :     std::string m_osStorageKey;
      33             :     std::string m_osSAS;
      34             :     std::string m_osAccessToken;
      35             :     bool m_bFromManagedIdentities;
      36             :     bool m_bIncludeMSVersion = true;
      37             : 
      38             :     enum class Service
      39             :     {
      40             :         SERVICE_BLOB,
      41             :         SERVICE_ADLS,
      42             :     };
      43             : 
      44             :     static bool GetConfiguration(const std::string &osPathForOption,
      45             :                                  CSLConstList papszOptions, Service eService,
      46             :                                  bool &bUseHTTPS, std::string &osEndpoint,
      47             :                                  std::string &osStorageAccount,
      48             :                                  std::string &osStorageKey, std::string &osSAS,
      49             :                                  std::string &osAccessToken,
      50             :                                  bool &bFromManagedIdentities);
      51             : 
      52             :     static std::string BuildURL(const std::string &osEndpoint,
      53             :                                 const std::string &osBucket,
      54             :                                 const std::string &osObjectKey,
      55             :                                 const std::string &osSAS);
      56             : 
      57             :     void RebuildURL() override;
      58             : 
      59             :   public:
      60             :     VSIAzureBlobHandleHelper(
      61             :         const std::string &osPathForOption, const std::string &osEndpoint,
      62             :         const std::string &osBucket, const std::string &osObjectKey,
      63             :         const std::string &osStorageAccount, const std::string &osStorageKey,
      64             :         const std::string &osSAS, const std::string &osAccessToken,
      65             :         bool bFromManagedIdentities);
      66             :     ~VSIAzureBlobHandleHelper();
      67             : 
      68             :     static VSIAzureBlobHandleHelper *
      69             :     BuildFromURI(const char *pszURI, const char *pszFSPrefix,
      70             :                  const char *pszURIForPathSpecificOption = nullptr,
      71             :                  CSLConstList papszOptions = nullptr);
      72             : 
      73           8 :     void SetIncludeMSVersion(bool bInclude)
      74             :     {
      75           8 :         m_bIncludeMSVersion = bInclude;
      76           8 :     }
      77             : 
      78             :     struct curl_slist *
      79             :     GetCurlHeaders(const std::string &osVerbosVerb,
      80             :                    const struct curl_slist *psExistingHeaders,
      81             :                    const void *pabyDataContent = nullptr,
      82             :                    size_t nBytesContent = 0) const override;
      83             : 
      84         556 :     const std::string &GetURL() const override
      85             :     {
      86         556 :         return m_osURL;
      87             :     }
      88             : 
      89             :     std::string GetSignedURL(CSLConstList papszOptions);
      90             : 
      91             :     static void ClearCache();
      92             : 
      93             :     std::string GetSASQueryString() const;
      94             : 
      95           6 :     const std::string &GetStorageAccount() const
      96             :     {
      97           6 :         return m_osStorageAccount;
      98             :     }
      99             : 
     100           6 :     const std::string &GetBucket() const
     101             :     {
     102           6 :         return m_osBucket;
     103             :     }
     104             : };
     105             : 
     106             : namespace cpl
     107             : {
     108             : int GetAzureAppendBufferSize();
     109             : }
     110             : 
     111             : #endif /* HAVE_CURL */
     112             : 
     113             : #endif /* #ifndef DOXYGEN_SKIP */
     114             : 
     115             : #endif /* CPL_AZURE_INCLUDED_H */

Generated by: LCOV version 1.14