fog-aliyun 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +114 -0
  5. data/README.md +61 -3
  6. data/fog-aliyun.gemspec +9 -4
  7. data/lib/fog/aliyun/compute.rb +34 -10
  8. data/lib/fog/aliyun/models/compute/flavor.rb +28 -0
  9. data/lib/fog/aliyun/models/compute/flavors.rb +13 -0
  10. data/lib/fog/aliyun/models/compute/image.rb +3 -1
  11. data/lib/fog/aliyun/models/compute/server.rb +13 -1
  12. data/lib/fog/aliyun/models/compute/servers.rb +2 -1
  13. data/lib/fog/aliyun/models/compute/vpcs.rb +1 -1
  14. data/lib/fog/aliyun/models/storage/directories.rb +34 -17
  15. data/lib/fog/aliyun/models/storage/directory.rb +102 -14
  16. data/lib/fog/aliyun/models/storage/file.rb +130 -120
  17. data/lib/fog/aliyun/models/storage/files.rb +69 -128
  18. data/lib/fog/aliyun/requests/compute/allocate_eip_address.rb +1 -1
  19. data/lib/fog/aliyun/requests/compute/allocate_public_ip_address.rb +1 -1
  20. data/lib/fog/aliyun/requests/compute/associate_eip_address.rb +1 -1
  21. data/lib/fog/aliyun/requests/compute/attach_disk.rb +4 -2
  22. data/lib/fog/aliyun/requests/compute/create_disk.rb +2 -2
  23. data/lib/fog/aliyun/requests/compute/create_image.rb +1 -1
  24. data/lib/fog/aliyun/requests/compute/create_security_group.rb +1 -1
  25. data/lib/fog/aliyun/requests/compute/create_security_group_egress_ip_rule.rb +5 -3
  26. data/lib/fog/aliyun/requests/compute/create_security_group_egress_sg_rule.rb +4 -2
  27. data/lib/fog/aliyun/requests/compute/create_security_group_ip_rule.rb +5 -3
  28. data/lib/fog/aliyun/requests/compute/create_security_group_sg_rule.rb +4 -2
  29. data/lib/fog/aliyun/requests/compute/create_server.rb +23 -12
  30. data/lib/fog/aliyun/requests/compute/create_snapshot.rb +1 -1
  31. data/lib/fog/aliyun/requests/compute/create_vpc.rb +4 -2
  32. data/lib/fog/aliyun/requests/compute/create_vswitch.rb +4 -2
  33. data/lib/fog/aliyun/requests/compute/delete_disk.rb +1 -1
  34. data/lib/fog/aliyun/requests/compute/delete_image.rb +1 -1
  35. data/lib/fog/aliyun/requests/compute/delete_security_group.rb +1 -1
  36. data/lib/fog/aliyun/requests/compute/delete_security_group_egress_ip_rule.rb +5 -3
  37. data/lib/fog/aliyun/requests/compute/delete_security_group_egress_sg_rule.rb +4 -2
  38. data/lib/fog/aliyun/requests/compute/delete_security_group_ip_rule.rb +5 -3
  39. data/lib/fog/aliyun/requests/compute/delete_security_group_sg_rule.rb +4 -2
  40. data/lib/fog/aliyun/requests/compute/delete_server.rb +1 -1
  41. data/lib/fog/aliyun/requests/compute/delete_snapshot.rb +1 -1
  42. data/lib/fog/aliyun/requests/compute/delete_vpc.rb +1 -1
  43. data/lib/fog/aliyun/requests/compute/delete_vswitch.rb +1 -1
  44. data/lib/fog/aliyun/requests/compute/detach_disk.rb +4 -2
  45. data/lib/fog/aliyun/requests/compute/join_security_group.rb +1 -1
  46. data/lib/fog/aliyun/requests/compute/leave_security_group.rb +1 -1
  47. data/lib/fog/aliyun/requests/compute/list_disks.rb +1 -1
  48. data/lib/fog/aliyun/requests/compute/list_eip_addresses.rb +1 -1
  49. data/lib/fog/aliyun/requests/compute/list_images.rb +1 -1
  50. data/lib/fog/aliyun/requests/compute/list_route_tables.rb +1 -1
  51. data/lib/fog/aliyun/requests/compute/list_security_group_rules.rb +1 -1
  52. data/lib/fog/aliyun/requests/compute/list_security_groups.rb +1 -1
  53. data/lib/fog/aliyun/requests/compute/list_server_types.rb +3 -3
  54. data/lib/fog/aliyun/requests/compute/list_servers.rb +10 -10
  55. data/lib/fog/aliyun/requests/compute/list_snapshots.rb +1 -1
  56. data/lib/fog/aliyun/requests/compute/list_vpcs.rb +1 -1
  57. data/lib/fog/aliyun/requests/compute/list_vrouters.rb +1 -1
  58. data/lib/fog/aliyun/requests/compute/list_vswitchs.rb +1 -1
  59. data/lib/fog/aliyun/requests/compute/list_zones.rb +1 -1
  60. data/lib/fog/aliyun/requests/compute/modify_vpc.rb +4 -2
  61. data/lib/fog/aliyun/requests/compute/modify_vswitch.rb +4 -2
  62. data/lib/fog/aliyun/requests/compute/reboot_server.rb +1 -1
  63. data/lib/fog/aliyun/requests/compute/release_eip_address.rb +1 -1
  64. data/lib/fog/aliyun/requests/compute/start_server.rb +1 -1
  65. data/lib/fog/aliyun/requests/compute/stop_server.rb +1 -1
  66. data/lib/fog/aliyun/requests/compute/unassociate_eip_address.rb +1 -1
  67. data/lib/fog/aliyun/requests/storage/abort_multipart_upload.rb +22 -0
  68. data/lib/fog/aliyun/requests/storage/complete_multipart_upload.rb +21 -0
  69. data/lib/fog/aliyun/requests/storage/copy_object.rb +16 -23
  70. data/lib/fog/aliyun/requests/storage/delete_bucket.rb +5 -14
  71. data/lib/fog/aliyun/requests/storage/delete_multiple_objects.rb +20 -0
  72. data/lib/fog/aliyun/requests/storage/delete_object.rb +12 -35
  73. data/lib/fog/aliyun/requests/storage/get_bucket.rb +30 -110
  74. data/lib/fog/aliyun/requests/storage/get_bucket_location.rb +33 -0
  75. data/lib/fog/aliyun/requests/storage/get_object.rb +29 -24
  76. data/lib/fog/aliyun/requests/storage/get_object_acl.rb +30 -0
  77. data/lib/fog/aliyun/requests/storage/get_object_http_url.rb +14 -15
  78. data/lib/fog/aliyun/requests/storage/get_object_https_url.rb +14 -15
  79. data/lib/fog/aliyun/requests/storage/get_service.rb +13 -0
  80. data/lib/fog/aliyun/requests/storage/head_object.rb +27 -18
  81. data/lib/fog/aliyun/requests/storage/initiate_multipart_upload.rb +19 -0
  82. data/lib/fog/aliyun/requests/storage/list_buckets.rb +8 -26
  83. data/lib/fog/aliyun/requests/storage/list_objects.rb +14 -73
  84. data/lib/fog/aliyun/requests/storage/put_bucket.rb +4 -10
  85. data/lib/fog/aliyun/requests/storage/put_object.rb +18 -162
  86. data/lib/fog/aliyun/requests/storage/upload_part.rb +24 -0
  87. data/lib/fog/aliyun/storage.rb +57 -29
  88. data/lib/fog/aliyun/version.rb +1 -1
  89. data/lib/fog/aliyun.rb +6 -9
  90. data/lib/fog/bin/aliyun.rb +1 -1
  91. metadata +118 -47
  92. data/lib/fog/aliyun/requests/storage/delete_container.rb +0 -33
  93. data/lib/fog/aliyun/requests/storage/get_container.rb +0 -56
  94. data/lib/fog/aliyun/requests/storage/get_containers.rb +0 -60
  95. data/lib/fog/aliyun/requests/storage/put_container.rb +0 -32
@@ -2,45 +2,48 @@
2
2
 
3
3
  require 'fog/core/collection'
4
4
  require 'fog/aliyun/models/storage/file'
5
+ require 'aliyun/oss'
5
6
 
6
7
  module Fog
7
- module Storage
8
- class Aliyun
8
+ module Aliyun
9
+ class Storage
9
10
  class Files < Fog::Collection
10
11
  attribute :directory
11
12
  attribute :limit
12
- attribute :marker
13
+ attribute :prefix, :aliases => 'Prefix'
13
14
  attribute :path
14
- attribute :prefix
15
+ attribute :common_prefixes, :aliases => 'CommonPrefixes'
16
+ attribute :delimiter, :aliases => 'Delimiter'
17
+ attribute :is_truncated, :aliases => 'IsTruncated'
18
+ attribute :marker, :aliases => 'Marker'
19
+ attribute :max_keys, :aliases => ['MaxKeys', 'max-keys']
15
20
 
16
- model Fog::Storage::Aliyun::File
21
+ model Fog::Aliyun::Storage::File
17
22
 
18
- def all(_options = {})
23
+ def all(options = {})
19
24
  requires :directory
20
- prefix = directory.key + '/' if directory.key != '' && directory.key != '.' && !directory.key.nil?
21
- files = service.list_objects(prefix: prefix)['Contents']
22
- return if files.nil?
23
- data = []
24
- i = 0
25
- files.each do |file|
26
- next unless file['Key'][0][-1] != '/'
27
- content_length = file['Size'][0].to_i
28
- key = file['Key'][0]
29
- lastModified = file['LastModified'][0]
30
- last_modified = (Time.parse(lastModified).localtime if !lastModified.nil? && lastModified != '')
31
- type = file['Type'][0]
32
- data[i] = { content_length: content_length,
33
- key: key,
34
- last_modified: last_modified,
35
- etag: file['ETag'][0],
36
- object_type: type }
37
- i += 1
25
+ options = {
26
+ 'delimiter': delimiter,
27
+ 'marker': marker,
28
+ 'max-keys': max_keys.to_i,
29
+ 'prefix': prefix
30
+ }.merge!(options)
31
+ options = options.reject {|key,value| value.nil? || value.to_s.empty?}
32
+ merge_attributes(options)
33
+ parent = directory.collection.get(
34
+ directory.key,
35
+ options
36
+ )
37
+ if parent
38
+ merge_attributes(parent.files.attributes)
39
+ load(parent.files.map {|file| file.attributes})
40
+ else
41
+ nil
38
42
  end
39
-
40
- load(data)
41
43
  end
42
44
 
43
- alias each_file_this_page each
45
+ alias_method :each_file_this_page, :each
46
+
44
47
  def each
45
48
  if !block_given?
46
49
  self
@@ -48,7 +51,7 @@ module Fog
48
51
  subset = dup.all
49
52
 
50
53
  subset.each_file_this_page { |f| yield f }
51
- while subset.length == (subset.limit || 10_000)
54
+ while subset.is_truncated
52
55
  subset = subset.all(marker: subset.last.key)
53
56
  subset.each_file_this_page { |f| yield f }
54
57
  end
@@ -57,131 +60,69 @@ module Fog
57
60
  end
58
61
  end
59
62
 
60
- def get(key)
63
+ def get(key, options = {}, &block)
61
64
  requires :directory
62
- object = if directory.key == ''
63
- key
64
- else
65
- directory.key + '/' + key
66
- end
67
65
  begin
68
- data = service.get_object(object)
69
- rescue StandardError => error
70
- case error.response.body
71
- when %r{<Code>NoSuchKey</Code>}
66
+ data = service.get_object(directory.key, key, options, &block)
67
+ normalize_headers(data)
68
+ file_data = data.headers.merge({
69
+ :body => data.body,
70
+ :key => key
71
+ })
72
+ new(file_data)
73
+ rescue Exception => error
74
+ if error.respond_to?(:http_code) && error.http_code.to_i == 404
72
75
  nil
73
76
  else
74
77
  raise(error)
75
78
  end
76
79
  end
77
-
78
- contentLen = data[:headers]['Content-Length'].to_i
79
-
80
- if block_given?
81
- pagesNum = (contentLen + Excon::CHUNK_SIZE - 1) / Excon::CHUNK_SIZE
82
-
83
- for i in 1..pagesNum
84
- _start = (i - 1) * Excon::CHUNK_SIZE
85
- _end = i * Excon::CHUNK_SIZE - 1
86
- range = "#{_start}-#{_end}"
87
- data = service.get_object(object, range)
88
- chunk = data[:body]
89
- yield(chunk)
90
- body = nil
91
- end
92
- else
93
- body = data[:body]
94
- end
95
-
96
- lastModified = data[:headers]['Last-Modified']
97
- last_modified = (Time.parse(lastModified).localtime if !lastModified.nil? && lastModified != '')
98
-
99
- date = data[:headers]['Date']
100
- date = (Time.parse(date).localtime if !date.nil? && date != '')
101
- file_data = {
102
- body: body,
103
- content_length: contentLen,
104
- key: key,
105
- last_modified: last_modified,
106
- content_type: data[:headers]['Content-Type'],
107
- etag: data[:headers]['ETag'],
108
- date: date,
109
- connection: data[:headers]['Connection'],
110
- accept_ranges: data[:headers]['Accept-Ranges'],
111
- server: data[:headers]['Server'],
112
- object_type: data[:headers]['x-oss-object-type'],
113
- content_disposition: data[:headers]['Content-Disposition']
114
- }
115
-
116
- new(file_data)
117
80
  end
118
81
 
119
- def get_url(key)
82
+ # @param options[Hash] No need to use
83
+ def get_url(key, options = {})
120
84
  requires :directory
121
- object = if directory.key == ''
122
- key
123
- else
124
- directory.key + '/' + key
125
- end
126
- service.get_object_http_url_public(object, 3600)
85
+ service.get_object_http_url_public(directory.key, key, 3600)
127
86
  end
128
87
 
88
+ # @param options[Hash] No need to use
129
89
  def get_http_url(key, expires, options = {})
130
90
  requires :directory
131
- object = if directory.key == ''
132
- key
133
- else
134
- directory.key + '/' + key
135
- end
136
- expires = expires.nil? ? 0 : expires.to_i
137
- service.get_object_http_url_public(object, expires, options)
91
+ service.get_object_http_url_public(directory.key, key, expires)
138
92
  end
139
93
 
94
+ # @param options[Hash] No need to use
140
95
  def get_https_url(key, expires, options = {})
141
96
  requires :directory
142
- object = if directory.key == ''
143
- key
144
- else
145
- directory.key + '/' + key
146
- end
147
- expires = expires.nil? ? 0 : expires.to_i
148
- service.get_object_https_url_public(object, expires, options)
97
+ service.get_object_https_url_public(directory.key, key, expires)
149
98
  end
150
99
 
151
- def head(key, _options = {})
100
+ def head(key, options = {})
152
101
  requires :directory
153
- object = if directory.key == ''
154
- key
155
- else
156
- directory.key + '/' + key
157
- end
158
- data = service.head_object(object).data
159
- lastModified = data[:headers]['Last-Modified']
160
- last_modified = (Time.parse(lastModified).localtime if !lastModified.nil? && lastModified != '')
161
-
162
- date = data[:headers]['Date']
163
- date = (Time.parse(date).localtime if !date.nil? && date != '')
164
-
165
- file_data = {
166
- content_length: data[:headers]['Content-Length'].to_i,
167
- key: key,
168
- last_modified: last_modified,
169
- content_type: data[:headers]['Content-Type'],
170
- etag: data[:headers]['ETag'],
171
- date: date,
172
- connection: data[:headers]['Connection'],
173
- accept_ranges: data[:headers]['Accept-Ranges'],
174
- server: data[:headers]['Server'],
175
- object_type: data[:headers]['x-oss-object-type']
176
- }
177
- new(file_data)
178
- rescue Fog::Storage::Aliyun::NotFound
179
- nil
102
+ begin
103
+ data = service.head_object(directory.key, key, options)
104
+ normalize_headers(data)
105
+ file_data = data.headers.merge({
106
+ :key => key
107
+ })
108
+ new(file_data)
109
+ rescue Exception => error
110
+ if error.respond_to?(:http_code) && error.http_code.to_i == 404
111
+ nil
112
+ else
113
+ raise(error)
114
+ end
115
+ end
180
116
  end
181
117
 
182
118
  def new(attributes = {})
183
119
  requires :directory
184
- super({ directory: directory }.merge!(attributes))
120
+ super({ :directory => directory }.merge!(attributes))
121
+ end
122
+
123
+ def normalize_headers(data)
124
+ data.headers[:last_modified] = Time.parse(data.headers[:last_modified])
125
+ data.headers[:etag] = data.headers[:etag].gsub('"','')
185
126
  end
186
127
  end
187
128
  end
@@ -26,7 +26,7 @@ module Fog
26
26
  _sigNonce = randonStr
27
27
  _time = Time.new.utc
28
28
 
29
- _parameters = defalutParameters(_action, _sigNonce, _time)
29
+ _parameters = defaultParameters(_action, _sigNonce, _time)
30
30
  _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
31
31
 
32
32
  # optional parameters
@@ -20,7 +20,7 @@ module Fog
20
20
  _sigNonce = randonStr
21
21
  _time = Time.new.utc
22
22
 
23
- _parameters = defalutParameters(_action, _sigNonce, _time)
23
+ _parameters = defaultParameters(_action, _sigNonce, _time)
24
24
  _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
25
25
 
26
26
  _parameters['InstanceId'] = server_id
@@ -22,7 +22,7 @@ module Fog
22
22
 
23
23
  type = options['instance_type']
24
24
 
25
- _parameters = defalutParameters(_action, _sigNonce, _time)
25
+ _parameters = defaultParameters(_action, _sigNonce, _time)
26
26
  _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
27
27
 
28
28
  _parameters['InstanceId'] = server_id
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -23,7 +25,7 @@ module Fog
23
25
  sigNonce = randonStr
24
26
  time = Time.new.utc
25
27
 
26
- parameters = defalutParameters(action, sigNonce, time)
28
+ parameters = defaultParameters(action, sigNonce, time)
27
29
  pathUrl = defaultAliyunUri(action, sigNonce, time)
28
30
 
29
31
  parameters['InstanceId'] = instanceId
@@ -46,7 +48,7 @@ module Fog
46
48
  if device
47
49
  parameters['Device'] = device
48
50
  pathUrl += '&Device='
49
- pathUrl += URI.encode(device, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
51
+ pathUrl += Addressable::URI.encode_component(device, Addressable::URI::CharacterClasses::UNRESERVED + '|')
50
52
  end
51
53
 
52
54
  signature = sign(@aliyun_accesskey_secret, parameters)
@@ -25,7 +25,7 @@ module Fog
25
25
  sigNonce = randonStr
26
26
  time = Time.new.utc
27
27
 
28
- parameters = defalutParameters(action, sigNonce, time)
28
+ parameters = defaultParameters(action, sigNonce, time)
29
29
  pathUrl = defaultAliyunUri(action, sigNonce, time)
30
30
 
31
31
  parameters['ZoneId'] = @aliyun_zone_id
@@ -90,7 +90,7 @@ module Fog
90
90
  sigNonce = randonStr
91
91
  time = Time.new.utc
92
92
 
93
- parameters = defalutParameters(action, sigNonce, time)
93
+ parameters = defaultParameters(action, sigNonce, time)
94
94
  pathUrl = defaultAliyunUri(action, sigNonce, time)
95
95
 
96
96
  parameters['ZoneId'] = @aliyun_zone_id
@@ -10,7 +10,7 @@ module Fog
10
10
  sigNonce = randonStr
11
11
  time = Time.new.utc
12
12
 
13
- parameters = defalutParameters(action, sigNonce, time)
13
+ parameters = defaultParameters(action, sigNonce, time)
14
14
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
15
 
16
16
  parameters['SnapshotId'] = snapshotId
@@ -10,7 +10,7 @@ module Fog
10
10
  sigNonce = randonStr
11
11
  time = Time.new.utc
12
12
 
13
- parameters = defalutParameters(action, sigNonce, time)
13
+ parameters = defaultParameters(action, sigNonce, time)
14
14
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
15
 
16
16
  name = options[:name]
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,7 +12,7 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['SecurityGroupId'] = securitygroup_id
@@ -19,7 +21,7 @@ module Fog
19
21
 
20
22
  parameters['DestCidrIp'] = destCidrIp
21
23
  pathUrl += '&DestCidrIp='
22
- pathUrl += URI.encode(destCidrIp, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
24
+ pathUrl += Addressable::URI.encode_component(destCidrIp, Addressable::URI::CharacterClasses::UNRESERVED + '|')
23
25
  nicType ||= 'intranet'
24
26
  parameters['NicType'] = nicType
25
27
  pathUrl += '&NicType='
@@ -29,7 +31,7 @@ module Fog
29
31
  portRange ||= '-1/-1'
30
32
  parameters['PortRange'] = portRange
31
33
  pathUrl += '&PortRange='
32
- pathUrl += URI.encode(portRange, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
34
+ pathUrl += Addressable::URI.encode_component(portRange, Addressable::URI::CharacterClasses::UNRESERVED + '|')
33
35
 
34
36
  protocol = option[:protocol]
35
37
  protocol ||= 'all'
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,7 +12,7 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['SecurityGroupId'] = securitygroup_id
@@ -30,7 +32,7 @@ module Fog
30
32
  portRange ||= '-1/-1'
31
33
  parameters['PortRange'] = portRange
32
34
  pathUrl += '&PortRange='
33
- pathUrl += URI.encode(portRange, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
35
+ pathUrl += Addressable::URI.encode_component(portRange, Addressable::URI::CharacterClasses::UNRESERVED + '|')
34
36
 
35
37
  protocol = option[:protocol]
36
38
  protocol ||= 'all'
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,7 +12,7 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['SecurityGroupId'] = securitygroup_id
@@ -19,7 +21,7 @@ module Fog
19
21
 
20
22
  parameters['SourceCidrIp'] = sourceCidrIp
21
23
  pathUrl += '&SourceCidrIp='
22
- pathUrl += URI.encode(sourceCidrIp, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
24
+ pathUrl += Addressable::URI.encode_component(sourceCidrIp, Addressable::URI::CharacterClasses::UNRESERVED + '|')
23
25
  nicType ||= 'intranet'
24
26
  parameters['NicType'] = nicType
25
27
  pathUrl += '&NicType='
@@ -29,7 +31,7 @@ module Fog
29
31
  portRange ||= '-1/-1'
30
32
  parameters['PortRange'] = portRange
31
33
  pathUrl += '&PortRange='
32
- pathUrl += URI.encode(portRange, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
34
+ pathUrl += Addressable::URI.encode_component(portRange, Addressable::URI::CharacterClasses::UNRESERVED + '|')
33
35
 
34
36
  protocol = option[:protocol]
35
37
  protocol ||= 'all'
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,7 +12,7 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['SecurityGroupId'] = securitygroup_id
@@ -30,7 +32,7 @@ module Fog
30
32
  portRange ||= '-1/-1'
31
33
  parameters['PortRange'] = portRange
32
34
  pathUrl += '&PortRange='
33
- pathUrl += URI.encode(portRange, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
35
+ pathUrl += Addressable::URI.encode_component(portRange, Addressable::URI::CharacterClasses::UNRESERVED + '|')
34
36
 
35
37
  protocol = option[:protocol]
36
38
  protocol ||= 'all'
@@ -10,7 +10,7 @@ module Fog
10
10
  _sigNonce = randonStr
11
11
  _time = Time.new.utc
12
12
 
13
- _parameters = defalutParameters(_action, _sigNonce, _time)
13
+ _parameters = defaultParameters(_action, _sigNonce, _time)
14
14
  _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
15
15
 
16
16
  _parameters['ImageId'] = imageId
@@ -68,19 +68,30 @@ module Fog
68
68
  _parameters['PrivateIpAddress'] = _PrivateIpAddress
69
69
  _pathURL += '&PrivateIpAddress=' + _PrivateIpAddress
70
70
  end
71
- else
71
+ end
72
72
 
73
- _InternetMaxBandwidthIn = options[:InternetMaxBandwidthIn]
74
- if _InternetMaxBandwidthIn
75
- _parameters['InternetMaxBandwidthIn'] = _InternetMaxBandwidthIn
76
- _pathURL += '&InternetMaxBandwidthIn=' + _InternetMaxBandwidthIn
77
- end
73
+ _InternetMaxBandwidthIn = options[:InternetMaxBandwidthIn]
74
+ if _InternetMaxBandwidthIn
75
+ _parameters['InternetMaxBandwidthIn'] = _InternetMaxBandwidthIn
76
+ _pathURL += '&InternetMaxBandwidthIn=' + _InternetMaxBandwidthIn
77
+ end
78
78
 
79
- _InternetMaxBandwidthOut = options[:InternetMaxBandwidthOut]
80
- if _InternetMaxBandwidthOut
81
- _parameters['InternetMaxBandwidthOut'] = _InternetMaxBandwidthOut
82
- _pathURL += '&InternetMaxBandwidthOut=' + _InternetMaxBandwidthOut
83
- end
79
+ _InternetMaxBandwidthOut = options[:InternetMaxBandwidthOut]
80
+ if _InternetMaxBandwidthOut
81
+ _parameters['InternetMaxBandwidthOut'] = _InternetMaxBandwidthOut
82
+ _pathURL += '&InternetMaxBandwidthOut=' + _InternetMaxBandwidthOut
83
+ end
84
+
85
+ _KeyPairName = options[:KeyPairName]
86
+ if _KeyPairName
87
+ _parameters['KeyPairName'] = _KeyPairName
88
+ _pathURL += '&KeyPairName=' + _KeyPairName
89
+ end
90
+
91
+ _UserData = options[:UserData]
92
+ if _UserData
93
+ _parameters['UserData'] = _UserData
94
+ _pathURL += '&UserData=' + _UserData
84
95
  end
85
96
 
86
97
  _signature = sign(@aliyun_accesskey_secret, _parameters)
@@ -10,7 +10,7 @@ module Fog
10
10
  sigNonce = randonStr
11
11
  time = Time.new.utc
12
12
 
13
- parameters = defalutParameters(action, sigNonce, time)
13
+ parameters = defaultParameters(action, sigNonce, time)
14
14
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
15
 
16
16
  parameters['DiskId'] = diskId
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,12 +12,12 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['CidrBlock'] = cidrBlock
17
19
  pathUrl += '&CidrBlock='
18
- pathUrl += URI.encode(cidrBlock, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
20
+ pathUrl += Addressable::URI.encode_component(cidrBlock, Addressable::URI::CharacterClasses::UNRESERVED + '|')
19
21
 
20
22
  name = options[:name]
21
23
  desc = options[:description]
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,7 +12,7 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['VpcId'] = vpcId
@@ -19,7 +21,7 @@ module Fog
19
21
 
20
22
  parameters['CidrBlock'] = cidrBlock
21
23
  pathUrl += '&CidrBlock='
22
- pathUrl += URI.encode(cidrBlock, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
24
+ pathUrl += Addressable::URI.encode_component(cidrBlock, Addressable::URI::CharacterClasses::UNRESERVED + '|')
23
25
 
24
26
  parameters['ZoneId'] = @aliyun_zone_id
25
27
  pathUrl += '&ZoneId='
@@ -20,7 +20,7 @@ module Fog
20
20
  sigNonce = randonStr
21
21
  time = Time.new.utc
22
22
 
23
- parameters = defalutParameters(action, sigNonce, time)
23
+ parameters = defaultParameters(action, sigNonce, time)
24
24
  pathUrl = defaultAliyunUri(action, sigNonce, time)
25
25
 
26
26
  parameters['DiskId'] = diskId
@@ -10,7 +10,7 @@ module Fog
10
10
  sigNonce = randonStr
11
11
  time = Time.new.utc
12
12
 
13
- parameters = defalutParameters(action, sigNonce, time)
13
+ parameters = defaultParameters(action, sigNonce, time)
14
14
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
15
 
16
16
  parameters['ImageId'] = imageId
@@ -10,7 +10,7 @@ module Fog
10
10
  sigNonce = randonStr
11
11
  time = Time.new.utc
12
12
 
13
- parameters = defalutParameters(action, sigNonce, time)
13
+ parameters = defaultParameters(action, sigNonce, time)
14
14
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
15
 
16
16
  if security_group_id
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable'
4
+
3
5
  module Fog
4
6
  module Compute
5
7
  class Aliyun
@@ -10,7 +12,7 @@ module Fog
10
12
  sigNonce = randonStr
11
13
  time = Time.new.utc
12
14
 
13
- parameters = defalutParameters(action, sigNonce, time)
15
+ parameters = defaultParameters(action, sigNonce, time)
14
16
  pathUrl = defaultAliyunUri(action, sigNonce, time)
15
17
 
16
18
  parameters['SecurityGroupId'] = securitygroup_id
@@ -19,7 +21,7 @@ module Fog
19
21
 
20
22
  parameters['DestCidrIp'] = destCidrIp
21
23
  pathUrl += '&DestCidrIp='
22
- pathUrl += URI.encode(destCidrIp, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
24
+ pathUrl += Addressable::URI.encode_component(destCidrIp, Addressable::URI::CharacterClasses::UNRESERVED + '|')
23
25
  nicType ||= 'intranet'
24
26
  parameters['NicType'] = nicType
25
27
  pathUrl += '&NicType='
@@ -29,7 +31,7 @@ module Fog
29
31
  portRange ||= '-1/-1'
30
32
  parameters['PortRange'] = portRange
31
33
  pathUrl += '&PortRange='
32
- pathUrl += URI.encode(portRange, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
34
+ pathUrl += Addressable::URI.encode_component(portRange, Addressable::URI::CharacterClasses::UNRESERVED + '|')
33
35
 
34
36
  protocol = option[:protocol]
35
37
  protocol ||= 'all'