fog 0.5.0 → 0.5.1

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fog (0.5.0)
4
+ fog (0.5.1)
5
5
  builder
6
6
  excon (>= 0.4.0)
7
7
  formatador (>= 0.0.16)
@@ -24,7 +24,7 @@ GEM
24
24
  rake (0.8.7)
25
25
  rspec (1.3.1)
26
26
  ruby-hmac (0.4.0)
27
- shindo (0.2.0)
27
+ shindo (0.2.2)
28
28
  formatador (>= 0.0.16)
29
29
 
30
30
  PLATFORMS
@@ -42,4 +42,4 @@ DEPENDENCIES
42
42
  rake
43
43
  rspec (= 1.3.1)
44
44
  ruby-hmac
45
- shindo (= 0.2.0)
45
+ shindo (= 0.2.2)
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.5.0'
11
- s.date = '2011-01-27'
10
+ s.version = '0.5.1'
11
+ s.date = '2011-01-31'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -55,7 +55,7 @@ Gem::Specification.new do |s|
55
55
  ## those that are only needed during development
56
56
  s.add_development_dependency('rake')
57
57
  s.add_development_dependency('rspec', '1.3.1')
58
- s.add_development_dependency('shindo', '0.2.0')
58
+ s.add_development_dependency('shindo', '0.2.2')
59
59
 
60
60
  s.files = `git ls-files`.split("\n")
61
61
  s.test_files = `git ls-files -- {spec,tests}/*`.split("\n")
data/lib/fog.rb CHANGED
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), 'fog', 'core')
3
3
  module Fog
4
4
 
5
5
  unless const_defined?(:VERSION)
6
- VERSION = '0.5.0'
6
+ VERSION = '0.5.1'
7
7
  end
8
8
 
9
9
  end
@@ -13,18 +13,22 @@ module Fog
13
13
  request :delete_access_key
14
14
  request :delete_group
15
15
  request :delete_group_policy
16
+ request :delete_signing_certificate
16
17
  request :delete_user
17
18
  request :delete_user_policy
18
19
  request :get_user
19
20
  request :list_access_keys
20
21
  request :list_groups
22
+ request :list_groups_for_user
21
23
  request :list_group_policies
24
+ request :list_signing_certificates
22
25
  request :list_user_policies
23
26
  request :list_users
24
27
  request :put_group_policy
25
28
  request :put_user_policy
26
29
  request :remove_user_from_group
27
30
  request :update_access_key
31
+ request :upload_signing_certificate
28
32
 
29
33
  class Mock
30
34
 
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module IAM
5
+
6
+ class ListGroupsForUser < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @group_for_user = {}
10
+ @response = { 'GroupsForUser' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'Path', 'GroupName', 'GroupId', 'Arn'
16
+ @group_for_user[name] = @value
17
+ when 'member'
18
+ @response['GroupsForUser'] << @group_for_user
19
+ @group_for_user = {}
20
+ when 'IsTruncated'
21
+ response[name] = (@value == 'true')
22
+ when 'Marker', 'RequestId'
23
+ response[name] = @value
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module IAM
5
+
6
+ class ListSigningCertificates < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @signing_certificate = {}
10
+ @response = { 'SigningCertificates' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'UserName', 'CertificateId', 'CertificateBody', 'Status'
16
+ @signing_certificate[name] = @value
17
+ when 'member'
18
+ @response['SigningCertificates'] << @signing_certificate
19
+ @signing_certificate = {}
20
+ when 'IsTruncated'
21
+ response[name] = (@value == 'true')
22
+ when 'Marker', 'RequestId'
23
+ response[name] = @value
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module IAM
5
+
6
+ class UploadSigningCertificate < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'Certificate' => {} }
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'CertificateId', 'UserName', 'CertificateBody', 'Status'
15
+ @response['Certificate'][name] = @value
16
+ when 'RequestId'
17
+ @response[name] = @value
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/iam/basic'
7
+
8
+ # Upload signing certificate for user (by default detects user from access credentials)
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * 'UserName'<~String> - name of the user to upload certificate for (do not include path)
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'RequestId'<~String> - Id of the request
18
+ #
19
+ # ==== See Also
20
+ # http://docs.amazonwebservices.com/IAM/latest/APIReference/index.html?API_DeleteSigningCertificate.html
21
+ #
22
+ def delete_signing_certificate(certificate_id, options = {})
23
+ request({
24
+ 'Action' => 'DeleteSigningCertificate',
25
+ 'CertificateId' => certificate_id,
26
+ :parser => Fog::Parsers::AWS::IAM::Basic.new
27
+ }.merge!(options))
28
+ end
29
+
30
+ end
31
+
32
+ class Mock
33
+
34
+ def delete_signing_certificate(user_name = nil)
35
+ Fog::Mock.not_implemented
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/iam/list_groups_for_user'
7
+
8
+ # List groups_for_user
9
+ #
10
+ # ==== Parameters
11
+ # * user_name<~String> - the username you want to look up group membership for
12
+ # * options<~Hash>:
13
+ # * 'Marker'<~String> - used to paginate subsequent requests
14
+ # * 'MaxItems'<~Integer> - limit results to this number per page
15
+ #
16
+ # ==== Returns
17
+ # * response<~Excon::Response>:
18
+ # * body<~Hash>:
19
+ # * 'GroupsForUser'<~Array> - Groups for a user
20
+ # * group_for_user<~Hash>:
21
+ # * 'Arn' -
22
+ # * 'GroupId' -
23
+ # * 'GroupName' -
24
+ # * 'Path' -
25
+ # * 'IsTruncated'<~Boolean> - Whether or not results were truncated
26
+ # * 'Marker'<~String> - appears when IsTruncated is true as the next marker to use
27
+ # * 'RequestId'<~String> - Id of the request
28
+ #
29
+ # ==== See Also
30
+ # http://docs.amazonwebservices.com/IAM/latest/APIReference/API_ListGroupsForUser.html
31
+ #
32
+ def list_groups_for_user(user_name, options = {})
33
+ request({
34
+ 'Action' => 'ListGroupsForUser',
35
+ 'UserName' => user_name,
36
+ :parser => Fog::Parsers::AWS::IAM::ListGroupsForUser.new
37
+ }.merge!(options))
38
+ end
39
+
40
+ end
41
+
42
+ class Mock
43
+
44
+ def list_groups_for_user(user_name = nil)
45
+ Fog::Mock.not_implemented
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,46 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/iam/list_signing_certificates'
7
+
8
+ # List signing certificates for user (by default detects user from access credentials)
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * 'UserName'<~String> - name of the user to list certificates for (do not include path)
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'SigningCertificates'<~Array> - Matching signing certificates
18
+ # * signing_certificate<~Hash>:
19
+ # * CertificateId<~String> -
20
+ # * Status<~String> -
21
+ # * 'IsTruncated'<~Boolean> - Whether or not the results were truncated
22
+ # * 'Marker'<~String> - appears when IsTruncated is true as the next marker to use
23
+ # * 'RequestId'<~String> - Id of the request
24
+ #
25
+ # ==== See Also
26
+ # http://docs.amazonwebservices.com/IAM/latest/APIReference/index.html?API_ListSigningCertificates.html
27
+ #
28
+ def list_signing_certificates(options = {})
29
+ request({
30
+ 'Action' => 'ListSigningCertificates',
31
+ :parser => Fog::Parsers::AWS::IAM::ListSigningCertificates.new
32
+ }.merge!(options))
33
+ end
34
+
35
+ end
36
+
37
+ class Mock
38
+
39
+ def list_signing_certificates(user_name = nil)
40
+ Fog::Mock.not_implemented
41
+ end
42
+
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/iam/upload_signing_certificate'
7
+
8
+ # Upload signing certificate for user (by default detects user from access credentials)
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * 'UserName'<~String> - name of the user to upload certificate for (do not include path)
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'Certificate'<~Hash>:
18
+ # * 'CertificateId'<~String> -
19
+ # * 'UserName'<~String> -
20
+ # * 'CertificateBody'<~String> -
21
+ # * 'Status'<~String> -
22
+ # * 'RequestId'<~String> - Id of the request
23
+ #
24
+ # ==== See Also
25
+ # http://docs.amazonwebservices.com/IAM/latest/APIReference/index.html?API_UploadSigningCertificate.html
26
+ #
27
+ def upload_signing_certificate(certificate, options = {})
28
+ request({
29
+ 'Action' => 'UploadSigningCertificate',
30
+ 'CertificateBody' => certificate,
31
+ :parser => Fog::Parsers::AWS::IAM::UploadSigningCertificate.new
32
+ }.merge!(options))
33
+ end
34
+
35
+ end
36
+
37
+ class Mock
38
+
39
+ def upload_signing_certificate(user_name = nil)
40
+ Fog::Mock.not_implemented
41
+ end
42
+
43
+ end
44
+ end
45
+ end
46
+ end
@@ -70,7 +70,7 @@ module Fog
70
70
 
71
71
  headers = {
72
72
  'Content-Type' => 'application/x-www-form-urlencoded',
73
- 'Date' => Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000")
73
+ 'Date' => Fog::Time.now.to_date_header
74
74
  }
75
75
 
76
76
  #AWS3-HTTPS AWSAccessKeyId=<Your AWS Access Key ID>, Algorithm=HmacSHA256, Signature=<Signature>
@@ -98,7 +98,7 @@ module Fog
98
98
 
99
99
  def request(params, &block)
100
100
  params[:headers] ||= {}
101
- params[:headers]['Date'] = Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000")
101
+ params[:headers]['Date'] = Fog::Time.now.to_date_header
102
102
  params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}"
103
103
  params[:path] = "/#{@version}/#{params[:path]}"
104
104
  @connection.request(params, &block)
@@ -11,6 +11,8 @@ module Fog
11
11
  collection :images
12
12
  model :server
13
13
  collection :servers
14
+ model :password
15
+ collection :passwords
14
16
 
15
17
  request_path 'fog/compute/requests/go_grid'
16
18
  request :common_lookup_list
@@ -23,6 +25,8 @@ module Fog
23
25
  request :grid_server_get
24
26
  request :grid_server_list
25
27
  request :grid_server_power
28
+ request :support_password_get
29
+ request :support_password_list
26
30
 
27
31
  class Mock
28
32
 
@@ -0,0 +1,50 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module GoGrid
5
+ class Compute
6
+
7
+ class Password < Fog::Model
8
+
9
+ identity :id
10
+
11
+ attribute :server_id
12
+ attribute :applicationtype
13
+ attribute :username
14
+ attribute :password_id, :aliases => 'id'
15
+ attribute :password
16
+ attribute :server
17
+
18
+ def initialize(attributes={})
19
+ super
20
+ end
21
+
22
+ def destroy
23
+ requires :id
24
+ connection.grid_server_destroy(id)
25
+ true
26
+ end
27
+
28
+ def image
29
+ requires :image_id
30
+ connection.grid_image_get(image_id)
31
+ end
32
+
33
+ def ready?
34
+ @state == 'On'
35
+ end
36
+
37
+ def save
38
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
39
+ requires :password_id
40
+ data = connection.support_password_list()
41
+ merge_attributes(data.body)
42
+ true
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,36 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/compute/models/go_grid/password'
3
+
4
+ module Fog
5
+ module GoGrid
6
+ class Compute
7
+
8
+ class Passwords < Fog::Collection
9
+
10
+ model Fog::GoGrid::Compute::Password
11
+
12
+ def all
13
+ data = connection.support_password_list.body['list']
14
+ load(data)
15
+ end
16
+
17
+ def bootstrap(new_attributes = {})
18
+ password = create(new_attributes)
19
+ password.wait_for { ready? }
20
+ password
21
+ end
22
+
23
+ def get(id)
24
+ #if server_id && server = connection.grid_server_get(server_id).body['list']
25
+ if id && server = connection.support_password_get(id).body['list']
26
+ new(server)
27
+ end
28
+ rescue Fog::GoGrid::Compute::NotFound
29
+ nil
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Compute
4
+ class Real
5
+
6
+ # Get one or more passwords by id
7
+ #
8
+ # ==== Parameters
9
+ # * options<~Hash>:
10
+ # * 'id'<~String> - id of the password to retrieve
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Array>:
15
+ # TODO: docs
16
+ def support_password_get(id, options={})
17
+ request(
18
+ :path => 'support/password/get',
19
+ :query => {
20
+ 'id' => id
21
+ }.merge!(options)
22
+ )
23
+ end
24
+
25
+ end
26
+
27
+ class Mock
28
+
29
+ def support_password_get(options={})
30
+ Fog::Mock.not_implemented
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module GoGrid
3
+ class Compute
4
+ class Real
5
+
6
+ # List passwords
7
+ #
8
+ # ==== Parameters
9
+ # * options<~Hash>:
10
+ # * 'datacenter'<~String> - datacenter to limit results to
11
+ # * 'isSandbox'<~String> - If true only returns Image Sandbox servers, in ['false', 'true']
12
+ # * 'num_items'<~Integer> - Number of items to return
13
+ # * 'page'<~Integer> - Page index for paginated results
14
+ # * 'server.type'<~String> - server type to limit results to
15
+ #
16
+ # ==== Returns
17
+ # * response<~Excon::Response>:
18
+ # * body<~Array>:
19
+ # TODO: docs
20
+ def support_password_list(options={})
21
+ request(
22
+ :path => 'support/password/list',
23
+ :query => options
24
+ )
25
+ end
26
+
27
+ end
28
+
29
+ class Mock
30
+
31
+ def support_password_list(options={})
32
+ Fog::Mock.not_implemented
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,21 +1,27 @@
1
1
  module Fog
2
2
  class Time < ::Time
3
- class << self
4
3
 
5
- def now
6
- ::Time.now - offset
7
- end
4
+ DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
5
+ MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
8
6
 
9
- def now=(new_now)
10
- old_now = ::Time.now
11
- @offset = old_now - new_now
12
- new_now
13
- end
7
+ def self.now
8
+ at((::Time.now - offset).to_i)
9
+ end
14
10
 
15
- def offset
16
- @offset ||= 0
17
- end
11
+ def self.now=(new_now)
12
+ old_now = ::Time.now
13
+ @offset = old_now - new_now
14
+ new_now
15
+ end
18
16
 
17
+ def self.offset
18
+ @offset ||= 0
19
19
  end
20
+
21
+ def to_date_header
22
+ now = self.class.now.utc
23
+ now.strftime("#{DAYS[now.wday]}, %d #{MONTHS[now.month - 1]} %Y %H:%M:%S +0000")
24
+ end
25
+
20
26
  end
21
- end
27
+ end
@@ -103,7 +103,7 @@ module Fog
103
103
 
104
104
  def request(params, &block)
105
105
  params[:headers] ||= {}
106
- params[:headers]['Date'] = Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000")
106
+ params[:headers]['Date'] = Fog::Time.now.to_date_header
107
107
  params[:headers]['X-Amzn-Authorization'] = "AWS3-HTTPS AWSAccessKeyId=#{@aws_access_key_id},Algorithm=HmacSHA1,Signature=#{signature(params)}"
108
108
  params[:path] = "/#{@version}/#{params[:path]}"
109
109
  @connection.request(params, &block)
@@ -289,7 +289,7 @@ module Fog
289
289
  private
290
290
 
291
291
  def request(params, &block)
292
- params[:headers]['Date'] = Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000")
292
+ params[:headers]['Date'] = Fog::Time.now.to_date_header
293
293
  params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}"
294
294
  params[:expects] = [307, *params[:expects]].flatten
295
295
  # FIXME: ToHashParser should make this not needed
@@ -212,7 +212,7 @@ module Fog
212
212
  private
213
213
 
214
214
  def request(params, &block)
215
- params[:headers]['Date'] = Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000")
215
+ params[:headers]['Date'] = Fog::Time.now.to_date_header
216
216
  params[:headers]['Authorization'] = "GOOG1 #{@google_storage_access_key_id}:#{signature(params)}"
217
217
 
218
218
  response = @connection.request(params, &block)
@@ -39,8 +39,8 @@ module Fog
39
39
  query = {'versionId' => version_id}
40
40
  end
41
41
  headers = {}
42
- headers['If-Modified-Since'] = options['If-Modified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
43
- headers['If-Unmodified-Since'] = options['If-Unmodified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
42
+ headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since']
43
+ headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since']
44
44
  headers.merge!(options)
45
45
  request({
46
46
  :expects => 200,
@@ -39,8 +39,8 @@ module Fog
39
39
  query = {'versionId' => version_id}
40
40
  end
41
41
  headers = {}
42
- headers['If-Modified-Since'] = options['If-Modified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
43
- headers['If-Unmodified-Since'] = options['If-Unmodified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
42
+ headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since']
43
+ headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since']
44
44
  headers.merge!(options)
45
45
  request({
46
46
  :expects => 200,
@@ -67,7 +67,7 @@ module Fog
67
67
  'Content-Type' => data[:headers]['Content-Type'],
68
68
  'ETag' => Fog::AWS::Mock.etag,
69
69
  'Key' => object_name,
70
- 'LastModified' => Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000"),
70
+ 'LastModified' => Fog::Time.now.to_date_header,
71
71
  'Size' => data[:headers]['Content-Length'],
72
72
  'StorageClass' => 'STANDARD'
73
73
  }
@@ -36,8 +36,8 @@ module Fog
36
36
  query = {'versionId' => version_id}
37
37
  end
38
38
  headers = {}
39
- headers['If-Modified-Since'] = options['If-Modified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
40
- headers['If-Unmodified-Since'] = options['If-Unmodified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
39
+ headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since']
40
+ headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since']
41
41
  headers.merge!(options)
42
42
  request({
43
43
  :expects => 200,
@@ -35,8 +35,8 @@ module Fog
35
35
  query = {'versionId' => version_id}
36
36
  end
37
37
  headers = {}
38
- headers['If-Modified-Since'] = options['If-Modified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
39
- headers['If-Unmodified-Since'] = options['If-Unmodified-Since'].utc.strftime("%a, %d %b %Y %H:%M:%S +0000") if options['If-Modified-Since']
38
+ headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since']
39
+ headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since']
40
40
  headers.merge!(options)
41
41
  request({
42
42
  :expects => 200,
@@ -62,7 +62,7 @@ module Fog
62
62
  'Content-Type' => data[:headers]['Content-Type'],
63
63
  'ETag' => Fog::Google::Mock.etag,
64
64
  'Key' => object_name,
65
- 'LastModified' => Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000"),
65
+ 'LastModified' => Fog::Time.now.to_date_header,
66
66
  'Size' => data[:headers]['Content-Length'],
67
67
  'StorageClass' => 'STANDARD'
68
68
  }
@@ -1,4 +1,3 @@
1
- $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), %w[ .. lib fog]))
2
1
  require 'fog'
3
2
  require 'fog/bin'
4
3
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 0
10
- version: 0.5.0
9
+ - 1
10
+ version: 0.5.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - geemus (Wesley Beary)
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-27 00:00:00 -08:00
18
+ date: 2011-01-31 00:00:00 -08:00
19
19
  default_executable: fog
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -174,12 +174,12 @@ dependencies:
174
174
  requirements:
175
175
  - - "="
176
176
  - !ruby/object:Gem::Version
177
- hash: 23
177
+ hash: 19
178
178
  segments:
179
179
  - 0
180
180
  - 2
181
- - 0
182
- version: 0.2.0
181
+ - 2
182
+ version: 0.2.2
183
183
  type: :development
184
184
  name: shindo
185
185
  prerelease: false
@@ -224,8 +224,11 @@ files:
224
224
  - lib/fog/aws/parsers/iam/get_user.rb
225
225
  - lib/fog/aws/parsers/iam/list_access_keys.rb
226
226
  - lib/fog/aws/parsers/iam/list_groups.rb
227
+ - lib/fog/aws/parsers/iam/list_groups_for_user.rb
227
228
  - lib/fog/aws/parsers/iam/list_policies.rb
229
+ - lib/fog/aws/parsers/iam/list_signing_certificates.rb
228
230
  - lib/fog/aws/parsers/iam/list_users.rb
231
+ - lib/fog/aws/parsers/iam/upload_signing_certificate.rb
229
232
  - lib/fog/aws/parsers/ses/delete_verified_email_address.rb
230
233
  - lib/fog/aws/parsers/ses/get_send_quota.rb
231
234
  - lib/fog/aws/parsers/ses/get_send_statistics.rb
@@ -253,18 +256,22 @@ files:
253
256
  - lib/fog/aws/requests/iam/delete_access_key.rb
254
257
  - lib/fog/aws/requests/iam/delete_group.rb
255
258
  - lib/fog/aws/requests/iam/delete_group_policy.rb
259
+ - lib/fog/aws/requests/iam/delete_signing_certificate.rb
256
260
  - lib/fog/aws/requests/iam/delete_user.rb
257
261
  - lib/fog/aws/requests/iam/delete_user_policy.rb
258
262
  - lib/fog/aws/requests/iam/get_user.rb
259
263
  - lib/fog/aws/requests/iam/list_access_keys.rb
260
264
  - lib/fog/aws/requests/iam/list_group_policies.rb
261
265
  - lib/fog/aws/requests/iam/list_groups.rb
266
+ - lib/fog/aws/requests/iam/list_groups_for_user.rb
267
+ - lib/fog/aws/requests/iam/list_signing_certificates.rb
262
268
  - lib/fog/aws/requests/iam/list_user_policies.rb
263
269
  - lib/fog/aws/requests/iam/list_users.rb
264
270
  - lib/fog/aws/requests/iam/put_group_policy.rb
265
271
  - lib/fog/aws/requests/iam/put_user_policy.rb
266
272
  - lib/fog/aws/requests/iam/remove_user_from_group.rb
267
273
  - lib/fog/aws/requests/iam/update_access_key.rb
274
+ - lib/fog/aws/requests/iam/upload_signing_certificate.rb
268
275
  - lib/fog/aws/requests/ses/delete_verified_email_address.rb
269
276
  - lib/fog/aws/requests/ses/get_send_quota.rb
270
277
  - lib/fog/aws/requests/ses/get_send_statistics.rb
@@ -360,6 +367,8 @@ files:
360
367
  - lib/fog/compute/models/brightbox/zones.rb
361
368
  - lib/fog/compute/models/go_grid/image.rb
362
369
  - lib/fog/compute/models/go_grid/images.rb
370
+ - lib/fog/compute/models/go_grid/password.rb
371
+ - lib/fog/compute/models/go_grid/passwords.rb
363
372
  - lib/fog/compute/models/go_grid/server.rb
364
373
  - lib/fog/compute/models/go_grid/servers.rb
365
374
  - lib/fog/compute/models/rackspace/flavor.rb
@@ -524,6 +533,8 @@ files:
524
533
  - lib/fog/compute/requests/go_grid/grid_server_get.rb
525
534
  - lib/fog/compute/requests/go_grid/grid_server_list.rb
526
535
  - lib/fog/compute/requests/go_grid/grid_server_power.rb
536
+ - lib/fog/compute/requests/go_grid/support_password_get.rb
537
+ - lib/fog/compute/requests/go_grid/support_password_list.rb
527
538
  - lib/fog/compute/requests/linode/avail_datacenters.rb
528
539
  - lib/fog/compute/requests/linode/avail_distributions.rb
529
540
  - lib/fog/compute/requests/linode/avail_kernels.rb