cloudstack_client 1.3.1 → 1.4.0

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.
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