ace-client 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -166,6 +166,26 @@ Then output would be:
166
166
  </ResponseMetadata>
167
167
  </CreateQueueResponse>
168
168
 
169
+ ### Rewrite Parameters before Creating Signature
170
+
171
+ You can rewrite default parameters with `:before_signature` hook before creating signature.
172
+ For example, you have to specify `AccessKeyId` instead of `AWSAccessKeyId` when using NIFTY Cloud API (http://cloud.nifty.com/api/rest/authenticate.htm).
173
+ You can intercept params and rewrite `AWSAccessKeyId` to `AccessKeyId` using `:before_signature`.
174
+
175
+ require 'ace-client'
176
+
177
+ compute = AceClient::Query2.new(
178
+ :endpoint => 'cp.cloud.nifty.com',
179
+ :path => '/api',
180
+ :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
181
+ :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
182
+ :before_signature => lambda {|params|
183
+ params['AccessKeyId'] = params.delete('AWSAccessKeyId')
184
+ }
185
+ )
186
+ p compute.action('DescribeRegions')
187
+ # => #<HTTParty::Response:0x7c0b0a0 parsed_response={"DescribeRegionsResponse"=>{"requestId"=>"df9de22f-cb3b-4cf9-9ee0-377e78742bf4", "regionInfo"=>{"item"=>[{"regionName"=>"east-1", "regionEndpoint"=>"east-1.cp.cloud.nifty.com", "messageSet"=>{"item"=>nil}, "isDefault"=>"true"}, {"regionName"=>"west-1", "regionEndpoint"=>"west-1.cp.cloud.nifty.com", "messageSet"=>{"item"=>nil}, "isDefault"=>"false"}]}}}, @response=#<Net::HTTPOK 200 OK readbody=true>, @headers={"date"=>["Sat, 23 Nov 2013 05:03:20 GMT"], "x-frame-options"=>["SAMEORIGIN"], "content-type"=>["text/xml;charset=utf-8"], "content-length"=>["558"], "vary"=>["Accept-Encoding"], "connection"=>["close"]}>
188
+
169
189
  ## TODO
170
190
 
171
191
  * query + sig4 support
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -4,6 +4,7 @@ require 'uri'
4
4
  module AceClient
5
5
  class Base
6
6
  include HTTParty
7
+ ssl_version :SSLv3
7
8
 
8
9
  attr_accessor :access_key_id
9
10
  attr_accessor :secret_access_key
@@ -16,10 +17,10 @@ module AceClient
16
17
  attr_accessor :user_agent
17
18
 
18
19
  def initialize(options)
19
- @access_key_id = options[:access_key_id]
20
- @secret_access_key = options[:secret_access_key]
21
- @endpoint = options[:endpoint]
22
- @http_proxy = options[:http_proxy]
20
+ @access_key_id = options[:access_key_id] || ENV['ACE_ACCESS_KEY_ID']
21
+ @secret_access_key = options[:secret_access_key] || ENV['ACE_SECRET_ACCESS_KEY']
22
+ @endpoint = options[:endpoint] || ENV['ACE_ENDPOINT']
23
+ @http_proxy = options[:http_proxy] || ENV['HTTP_PROXY']
23
24
  @http_method = options[:http_method] || :post
24
25
  @use_ssl = options[:use_ssl] || true
25
26
  @version = options[:version]
@@ -15,6 +15,8 @@ module AceClient
15
15
  super(options)
16
16
  @signature_method = options[:signature_method] || 'HmacSHA256'
17
17
  @sampler = options[:sampler]
18
+ @before_signature = options[:before_signature]
19
+ @before_request = options[:before_request]
18
20
  end
19
21
 
20
22
  def action(action, params={})
@@ -36,23 +38,26 @@ module AceClient
36
38
  'Timestamp' => Time.now.getutc.iso8601.sub(/Z/, sprintf(".%03dZ",(Time.now.getutc.usec/1000)))
37
39
  )
38
40
  @params['Version'] = @version if @version
41
+
42
+ @before_signature.call(@params) if @before_signature
43
+
39
44
  @params['Signature'] = create_signature
40
45
 
41
46
  options = self.class.default_options.dup
42
- options.merge!(
43
- :headers => {
44
- 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8'
45
- },
46
- :query => @params
47
- )
47
+ options[:headers] = {}
48
+ options[:headers]['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
48
49
  options[:headers]['User-Agent'] = @user_agent if @user_agent
49
50
 
50
51
  if http_method == :get
52
+ options[:query] = @params
51
53
  http_method_class = Net::HTTP::Get
52
54
  elsif http_method == :post
55
+ options[:body] = @params
53
56
  http_method_class = Net::HTTP::Post
54
57
  end
55
58
 
59
+ @before_request.call(@params) if @before_request
60
+
56
61
  request = HTTParty::Request.new(http_method_class, endpoint_url + @path, options)
57
62
  if dryrun
58
63
  request
@@ -65,7 +70,7 @@ module AceClient
65
70
  end
66
71
 
67
72
  def sample_request(request)
68
- query = request.options[:query].dup
73
+ query = (request.options[:query] || request.options[:body]).dup
69
74
  variable_keys = %w(Version SignatureVersion SignatureMethod Timestamp AWSAccessKeyId Signature)
70
75
  variables = {}
71
76
  variable_keys.each do |key|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-21 00:00:00.000000000Z
12
+ date: 2013-11-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &135907300 !ruby/object:Gem::Requirement
16
+ requirement: &182806060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *135907300
24
+ version_requirements: *182806060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &135906120 !ruby/object:Gem::Requirement
27
+ requirement: &182804780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.12'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *135906120
35
+ version_requirements: *182804780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &135904500 !ruby/object:Gem::Requirement
38
+ requirement: &182803780 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *135904500
46
+ version_requirements: *182803780
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &135903340 !ruby/object:Gem::Requirement
49
+ requirement: &182802740 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.7
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *135903340
57
+ version_requirements: *182802740
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rcov
60
- requirement: &135900940 !ruby/object:Gem::Requirement
60
+ requirement: &182800860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *135900940
68
+ version_requirements: *182800860
69
69
  description: Simple ACE(Amazon Compatible Environment) Client
70
70
  email: tily05@gmail.com
71
71
  executables: []
@@ -101,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
101
  version: '0'
102
102
  segments:
103
103
  - 0
104
- hash: -1694008381801661221
104
+ hash: -3654989663999187690
105
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements: