azure-blob 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/azure_blob/client.rb +19 -4
- data/lib/azure_blob/http.rb +6 -2
- data/lib/azure_blob/tags.rb +35 -0
- data/lib/azure_blob/version.rb +1 -1
- metadata +2 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c6c4e076840dd6671c28c99b5fca03057782e81686c0c06890b42cedd3b83788
         | 
| 4 | 
            +
              data.tar.gz: '00668582cecce526ad816a5c537469af7e646d6f64d7392655d1c7e60396393c'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fdd32b7f8547ac428bf0eb19d884860e94d1ab9471df0022356119c5ec28aca8589d1b1925d0085b2361c4c16d5898123a1fc18f57b5b2cb9ae7e53dbc4b4379
         | 
| 7 | 
            +
              data.tar.gz: 44a4592046d5d33432762cfd4d3636500f9c13db00cf5c705fbc2f472b7c322bd37bc05d9765e03079e0966dcb44d0e5cc844db303906aaa18435c8db7ee422f
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/lib/azure_blob/client.rb
    CHANGED
    
    | @@ -4,6 +4,7 @@ require_relative "block_list" | |
| 4 4 | 
             
            require_relative "blob_list"
         | 
| 5 5 | 
             
            require_relative "blob"
         | 
| 6 6 | 
             
            require_relative "container"
         | 
| 7 | 
            +
            require_relative "tags"
         | 
| 7 8 | 
             
            require_relative "http"
         | 
| 8 9 | 
             
            require_relative "shared_key_signer"
         | 
| 9 10 | 
             
            require_relative "entra_id_signer"
         | 
| @@ -28,7 +29,7 @@ module AzureBlob | |
| 28 29 | 
             
                    )
         | 
| 29 30 | 
             
                  end
         | 
| 30 31 | 
             
                  @signer = using_managed_identities ?
         | 
| 31 | 
            -
                    AzureBlob::EntraIdSigner.new(account_name:, host:, principal_id: | 
| 32 | 
            +
                    AzureBlob::EntraIdSigner.new(account_name:, host:, principal_id:) :
         | 
| 32 33 | 
             
                    AzureBlob::SharedKeySigner.new(account_name:, access_key:)
         | 
| 33 34 | 
             
                end
         | 
| 34 35 |  | 
| @@ -157,6 +158,20 @@ module AzureBlob | |
| 157 158 | 
             
                  Blob.new(response)
         | 
| 158 159 | 
             
                end
         | 
| 159 160 |  | 
| 161 | 
            +
                # Returns the tags associated with a blob
         | 
| 162 | 
            +
                #
         | 
| 163 | 
            +
                # Calls to the {Get Blob Tags}[https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-tags] endpoint.
         | 
| 164 | 
            +
                #
         | 
| 165 | 
            +
                # Takes a key (path) of the blob.
         | 
| 166 | 
            +
                #
         | 
| 167 | 
            +
                # Returns a hash of the blob's tags.
         | 
| 168 | 
            +
                def get_blob_tags(key)
         | 
| 169 | 
            +
                  uri = generate_uri("#{container}/#{key}?comp=tags")
         | 
| 170 | 
            +
                  response = Http.new(uri, signer:).get
         | 
| 171 | 
            +
             | 
| 172 | 
            +
                  Tags.from_response(response).to_h
         | 
| 173 | 
            +
                end
         | 
| 174 | 
            +
             | 
| 160 175 | 
             
                # Returns a Container object.
         | 
| 161 176 | 
             
                #
         | 
| 162 177 | 
             
                # Calls to {Get Container Properties}[https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties]
         | 
| @@ -230,7 +245,7 @@ module AzureBlob | |
| 230 245 | 
             
                    "x-ms-blob-content-disposition": options[:content_disposition],
         | 
| 231 246 | 
             
                  }
         | 
| 232 247 |  | 
| 233 | 
            -
                  Http.new(uri, headers,  | 
| 248 | 
            +
                  Http.new(uri, headers, signer:, **options.slice(:metadata, :tags)).put(nil)
         | 
| 234 249 | 
             
                end
         | 
| 235 250 |  | 
| 236 251 | 
             
                # Append a block to an Append Blob
         | 
| @@ -305,7 +320,7 @@ module AzureBlob | |
| 305 320 | 
             
                    "x-ms-blob-content-disposition": options[:content_disposition],
         | 
| 306 321 | 
             
                  }
         | 
| 307 322 |  | 
| 308 | 
            -
                  Http.new(uri, headers,  | 
| 323 | 
            +
                  Http.new(uri, headers, signer:, **options.slice(:metadata, :tags)).put(content)
         | 
| 309 324 | 
             
                end
         | 
| 310 325 |  | 
| 311 326 | 
             
                private
         | 
| @@ -337,7 +352,7 @@ module AzureBlob | |
| 337 352 | 
             
                    "x-ms-blob-content-disposition": options[:content_disposition],
         | 
| 338 353 | 
             
                  }
         | 
| 339 354 |  | 
| 340 | 
            -
                  Http.new(uri, headers,  | 
| 355 | 
            +
                  Http.new(uri, headers, signer:, **options.slice(:metadata, :tags)).put(content.read)
         | 
| 341 356 | 
             
                end
         | 
| 342 357 |  | 
| 343 358 | 
             
                def host
         | 
    
        data/lib/azure_blob/http.rb
    CHANGED
    
    | @@ -24,12 +24,16 @@ module AzureBlob | |
| 24 24 |  | 
| 25 25 | 
             
                include REXML
         | 
| 26 26 |  | 
| 27 | 
            -
                def initialize(uri, headers = {}, signer: nil, metadata: {}, debug: false, raise_on_error: true)
         | 
| 27 | 
            +
                def initialize(uri, headers = {}, signer: nil, metadata: {}, tags: {}, debug: false, raise_on_error: true)
         | 
| 28 28 | 
             
                  @raise_on_error = raise_on_error
         | 
| 29 29 | 
             
                  @date = Time.now.httpdate
         | 
| 30 30 | 
             
                  @uri = uri
         | 
| 31 31 | 
             
                  @signer = signer
         | 
| 32 | 
            -
                  @headers = headers.merge( | 
| 32 | 
            +
                  @headers = headers.merge(
         | 
| 33 | 
            +
                    Metadata.new(metadata).headers,
         | 
| 34 | 
            +
                    Tags.new(tags).headers,
         | 
| 35 | 
            +
                  )
         | 
| 36 | 
            +
             | 
| 33 37 | 
             
                  sanitize_headers
         | 
| 34 38 |  | 
| 35 39 | 
             
                  @http = Net::HTTP.new(uri.hostname, uri.port)
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require "rexml/document"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module AzureBlob
         | 
| 4 | 
            +
              class Tags # :nodoc:
         | 
| 5 | 
            +
                def self.from_response(response)
         | 
| 6 | 
            +
                  document = REXML::Document.new(response)
         | 
| 7 | 
            +
                  tags = {}
         | 
| 8 | 
            +
                  document.elements.each("Tags/TagSet/Tag") do |tag|
         | 
| 9 | 
            +
                    key = tag.elements["Key"].text
         | 
| 10 | 
            +
                    value = tag.elements["Value"].text
         | 
| 11 | 
            +
                    tags[key] = value
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                  new(tags)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def initialize(tags = nil)
         | 
| 17 | 
            +
                  @tags = tags || {}
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def headers
         | 
| 21 | 
            +
                  return {} if @tags.empty?
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  {
         | 
| 24 | 
            +
                    "x-ms-tags":
         | 
| 25 | 
            +
                    @tags.map do |key, value|
         | 
| 26 | 
            +
                      %(#{key}=#{value})
         | 
| 27 | 
            +
                    end.join("&"),
         | 
| 28 | 
            +
                  }
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def to_h
         | 
| 32 | 
            +
                  @tags
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
    
        data/lib/azure_blob/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: azure-blob
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5. | 
| 4 | 
            +
              version: 0.5.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Joé Dupuis
         | 
| @@ -51,6 +51,7 @@ files: | |
| 51 51 | 
             
            - lib/azure_blob/identity_token.rb
         | 
| 52 52 | 
             
            - lib/azure_blob/metadata.rb
         | 
| 53 53 | 
             
            - lib/azure_blob/shared_key_signer.rb
         | 
| 54 | 
            +
            - lib/azure_blob/tags.rb
         | 
| 54 55 | 
             
            - lib/azure_blob/user_delegation_key.rb
         | 
| 55 56 | 
             
            - lib/azure_blob/version.rb
         | 
| 56 57 | 
             
            homepage: https://github.com/testdouble/azure-blob
         |