Class: Fog::CDN::HP::Mock

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/rackspace-fog/hp/requests/cdn/put_container.rb,
lib/rackspace-fog/hp/cdn.rb,
lib/rackspace-fog/hp/requests/cdn/get_containers.rb,
lib/rackspace-fog/hp/requests/cdn/head_container.rb,
lib/rackspace-fog/hp/requests/cdn/post_container.rb,
lib/rackspace-fog/hp/requests/cdn/delete_container.rb

Overview

:nodoc:all

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Mock

Returns a new instance of Mock.



41
42
43
# File 'lib/rackspace-fog/hp/cdn.rb', line 41

def initialize(options={})
  @hp_account_id = options[:hp_account_id]
end

Class Method Details

.dataObject



29
30
31
32
33
34
35
# File 'lib/rackspace-fog/hp/cdn.rb', line 29

def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :cdn_containers => {}
    }
  end
end

.resetObject



37
38
39
# File 'lib/rackspace-fog/hp/cdn.rb', line 37

def self.reset
  @data = nil
end

Instance Method Details

#dataObject



45
46
47
# File 'lib/rackspace-fog/hp/cdn.rb', line 45

def data
  self.class.data[@hp_account_id]
end

#delete_container(name) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rackspace-fog/hp/requests/cdn/delete_container.rb', line 23

def delete_container(name)
  response = Excon::Response.new
  if self.data[:cdn_containers][name]
    self.data[:cdn_containers].delete(name)
    response.status = 204
    response.body = ""
    response
  else
    raise Fog::CDN::HP::NotFound
  end
end

#get_containers(options = {}) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/rackspace-fog/hp/requests/cdn/get_containers.rb', line 32

def get_containers(options = {})
  response = Excon::Response.new
  data = self.data[:cdn_containers].map {|_,v| v}
  response.body = data
  response.status = 200
  response
end

#head_container(name) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rackspace-fog/hp/requests/cdn/head_container.rb', line 31

def head_container(name)
  response = Excon::Response.new
  headers = {}
  if data = self.data[:cdn_containers][name]
    data.each do |k,_|
      headers[k] = data[k] if data[k]
    end
    response.headers = headers
    response.status = 204
    response.body = ""
    response
  else
    raise Fog::CDN::HP::NotFound
  end
end

#post_container(name, options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/rackspace-fog/hp/requests/cdn/post_container.rb', line 28

def post_container(name, options = {})
  response = Excon::Response.new
  container_id = Fog::Mock.random_hex(33)
  if data = self.data[:cdn_containers][name]
    options.each do |k,v|
      data[k] = options[k] if options[k]
    end
    response.headers = {
      "X-Cdn-Ssl-Uri" => "https://a111.cdn.net/cdn-test.net/#{container_id}/abc",
      "X-Cdn-Uri"     => "http://#{container_id}.cdn-test.net",
      "X-Trans-Id"    => Fog::Mock.random_hex(34)
    }
    response.status = 202
    response.body = "202 Accepted\n\nThe request is accepted for processing.\n\n   "
    self.data[:cdn_containers][name] = data
    response
  else
    raise Fog::CDN::HP::NotFound
  end
end

#put_container(name, options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rackspace-fog/hp/requests/cdn/put_container.rb', line 28

def put_container(name, options = {})
  response = Excon::Response.new
  container_id = Fog::Mock.random_hex(33)
  data = {
    'x-cdn-ssl-uri' => "https://a111.cdn.net/cdn-test.net/#{container_id}/abc",
    'cdn_enabled'   => true,
    'name'          => name,
    'x-cdn-uri'     => "http://#{container_id}.cdn-test.net",
    'ttl'           => 86400,
    'log_retention' => false
  }
  response.headers = {
    "X-Cdn-Ssl-Uri" => "https://a111.cdn.net/cdn-test.net/#{container_id}/abc",
    "X-Cdn-Uri"     => "http://#{container_id}.cdn-test.net",
    "X-Trans-Id"    => Fog::Mock.random_hex(34)
  }
  response.status = 201
  response.body = "201 Created\n\n\n\n   "
  self.data[:cdn_containers][name] = data
  response
end

#reset_dataObject



49
50
51
# File 'lib/rackspace-fog/hp/cdn.rb', line 49

def reset_data
  self.class.data.delete(@hp_account_id)
end