cloudstack_client 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34dba51fe3666605497c2ec7f485717c4a04165a
4
- data.tar.gz: 7cfebfaa6b48835e4320520c11dd811c87b8d131
3
+ metadata.gz: bd4cd4b017446c7e94c52e7f8522852bf0dad509
4
+ data.tar.gz: 91e77bfe5a99bd81d3fb304afd7c87d90057271b
5
5
  SHA512:
6
- metadata.gz: 620d683ee029823a04dfb22bcfa154d1fcb06d24d4df61820dee4a21f6b8312e0eef96684e7f2bfb87e0d785245d8f612e49bcedfac27b99a3ee9fd524e73662
7
- data.tar.gz: 6799dea26324f16af8155b9c9bae6d8f47056901c43dc664accdffcc58c02fdfa8f7e17ed0f2d9aeec4edc319c1e1e1c69977f095d73b72130474e748a5aa3f7
6
+ metadata.gz: a9a4801541cc3d5c7f63938822a7ceaf19206a19097ed11eabf1e30619d63d791d3f7e7d10d9752d9cf834824d2de834885b8415fefb3d5c9a41421a281e01a8
7
+ data.tar.gz: 0c239a5ac06de097b634297d44cc039cd1ad68e461be8beb90d0b77e50cb6701052c38d9bc15e3d562c9b2f0471c92a4287e5067776a6d7f94d93986fc266d8a
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cloudstack_client (1.3.1)
4
+ cloudstack_client (1.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  bond (0.5.1)
10
10
  minitest (5.8.4)
11
- rake (11.1.1)
11
+ rake (11.1.2)
12
12
  ripl (0.7.1)
13
13
  bond (~> 0.5.1)
14
14
  thor (0.19.1)
@@ -36,11 +36,15 @@ module CloudstackClient
36
36
  end
37
37
 
38
38
  def required_params(command)
39
- @commands[command]["params"].map do |param|
39
+ self.params(command).map do |param|
40
40
  param["name"] if param["required"] == true
41
41
  end.compact
42
42
  end
43
43
 
44
+ def params(command)
45
+ @commands[command]["params"]
46
+ end
47
+
44
48
  def all_required_params?(command, args)
45
49
  required_params(command).all? { |k| args.key? k }
46
50
  end
@@ -33,11 +33,13 @@ module CloudstackClient
33
33
  params['apiKey'] = @api_key
34
34
 
35
35
  params_arr = params.sort.map do |key, value|
36
- if value.is_a?(Hash)
37
- value.each_with_index.map do |(k, v), i|
38
- "#{key}[#{i}].key=#{escape(k)}&" +
39
- "#{key}[#{i}].value=#{escape(v)}"
40
- end.join("&")
36
+ # support for maps (Arrays of Hashes)
37
+ if value.is_a?(Array)
38
+ map = []
39
+ value.each_with_index do |items, i|
40
+ items.each {|k, v| map << "#{key}[#{i}].#{k}=#{escape(v)}"}
41
+ end
42
+ map.sort.join("&")
41
43
  else
42
44
  "#{key}=#{escape(value)}"
43
45
  end
@@ -45,7 +47,7 @@ module CloudstackClient
45
47
 
46
48
  print_debug_output JSON.pretty_generate(params) if @debug
47
49
 
48
- data = params_arr.join('&')
50
+ data = params_arr.sort.join('&')
49
51
  signature = OpenSSL::HMAC.digest('sha1', @secret_key, data.downcase)
50
52
  signature = Base64.encode64(signature).chomp
51
53
  signature = CGI.escape(signature)
@@ -1,3 +1,3 @@
1
1
  module CloudstackClient
2
- VERSION = "1.3.1"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudstack_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nik Wolfgramm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-21 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.4.5
123
+ rubygems_version: 2.4.5.1
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: CloudStack API client written in Ruby