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.



137
138
139
140
# File 'lib/fog/rackspace/storage.rb', line 137

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

Instance Attribute Details

#metaObject (readonly)

Returns the value of attribute meta



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

def meta
  @meta
end

#objectsObject (readonly)

Returns the value of attribute objects



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

def objects
  @objects
end

#serviceObject (readonly)

Returns the value of attribute service



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

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.



193
194
195
# File 'lib/fog/rackspace/storage.rb', line 193

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.



153
154
155
# File 'lib/fog/rackspace/storage.rb', line 153

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

#empty?Boolean

Determine if this container contains any MockObjects or not.



145
146
147
# File 'lib/fog/rackspace/storage.rb', line 145

def empty?
  @objects.empty?
end

#mock_object(name) ⇒ MockObject?

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



174
175
176
# File 'lib/fog/rackspace/storage.rb', line 174

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.



184
185
186
# File 'lib/fog/rackspace/storage.rb', line 184

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.



201
202
203
# File 'lib/fog/rackspace/storage.rb', line 201

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.



163
164
165
166
167
168
# File 'lib/fog/rackspace/storage.rb', line 163

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