Sha256: bd0df69602ce534f16a3337f5ac275c9b65efadc65e48e9f3b91799f57a49d03

Contents?: true

Size: 1.34 KB

Versions: 8

Compression:

Stored size: 1.34 KB

Contents

module Fog
  module AWS
    class S3

      def directories
        Fog::AWS::S3::Directories.new(:connection => self)
      end

      class Directories < Fog::Collection

        model Fog::AWS::S3::Directory

        def all
          if @loaded
            clear
          end
          @loaded = true
          data = connection.get_service.body
          data['Buckets'].each do |directory|
            self << new(directory)
          end
          self
        end

        def get(name, options = {})
          remap_attributes(options, {
            :delimiter  => 'delimiter',
            :marker     => 'marker',
            :max_keys   => 'max-keys',
            :prefix     => 'prefix'
          })
          data = connection.get_bucket(name, options).body
          directory = new(:name => data['Name'])
          options = {}
          for key, value in data
            if ['Delimiter', 'IsTruncated', 'Marker', 'MaxKeys', 'Prefix'].include?(key)
              options[key] = value
            end
          end
          directory.files.merge_attributes(options)
          directory.files.instance_variable_set(:@loaded, true)
          data['Contents'].each do |file|
            directory.files << directory.files.new(file)
          end
          directory
        rescue Excon::Errors::NotFound
          nil
        end

      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
fog-0.0.47 lib/fog/aws/models/s3/directories.rb
fog-0.0.46 lib/fog/aws/models/s3/directories.rb
fog-0.0.45 lib/fog/aws/models/s3/directories.rb
fog-0.0.44 lib/fog/aws/models/s3/directories.rb
fog-0.0.43 lib/fog/aws/models/s3/directories.rb
fog-0.0.42 lib/fog/aws/models/s3/directories.rb
fog-0.0.41 lib/fog/aws/models/s3/directories.rb
fog-0.0.40 lib/fog/aws/models/s3/directories.rb