fog 0.3.13 → 0.3.14

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.
Files changed (120) hide show
  1. data/Gemfile.lock +1 -1
  2. data/fog.gemspec +26 -20
  3. data/lib/fog.rb +1 -11
  4. data/lib/fog/aws.rb +5 -0
  5. data/lib/fog/aws/bin.rb +5 -1
  6. data/lib/fog/aws/cdn.rb +98 -0
  7. data/lib/fog/aws/iam.rb +86 -0
  8. data/lib/fog/aws/models/compute/volume.rb +10 -0
  9. data/lib/fog/aws/models/storage/directory.rb +11 -0
  10. data/lib/fog/aws/models/storage/file.rb +9 -11
  11. data/lib/fog/aws/parsers/cdn/distribution.rb +44 -0
  12. data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +48 -0
  13. data/lib/fog/aws/parsers/cdn/post_invalidation.rb +28 -0
  14. data/lib/fog/aws/parsers/iam/basic.rb +19 -0
  15. data/lib/fog/aws/parsers/iam/create_group.rb +26 -0
  16. data/lib/fog/aws/parsers/iam/list_groups.rb +32 -0
  17. data/lib/fog/aws/requests/cdn/delete_distribution.rb +36 -0
  18. data/lib/fog/aws/requests/cdn/get_distribution.rb +55 -0
  19. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +59 -0
  20. data/lib/fog/aws/requests/cdn/post_distribution.rb +88 -0
  21. data/lib/fog/aws/requests/cdn/post_invalidation.rb +59 -0
  22. data/lib/fog/aws/requests/compute/create_volume.rb +1 -0
  23. data/lib/fog/aws/requests/compute/describe_snapshots.rb +3 -0
  24. data/lib/fog/aws/requests/iam/create_group.rb +43 -0
  25. data/lib/fog/aws/requests/iam/delete_group.rb +36 -0
  26. data/lib/fog/aws/requests/iam/list_groups.rb +45 -0
  27. data/lib/fog/aws/requests/storage/copy_object.rb +4 -1
  28. data/lib/fog/aws/requests/storage/delete_bucket.rb +5 -1
  29. data/lib/fog/aws/requests/storage/delete_object.rb +5 -1
  30. data/lib/fog/aws/requests/storage/get_bucket.rb +4 -1
  31. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +4 -1
  32. data/lib/fog/aws/requests/storage/get_bucket_location.rb +5 -1
  33. data/lib/fog/aws/requests/storage/get_bucket_logging.rb +4 -1
  34. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +4 -1
  35. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +4 -1
  36. data/lib/fog/aws/requests/storage/get_object.rb +4 -1
  37. data/lib/fog/aws/requests/storage/get_object_acl.rb +4 -1
  38. data/lib/fog/aws/requests/storage/get_object_torrent.rb +4 -1
  39. data/lib/fog/aws/requests/storage/get_object_url.rb +4 -1
  40. data/lib/fog/aws/requests/storage/get_request_payment.rb +5 -1
  41. data/lib/fog/aws/requests/storage/get_service.rb +5 -1
  42. data/lib/fog/aws/requests/storage/head_object.rb +5 -1
  43. data/lib/fog/aws/requests/storage/post_object_hidden_fields.rb +4 -3
  44. data/lib/fog/aws/requests/storage/put_bucket.rb +11 -6
  45. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +5 -1
  46. data/lib/fog/aws/requests/storage/put_bucket_logging.rb +5 -1
  47. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +5 -1
  48. data/lib/fog/aws/requests/storage/put_object.rb +5 -1
  49. data/lib/fog/aws/requests/storage/put_object_url.rb +4 -1
  50. data/lib/fog/aws/requests/storage/put_request_payment.rb +5 -1
  51. data/lib/fog/aws/storage.rb +2 -0
  52. data/lib/fog/bluebox/compute.rb +1 -0
  53. data/lib/fog/core.rb +4 -2
  54. data/lib/fog/core/attributes.rb +9 -5
  55. data/lib/fog/core/compute.rb +33 -0
  56. data/lib/fog/core/credentials.rb +0 -1
  57. data/lib/fog/core/model.rb +2 -11
  58. data/lib/fog/core/ssh.rb +1 -0
  59. data/lib/fog/core/storage.rb +24 -0
  60. data/lib/fog/go_grid/compute.rb +2 -0
  61. data/lib/fog/google.rb +3 -0
  62. data/lib/fog/google/models/storage/directory.rb +11 -0
  63. data/lib/fog/google/models/storage/file.rb +19 -10
  64. data/lib/fog/google/requests/storage/put_bucket.rb +5 -4
  65. data/lib/fog/google/storage.rb +2 -0
  66. data/lib/fog/linode/compute.rb +1 -0
  67. data/lib/fog/new_servers.rb +3 -0
  68. data/lib/fog/rackspace.rb +1 -0
  69. data/lib/fog/rackspace/bin.rb +3 -1
  70. data/lib/fog/rackspace/cdn.rb +81 -0
  71. data/lib/fog/rackspace/compute.rb +1 -0
  72. data/lib/fog/rackspace/models/storage/file.rb +2 -2
  73. data/lib/fog/rackspace/requests/{storage → cdn}/get_cdn_containers.rb +1 -1
  74. data/lib/fog/rackspace/requests/{storage → cdn}/head_cdn_container.rb +1 -1
  75. data/lib/fog/rackspace/requests/{storage → cdn}/put_cdn_container.rb +1 -1
  76. data/lib/fog/rackspace/requests/storage/delete_container.rb +1 -1
  77. data/lib/fog/rackspace/requests/storage/delete_object.rb +1 -1
  78. data/lib/fog/rackspace/requests/storage/get_container.rb +1 -1
  79. data/lib/fog/rackspace/requests/storage/get_containers.rb +1 -1
  80. data/lib/fog/rackspace/requests/storage/get_object.rb +1 -1
  81. data/lib/fog/rackspace/requests/storage/head_container.rb +1 -1
  82. data/lib/fog/rackspace/requests/storage/head_containers.rb +1 -1
  83. data/lib/fog/rackspace/requests/storage/head_object.rb +1 -1
  84. data/lib/fog/rackspace/requests/storage/put_container.rb +1 -1
  85. data/lib/fog/rackspace/requests/storage/put_object.rb +1 -1
  86. data/lib/fog/rackspace/storage.rb +13 -47
  87. data/lib/fog/slicehost.rb +4 -1
  88. data/lib/fog/terremark.rb +3 -0
  89. data/lib/fog/vcloud.rb +3 -0
  90. data/spec/aws/models/storage/directory_spec.rb +1 -0
  91. data/spec/bluebox/models/compute/flavors_spec.rb +5 -2
  92. data/spec/bluebox/models/compute/server_spec.rb +5 -1
  93. data/spec/bluebox/models/compute/servers_spec.rb +5 -1
  94. data/spec/google/models/storage/files_spec.rb +1 -2
  95. data/spec/rackspace/models/compute/flavors_spec.rb +5 -1
  96. data/spec/rackspace/models/compute/server_spec.rb +5 -1
  97. data/spec/slicehost/models/compute/flavors_spec.rb +5 -1
  98. data/spec/slicehost/models/compute/server_spec.rb +5 -1
  99. data/spec/slicehost/models/compute/servers_spec.rb +5 -1
  100. data/tests/aws/requests/compute/volume_tests.rb +8 -7
  101. data/tests/aws/requests/storage/bucket_tests.rb +55 -0
  102. data/tests/aws/requests/storage/object_tests.rb +18 -0
  103. data/tests/rackspace/requests/storage/container_tests.rb +64 -0
  104. data/tests/rackspace/requests/storage/object_tests.rb +69 -0
  105. metadata +27 -21
  106. data/spec/aws/requests/storage/copy_object_spec.rb +0 -61
  107. data/spec/aws/requests/storage/get_bucket_location_spec.rb +0 -30
  108. data/spec/aws/requests/storage/get_bucket_spec.rb +0 -114
  109. data/spec/aws/requests/storage/get_request_payment_spec.rb +0 -30
  110. data/spec/aws/requests/storage/put_request_payment_spec.rb +0 -29
  111. data/spec/rackspace/requests/storage/delete_container_spec.rb +0 -24
  112. data/spec/rackspace/requests/storage/delete_object_spec.rb +0 -37
  113. data/spec/rackspace/requests/storage/get_container_spec.rb +0 -35
  114. data/spec/rackspace/requests/storage/get_containers_spec.rb +0 -22
  115. data/spec/rackspace/requests/storage/get_object_spec.rb +0 -21
  116. data/spec/rackspace/requests/storage/head_container_spec.rb +0 -30
  117. data/spec/rackspace/requests/storage/head_containers_spec.rb +0 -19
  118. data/spec/rackspace/requests/storage/head_object_spec.rb +0 -21
  119. data/spec/rackspace/requests/storage/put_container_spec.rb +0 -15
  120. data/spec/rackspace/requests/storage/put_object_spec.rb +0 -20
@@ -1,3 +1,6 @@
1
+ require 'nokogiri'
2
+ require 'fog/core/parser'
3
+
1
4
  module Fog
2
5
  module Google
3
6
 
@@ -14,6 +14,14 @@ module Fog
14
14
 
15
15
  attribute :creation_date, :aliases => 'CreationDate'
16
16
 
17
+ def acl=(new_acl)
18
+ valid_acls = ['private', 'public-read', 'public-read-write', 'authenticated-read']
19
+ unless valid_acls.include?(new_acl)
20
+ raise ArgumentError.new("acl must be one of [#{valid_acls.join(', ')}]")
21
+ end
22
+ @acl = new_acl
23
+ end
24
+
17
25
  def destroy
18
26
  requires :key
19
27
  connection.delete_bucket(key)
@@ -34,6 +42,9 @@ module Fog
34
42
  def save
35
43
  requires :key
36
44
  options = {}
45
+ if @acl
46
+ options['x-amz-acl'] = @acl
47
+ end
37
48
  if @location
38
49
  options['LocationConstraint'] = @location
39
50
  end
@@ -17,6 +17,14 @@ module Fog
17
17
  attribute :size, :aliases => 'Size'
18
18
  attribute :storage_class, :aliases => 'StorageClass'
19
19
 
20
+ def acl=(new_acl)
21
+ valid_acls = ['private', 'public-read', 'public-read-write', 'authenticated-read']
22
+ unless valid_acls.include?(new_acl)
23
+ raise ArgumentError.new("acl must be one of [#{valid_acls.join(', ')}]")
24
+ end
25
+ @acl = new_acl
26
+ end
27
+
20
28
  def body
21
29
  @body ||= if last_modified && (file = collection.get(identity))
22
30
  file.body
@@ -31,17 +39,9 @@ module Fog
31
39
 
32
40
  def copy(target_directory_key, target_file_key)
33
41
  requires :directory, :key
34
- data = connection.copy_object(directory.key, @key, target_directory_key, target_file_key).body
42
+ connection.copy_object(directory.key, @key, target_directory_key, target_file_key)
35
43
  target_directory = connection.directories.new(:key => target_directory_key)
36
- target_file = target_directory.files.new(attributes.merge!(:key => target_file_key))
37
- copy_data = {}
38
- for key, value in data
39
- if ['ETag', 'LastModified'].include?(key)
40
- copy_data[key] = value
41
- end
42
- end
43
- target_file.merge_attributes(copy_data)
44
- target_file
44
+ target_directory.files.get(target_file_key)
45
45
  end
46
46
 
47
47
  def destroy
@@ -65,6 +65,15 @@ module Fog
65
65
 
66
66
  def save(options = {})
67
67
  requires :body, :directory, :key
68
+ if options != {}
69
+ Formatador.display_line("[yellow][WARN] options param is deprecated, use acl= instead[/] [light_black](#{caller.first})[/]")
70
+ end
71
+ if @acl
72
+ options['x-amz-acl'] ||= @acl
73
+ end
74
+ if content_type
75
+ options['Content-Type'] = content_type
76
+ end
68
77
  data = connection.put_object(directory.key, @key, @body, options)
69
78
  @etag = data.headers['ETag']
70
79
  true
@@ -8,17 +8,18 @@ module Fog
8
8
  # ==== Parameters
9
9
  # * bucket_name<~String> - name of bucket to create
10
10
  # * options<~Hash> - config arguments for bucket. Defaults to {}.
11
- # * :location_constraint<~Symbol> - sets the location for the bucket
11
+ # * 'LocationConstraint'<~Symbol> - sets the location for the bucket
12
+ # * 'x-amz-acl'<~String> - Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
12
13
  #
13
14
  # ==== Returns
14
15
  # * response<~Excon::Response>:
15
16
  # * status<~Integer> - 200
16
17
  def put_bucket(bucket_name, options = {})
17
- if options['LocationConstraint']
18
+ if location_constraint = options.delete('LocationConstraint')
18
19
  data =
19
20
  <<-DATA
20
21
  <CreateBucketConfiguration>
21
- <LocationConstraint>#{options['LocationConstraint']}</LocationConstraint>
22
+ <LocationConstraint>#{location_constraint}</LocationConstraint>
22
23
  </CreateBucketConfiguration>
23
24
  DATA
24
25
  else
@@ -27,7 +28,7 @@ DATA
27
28
  request({
28
29
  :expects => 200,
29
30
  :body => data,
30
- :headers => {},
31
+ :headers => options,
31
32
  :idempotent => true,
32
33
  :host => "#{bucket_name}.#{@host}",
33
34
  :method => 'PUT'
@@ -79,6 +79,7 @@ module Fog
79
79
  end
80
80
 
81
81
  def initialize(options={})
82
+ require 'mime/types'
82
83
  @google_storage_access_key_id = options[:google_storage_access_key_id]
83
84
  @data = self.class.data[@google_storage_access_key_id]
84
85
  end
@@ -111,6 +112,7 @@ module Fog
111
112
  # ==== Returns
112
113
  # * Storage object with connection to google.
113
114
  def initialize(options={})
115
+ require 'mime/types'
114
116
  @google_storage_access_key_id = options[:google_storage_access_key_id]
115
117
  @google_storage_secret_access_key = options[:google_storage_secret_access_key]
116
118
  @hmac = Fog::HMAC.new('sha1', @google_storage_secret_access_key)
@@ -41,6 +41,7 @@ module Fog
41
41
  class Real
42
42
 
43
43
  def initialize(options={})
44
+ require 'json'
44
45
  @linode_api_key = options[:linode_api_key]
45
46
  @host = options[:host] || "api.linode.com"
46
47
  @port = options[:port] || 443
@@ -1,3 +1,6 @@
1
+ require 'nokogiri'
2
+ require 'fog/core/parser'
3
+
1
4
  module Fog
2
5
  module NewServers
3
6
 
@@ -4,6 +4,7 @@ module Fog
4
4
  extend Fog::Provider
5
5
 
6
6
  service_path 'fog/rackspace'
7
+ service 'cdn'
7
8
  service 'compute'
8
9
  service 'files'
9
10
  service 'servers'
@@ -4,6 +4,8 @@ class Rackspace < Fog::Bin
4
4
  def [](service)
5
5
  @@connections ||= Hash.new do |hash, key|
6
6
  hash[key] = case key
7
+ when :cdn
8
+ Fog::Rackspace::CDN.new
7
9
  when :compute
8
10
  Fog::Rackspace::Compute.new
9
11
  when :files
@@ -26,7 +28,7 @@ class Rackspace < Fog::Bin
26
28
  end
27
29
 
28
30
  def services
29
- [:compute, :storage]
31
+ [:cdn, :compute, :storage]
30
32
  end
31
33
 
32
34
  end
@@ -0,0 +1,81 @@
1
+ module Fog
2
+ module Rackspace
3
+ class CDN < Fog::Service
4
+
5
+ requires :rackspace_api_key, :rackspace_username
6
+
7
+ model_path 'fog/rackspace/models/cdn'
8
+
9
+ request_path 'fog/rackspace/requests/cdn'
10
+ request :get_cdn_containers
11
+ request :head_cdn_container
12
+ request :put_cdn_container
13
+
14
+ class Mock
15
+
16
+ def self.data
17
+ @data ||= Hash.new do |hash, key|
18
+ hash[key] = {}
19
+ end
20
+ end
21
+
22
+ def self.reset_data(keys=data.keys)
23
+ for key in [*keys]
24
+ data.delete(key)
25
+ end
26
+ end
27
+
28
+ def initialize(options={})
29
+ @rackspace_username = options[:rackspace_username]
30
+ @data = self.class.data[@rackspace_username]
31
+ end
32
+
33
+ end
34
+
35
+ class Real
36
+
37
+ def initialize(options={})
38
+ require 'json'
39
+ credentials = Fog::Rackspace.authenticate(options)
40
+ @auth_token = credentials['X-Auth-Token']
41
+
42
+ uri = URI.parse(credentials['X-CDN-Management-Url'])
43
+ @host = uri.host
44
+ @path = uri.path
45
+ @port = uri.port
46
+ @scheme = uri.scheme
47
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
48
+ end
49
+
50
+ def reload
51
+ @cdn_connection.reset
52
+ end
53
+
54
+ def request(params, parse_json = true)
55
+ begin
56
+ response = @connection.request(params.merge!({
57
+ :headers => {
58
+ 'Content-Type' => 'application/json',
59
+ 'X-Auth-Token' => @auth_token
60
+ }.merge!(params[:headers] || {}),
61
+ :host => @host,
62
+ :path => "#{@path}/#{params[:path]}",
63
+ }))
64
+ rescue Excon::Errors::Error => error
65
+ raise case error
66
+ when Excon::Errors::NotFound
67
+ Fog::Rackspace::Storage::NotFound.slurp(error)
68
+ else
69
+ error
70
+ end
71
+ end
72
+ if !response.body.empty? && parse_json && response.headers['Content-Type'] =~ %r{application/json}
73
+ response.body = JSON.parse(response.body)
74
+ end
75
+ response
76
+ end
77
+
78
+ end
79
+ end
80
+ end
81
+ end
@@ -63,6 +63,7 @@ module Fog
63
63
  class Real
64
64
 
65
65
  def initialize(options={})
66
+ require 'json'
66
67
  credentials = Fog::Rackspace.authenticate(options)
67
68
  @auth_token = credentials['X-Auth-Token']
68
69
  uri = URI.parse(credentials['X-Server-Management-Url'])
@@ -28,7 +28,7 @@ module Fog
28
28
 
29
29
  def destroy
30
30
  requires :directory, :key
31
- connection.delete_object(directory.name, @key)
31
+ connection.delete_object(directory.key, @key)
32
32
  true
33
33
  end
34
34
 
@@ -43,7 +43,7 @@ module Fog
43
43
 
44
44
  def save(options = {})
45
45
  requires :body, :directory, :key
46
- data = connection.put_object(directory.name, @key, @body, options)
46
+ data = connection.put_object(directory.key, @key, @body, options)
47
47
  @etag = data.headers['ETag']
48
48
  true
49
49
  end
@@ -16,7 +16,7 @@ module Fog
16
16
  # * body<~Array>:
17
17
  # * container<~String>: Name of container
18
18
  def get_cdn_containers(options = {})
19
- response = cdn_request(
19
+ response = request(
20
20
  :expects => [200, 204],
21
21
  :method => 'GET',
22
22
  :path => '',
@@ -18,7 +18,7 @@ module Fog
18
18
  # * 'X-User-Agent-ACL'<~String> - ?
19
19
  # * 'X-Referrer-ACL'<~String> - ?
20
20
  def head_cdn_container(container)
21
- response = cdn_request(
21
+ response = request(
22
22
  :expects => 204,
23
23
  :method => 'HEAD',
24
24
  :path => container,
@@ -15,7 +15,7 @@ module Fog
15
15
  # * 'X-User-Agent-ACL'<~String> - ?
16
16
  # * 'X-Referrer-ACL'<~String> - ?
17
17
  def put_cdn_container(name, options = {})
18
- response = cdn_request(
18
+ response = request(
19
19
  :expects => [201, 202],
20
20
  :headers => options,
21
21
  :method => 'PUT',
@@ -9,7 +9,7 @@ module Fog
9
9
  # * name<~String> - Name of container to delete
10
10
  #
11
11
  def delete_container(name)
12
- response = storage_request(
12
+ response = request(
13
13
  :expects => 204,
14
14
  :method => 'DELETE',
15
15
  :path => CGI.escape(name)
@@ -10,7 +10,7 @@ module Fog
10
10
  # * object<~String> - Name of object to delete
11
11
  #
12
12
  def delete_object(container, object)
13
- response = storage_request(
13
+ response = request(
14
14
  :expects => 204,
15
15
  :method => 'DELETE',
16
16
  :path => "#{CGI.escape(container)}/#{CGI.escape(object)}"
@@ -29,7 +29,7 @@ module Fog
29
29
  # * 'last_modified'<~String> - Last modified timestamp
30
30
  # * 'name'<~String> - Name of object
31
31
  def get_container(container, options = {})
32
- response = storage_request(
32
+ response = request(
33
33
  :expects => 200,
34
34
  :method => 'GET',
35
35
  :path => container,
@@ -18,7 +18,7 @@ module Fog
18
18
  # * 'count'<~Integer>: - Number of items in container
19
19
  # * 'name'<~String>: - Name of container
20
20
  def get_containers(options = {})
21
- response = storage_request(
21
+ response = request(
22
22
  :expects => [200, 204],
23
23
  :method => 'GET',
24
24
  :path => '',
@@ -10,7 +10,7 @@ module Fog
10
10
  # * object<~String> - Name of object to look for
11
11
  #
12
12
  def get_object(container, object, &block)
13
- response = storage_request({
13
+ response = request({
14
14
  :block => block,
15
15
  :expects => 200,
16
16
  :method => 'GET',
@@ -14,7 +14,7 @@ module Fog
14
14
  # * 'X-Container-Object-Count'<~String> - Count of containers
15
15
  # * 'X-Container-Bytes-Used'<~String> - Bytes used
16
16
  def head_container(container)
17
- response = storage_request(
17
+ response = request(
18
18
  :expects => 204,
19
19
  :method => 'HEAD',
20
20
  :path => container,
@@ -11,7 +11,7 @@ module Fog
11
11
  # * 'X-Account-Container-Count'<~String> - Count of containers
12
12
  # * 'X-Account-Bytes-Used'<~String> - Bytes used
13
13
  def head_containers
14
- response = storage_request(
14
+ response = request(
15
15
  :expects => 204,
16
16
  :method => 'HEAD',
17
17
  :path => '',
@@ -10,7 +10,7 @@ module Fog
10
10
  # * object<~String> - Name of object to look for
11
11
  #
12
12
  def head_object(container, object)
13
- response = storage_request({
13
+ response = request({
14
14
  :expects => 200,
15
15
  :method => 'GET',
16
16
  :path => "#{CGI.escape(container)}/#{CGI.escape(object)}"
@@ -9,7 +9,7 @@ module Fog
9
9
  # * name<~String> - Name for container, should be < 256 bytes and must not contain '/'
10
10
  #
11
11
  def put_container(name)
12
- response = storage_request(
12
+ response = request(
13
13
  :expects => [201, 202],
14
14
  :method => 'PUT',
15
15
  :path => CGI.escape(name)
@@ -11,7 +11,7 @@ module Fog
11
11
  def put_object(container, object, data, options = {})
12
12
  data = parse_data(data)
13
13
  headers = data[:headers].merge!(options)
14
- response = storage_request(
14
+ response = request(
15
15
  :body => data[:body],
16
16
  :expects => 201,
17
17
  :headers => headers,
@@ -14,14 +14,11 @@ module Fog
14
14
  request :delete_container
15
15
  request :delete_object
16
16
  request :get_container
17
- request :get_cdn_containers
18
17
  request :get_containers
19
18
  request :get_object
20
- request :head_cdn_container
21
19
  request :head_container
22
20
  request :head_containers
23
21
  request :head_object
24
- request :put_cdn_container
25
22
  request :put_container
26
23
  request :put_object
27
24
 
@@ -66,6 +63,7 @@ module Fog
66
63
  end
67
64
 
68
65
  def initialize(options={})
66
+ require 'mime/types'
69
67
  @rackspace_username = options[:rackspace_username]
70
68
  @data = self.class.data[@rackspace_username]
71
69
  end
@@ -76,64 +74,32 @@ module Fog
76
74
  include Utils
77
75
 
78
76
  def initialize(options={})
77
+ require 'mime/types'
78
+ require 'json'
79
79
  credentials = Fog::Rackspace.authenticate(options)
80
80
  @auth_token = credentials['X-Auth-Token']
81
81
 
82
- if(credentials['X-CDN-Management-Url'])
83
- cdn_uri = URI.parse(credentials['X-CDN-Management-Url'])
84
- @cdn_host = cdn_uri.host
85
- @cdn_path = cdn_uri.path
86
- @cdn_port = cdn_uri.port
87
- @cdn_scheme = cdn_uri.scheme
88
- @cdn_connection = Fog::Connection.new("#{@cdn_scheme}://#{@cdn_host}:#{@cdn_port}", options[:persistent])
89
- end
90
-
91
- storage_uri = URI.parse(credentials['X-Storage-Url'])
92
- @storage_host = storage_uri.host
93
- @storage_path = storage_uri.path
94
- @storage_port = storage_uri.port
95
- @storage_scheme = storage_uri.scheme
96
- @storage_connection = Fog::Connection.new("#{@storage_scheme}://#{@storage_host}:#{@storage_port}", options[:persistent])
82
+ uri = URI.parse(credentials['X-Storage-Url'])
83
+ @host = uri.host
84
+ @path = uri.path
85
+ @port = uri.port
86
+ @scheme = uri.scheme
87
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
97
88
  end
98
89
 
99
90
  def reload
100
- @cdn_connection.reset
101
91
  @storage_connection.reset
102
92
  end
103
93
 
104
- def cdn_request(params, parse_json = true)
105
- begin
106
- response = @cdn_connection.request(params.merge!({
107
- :headers => {
108
- 'Content-Type' => 'application/json',
109
- 'X-Auth-Token' => @auth_token
110
- }.merge!(params[:headers] || {}),
111
- :host => @cdn_host,
112
- :path => "#{@cdn_path}/#{params[:path]}",
113
- }))
114
- rescue Excon::Errors::Error => error
115
- raise case error
116
- when Excon::Errors::NotFound
117
- Fog::Rackspace::Storage::NotFound.slurp(error)
118
- else
119
- error
120
- end
121
- end
122
- if !response.body.empty? && parse_json && response.headers['Content-Type'] =~ %r{application/json}
123
- response.body = JSON.parse(response.body)
124
- end
125
- response
126
- end
127
-
128
- def storage_request(params, parse_json = true, &block)
94
+ def request(params, parse_json = true, &block)
129
95
  begin
130
- response = @storage_connection.request(params.merge!({
96
+ response = @connection.request(params.merge!({
131
97
  :headers => {
132
98
  'Content-Type' => 'application/json',
133
99
  'X-Auth-Token' => @auth_token
134
100
  }.merge!(params[:headers] || {}),
135
- :host => @storage_host,
136
- :path => "#{@storage_path}/#{params[:path]}",
101
+ :host => @host,
102
+ :path => "#{@path}/#{params[:path]}",
137
103
  }), &block)
138
104
  rescue Excon::Errors::Error => error
139
105
  raise case error