Class: Fog::Storage::Rackspace::Mock::MockContainer

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/rackspace/storage.rb

Overview

An in-memory container for use with Rackspace storage mocks. Includes many ‘objects` mapped by (escaped) object name. Tracks container metadata.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(service) ⇒ MockContainer

Create a new container. Generally, you should call Rackspace::Storage#add_container instead.



132
133
134
135
# File 'lib/fog/rackspace/storage.rb', line 132

def initialize(service)
  @service = service
  @objects, @meta = {}, {}
end

Instance Attribute Details

#metaObject (readonly)

Returns the value of attribute meta.



128
129
130
# File 'lib/fog/rackspace/storage.rb', line 128

def meta
  @meta
end

#objectsObject (readonly)

Returns the value of attribute objects.



128
129
130
# File 'lib/fog/rackspace/storage.rb', line 128

def objects
  @objects
end

#serviceObject (readonly)

Returns the value of attribute service.



128
129
130
# File 'lib/fog/rackspace/storage.rb', line 128

def service
  @service
end

Instance Method Details

#add_object(name, data) ⇒ Object

Add a new MockObject to this container. An existing object with the same name will be overwritten.



188
189
190
# File 'lib/fog/rackspace/storage.rb', line 188

def add_object(name, data)
  @objects[Fog::Rackspace.escape(name)] = MockObject.new(data, service)
end

#bytes_usedInteger

Total sizes of all objects added to this container.



148
149
150
# File 'lib/fog/rackspace/storage.rb', line 148

def bytes_used
  @objects.values.map { |o| o.bytes_used }.inject(0) { |a, b| a + b }
end

#empty?Boolean

Determine if this container contains any MockObjects or not.



140
141
142
# File 'lib/fog/rackspace/storage.rb', line 140

def empty?
  @objects.empty?
end

#mock_object(name) ⇒ MockObject?

Access a MockObject within this container by (unescaped) name.



169
170
171
# File 'lib/fog/rackspace/storage.rb', line 169

def mock_object(name)
  @objects[Fog::Rackspace.escape(name)]
end

#mock_object!(name) ⇒ MockObject

Access a MockObject with a specific name, raising a ‘Fog::Storage::Rackspace::NotFound` exception if none are present.



179
180
181
# File 'lib/fog/rackspace/storage.rb', line 179

def mock_object!(name)
  mock_object(name) or raise Fog::Storage::Rackspace::NotFound.new
end

#remove_object(name) ⇒ Object

Remove a MockObject from the container by name. No effect if the object is not present beforehand.



196
197
198
# File 'lib/fog/rackspace/storage.rb', line 196

def remove_object(name)
  @objects.delete Fog::Rackspace.escape(name)
end

#to_headersHash<String, String>

Render the HTTP headers that would be associated with this container.



158
159
160
161
162
163
# File 'lib/fog/rackspace/storage.rb', line 158

def to_headers
  @meta.merge({
    'X-Container-Object-Count' => @objects.size,
    'X-Container-Bytes-Used' => bytes_used
  })
end