fog-aliyun 0.3.3 → 0.3.4

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
- SHA1:
3
- metadata.gz: e8112e65fc18f3f89cf72ff352d04598767cd95e
4
- data.tar.gz: b066bbda00dd2dca8ce98df46390a96d7cc84796
2
+ SHA256:
3
+ metadata.gz: 3342904065d07911da7b06506be0f5d40755d48c07c6a37ebd2cc297dcc25955
4
+ data.tar.gz: 9e7de3b2b690382a19d8934bfb4d45393db51446fd7e9317c9499e4cfeb0ad6d
5
5
  SHA512:
6
- metadata.gz: fe59bca5c4b8831600e06588444637efd12426a88535d742b140b44cdb05dde0049bf1af41cd06fd307137327c50c3d6ad2265cc7ba8e8d8c1ecbb6e6b5722b5
7
- data.tar.gz: 96e3d984bba498615c0939a75182ff8d0d0f290642307e646bcb3c4d4c965f5c60483b01003d195ae8d6034027092192cfda40ef860777bdf1b17e4b77967e00
6
+ metadata.gz: 12161c7f4a12f82d37d495362ae4477e21535b87d40ab45519522816a99f89f51d5c4404c63ecc7d83128cf7dd80c550e435654ae75f3e6119fe0bf1a135f2c7
7
+ data.tar.gz: 6a4493f00253ed7ba9076fc66422ea70555cb416bda50e7895cada83739c12657219a2904f87482206624da729371e57dd5aeab34bbd7b544c7da3d0c7c0b985
@@ -351,6 +351,20 @@ module Fog
351
351
  '?Format=JSON&AccessKeyId=' + @aliyun_accesskey_id + '&Action=' + action + '&SignatureMethod=HMAC-SHA1&RegionId=' + @aliyun_region_id + '&SignatureNonce=' + sigNonce + '&SignatureVersion=1.0&Version=2014-05-26&Timestamp=' + urlTimeFormat
352
352
  end
353
353
 
354
+ def defaultAliyunQueryParameters(action, sigNonce, time)
355
+ {
356
+ Format: 'JSON',
357
+ AccessKeyId: @aliyun_accesskey_id,
358
+ Action: action,
359
+ SignatureMethod: 'HMAC-SHA1',
360
+ RegionId: @aliyun_region_id,
361
+ SignatureNonce: sigNonce,
362
+ SignatureVersion: '1.0',
363
+ Version: '2014-05-26',
364
+ Timestamp: time.strftime('%Y-%m-%dT%H:%M:%SZ')
365
+ }
366
+ end
367
+
354
368
  def defaultAliyunVPCUri(action, sigNonce, time)
355
369
  parTimeFormat = time.strftime('%Y-%m-%dT%H:%M:%SZ')
356
370
  urlTimeFormat = URI.encode(parTimeFormat, ':')
@@ -399,7 +413,14 @@ module Fog
399
413
  end
400
414
 
401
415
  # compute signature
416
+ # This method should be considered deprecated and replaced with sign_without_encoding, which is better for using querystring hashes and not
417
+ # building querystrings with string concatination.
402
418
  def sign(accessKeySecret, parameters)
419
+ signature = sign_without_encoding(accessKeySecret, parameters)
420
+ URI.encode(signature, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
421
+ end
422
+
423
+ def sign_without_encoding(accessKeySecret, parameters)
403
424
  sortedParameters = parameters.sort
404
425
  canonicalizedQueryString = ''
405
426
  sortedParameters.each do |k, v|
@@ -414,9 +435,7 @@ module Fog
414
435
  digest = OpenSSL::HMAC.digest(digVer, key, stringToSign)
415
436
  signature = Base64.encode64(digest)
416
437
  signature[-1] = ''
417
- encodedSig = URI.encode(signature, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
418
-
419
- encodedSig
438
+ signature
420
439
  end
421
440
  end
422
441
  end
@@ -29,7 +29,9 @@ module Fog
29
29
  attribute :snapshot_id, aliases: 'SnapshotId'
30
30
 
31
31
  def initialize(attributes)
32
- self.snapshot_id = attributes['DiskDeviceMappings']['DiskDeviceMapping'][0]['SnapshotId']
32
+ unless attributes['DiskDeviceMappings']['DiskDeviceMapping'].empty?
33
+ self.snapshot_id = attributes['DiskDeviceMappings']['DiskDeviceMapping'][0]['SnapshotId']
34
+ end
33
35
  super
34
36
  end
35
37
 
@@ -36,7 +36,7 @@ module Fog
36
36
  attribute :expired_at, aliases: 'ExpiredTime'
37
37
 
38
38
  def image
39
- requires image_id
39
+ requires :image_id
40
40
  Fog::Compute::Aliyun::Image.new(service: service).all(imageId: image_id)[0]
41
41
  end
42
42
 
@@ -10,7 +10,8 @@ module Fog
10
10
  model Fog::Compute::Aliyun::Server
11
11
 
12
12
  def all(options = {})
13
- Fog::JSON.decode(service.list_servers(options).body)['Instances']['Instance']
13
+ data = Fog::JSON.decode(service.list_servers(options).body)['Instances']['Instance']
14
+ load(data)
14
15
  end
15
16
 
16
17
  # Creates a new server and populates ssh keys
@@ -156,6 +156,7 @@ module Fog
156
156
  directory.key + '/' + key
157
157
  end
158
158
  data = service.head_object(object).data
159
+ return nil if data[:status] == 404
159
160
  lastModified = data[:headers]['Last-Modified']
160
161
  last_modified = (Time.parse(lastModified).localtime if !lastModified.nil? && lastModified != '')
161
162
 
@@ -41,7 +41,7 @@ module Fog
41
41
  )
42
42
 
43
43
  _InstanceTypeId = nil
44
- _InstanceTypeList = Fog::JSON.decode(response.body)['InstanceTypes']['InstanceType']
44
+ _InstanceTypeList = response.body['InstanceTypes']['InstanceType']
45
45
  _InstanceTypeList.each do |instance_type|
46
46
  next unless (instance_type['CpuCoreCount'] == cpuCount) && (instance_type['MemorySize'] == memorySize)
47
47
  _InstanceTypeId = instance_type['InstanceTypeId']
@@ -11,7 +11,7 @@ module Fog
11
11
  _time = Time.new.utc
12
12
 
13
13
  _parameters = defalutParameters(_action, _sigNonce, _time)
14
- _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
14
+ _query_parameters = defaultAliyunQueryParameters(_action, _sigNonce, _time)
15
15
 
16
16
  _InstanceId = options[:instanceId]
17
17
  _VpcId = options[:vpcId]
@@ -22,35 +22,35 @@ module Fog
22
22
  unless _InstanceId.nil?
23
23
  _InstanceStr = "[\"#{_InstanceId}\"]"
24
24
  _parameters['InstanceIds'] = _InstanceStr
25
- _pathURL += '&InstanceIds=' + _InstanceStr
25
+ _query_parameters[:InstanceIds] = _InstanceStr
26
26
  end
27
27
 
28
28
  unless _VpcId.nil?
29
29
  _parameters['VpcId'] = _VpcId
30
- _pathURL += '&VpcId=' + _VpcId
30
+ _query_parameters[:VpcId] = _VpcId
31
31
  end
32
32
 
33
33
  unless _SecurityGroupId.nil?
34
34
  _parameters['SecurityGroupId'] = _SecurityGroupId
35
- _pathURL += '&SecurityGroupId=' + _SecurityGroupId
35
+ _query_parameters[:SecurityGroupId] = _SecurityGroupId
36
36
  end
37
37
 
38
38
  unless _PageNumber.nil?
39
39
  _parameters['PageNumber'] = _PageNumber
40
- _pathURL += '&PageNumber=' + _PageNumber
40
+ _query_parameters[:PageNumber] = _PageNumber
41
41
  end
42
42
 
43
43
  _PageSize ||= '50'
44
44
  _parameters['PageSize'] = _PageSize
45
- _pathURL += '&PageSize=' + _PageSize
45
+ _query_parameters[:PageSize] = _PageSize
46
46
 
47
- _signature = sign(@aliyun_accesskey_secret, _parameters)
48
- _pathURL += '&Signature=' + _signature
47
+ _signature = sign_without_encoding(@aliyun_accesskey_secret, _parameters)
48
+ _query_parameters[:Signature] = _signature
49
49
 
50
50
  request(
51
51
  expects: [200, 203],
52
52
  method: 'GET',
53
- path: _pathURL
53
+ query: _query_parameters
54
54
  )
55
55
  end
56
56
  end
@@ -22,7 +22,7 @@ module Fog
22
22
  location = get_bucket_location(bucket)
23
23
 
24
24
  if acl == 'private'
25
- expires_time = (Time.now.to_i + expires).to_s
25
+ expires_time = (Time.now.to_i + (expires.nil? ? 0 : expires.to_i)).to_s
26
26
  resource = bucket + '/' + object
27
27
  signature = sign('GET', expires_time, nil, resource)
28
28
  'http://' + bucket + '.' + location + '.aliyuncs.com/' + object +
@@ -22,7 +22,7 @@ module Fog
22
22
  location = get_bucket_location(bucket)
23
23
 
24
24
  if acl == 'private'
25
- expires_time = (Time.now.to_i + expires).to_s
25
+ expires_time = (Time.now.to_i + (expires.nil? ? 0 : expires.to_i)).to_s
26
26
  resource = bucket + '/' + object
27
27
  signature = sign('GET', expires_time, nil, resource)
28
28
  'https://' + bucket + '.' + location + '.aliyuncs.com/' + object +
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Fog
4
4
  module Aliyun
5
- VERSION = '0.3.3'
5
+ VERSION = '0.3.4'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,159 +1,159 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-aliyun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qinsi Deng, Jianxun Li, Jane Han
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-28 00:00:00.000000000 Z
11
+ date: 2019-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mime-types
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.6'
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: 2.6.2
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ~>
41
+ - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: '2.6'
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.6.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry-nav
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - '>='
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rspec
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - '>='
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rubocop
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - '>='
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: fog-core
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - '>='
107
+ - - ">="
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - '>='
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: fog-json
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - '>='
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - '>='
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: ipaddress
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - ~>
135
+ - - "~>"
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0.8'
138
138
  type: :runtime
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - ~>
142
+ - - "~>"
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0.8'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: xml-simple
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - ~>
149
+ - - "~>"
150
150
  - !ruby/object:Gem::Version
151
151
  version: '1.1'
152
152
  type: :runtime
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - ~>
156
+ - - "~>"
157
157
  - !ruby/object:Gem::Version
158
158
  version: '1.1'
159
159
  description: As a FOG provider, fog-aliyun support aliyun OSS/ECS. It will support
@@ -164,13 +164,13 @@ executables: []
164
164
  extensions: []
165
165
  extra_rdoc_files: []
166
166
  files:
167
- - .gitignore
168
- - .rspec
169
- - .rubocop.yml
170
- - .rubocop_todo.yml
171
- - .ruby-gemset
172
- - .ruby-version
173
- - .travis.yml
167
+ - ".gitignore"
168
+ - ".rspec"
169
+ - ".rubocop.yml"
170
+ - ".rubocop_todo.yml"
171
+ - ".ruby-gemset"
172
+ - ".ruby-version"
173
+ - ".travis.yml"
174
174
  - CODE_OF_CONDUCT.md
175
175
  - Gemfile
176
176
  - LICENSE.txt
@@ -294,17 +294,16 @@ require_paths:
294
294
  - lib
295
295
  required_ruby_version: !ruby/object:Gem::Requirement
296
296
  requirements:
297
- - - '>='
297
+ - - ">="
298
298
  - !ruby/object:Gem::Version
299
299
  version: '0'
300
300
  required_rubygems_version: !ruby/object:Gem::Requirement
301
301
  requirements:
302
- - - '>='
302
+ - - ">="
303
303
  - !ruby/object:Gem::Version
304
304
  version: '0'
305
305
  requirements: []
306
- rubyforge_project:
307
- rubygems_version: 2.0.14.1
306
+ rubygems_version: 3.0.2
308
307
  signing_key:
309
308
  specification_version: 4
310
309
  summary: Fog provider for Aliyun Web Services.