azure-storage 0.13.0.preview → 0.14.0.preview
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/azure/storage.rb +14 -13
- data/lib/azure/storage/autoload.rb +31 -31
- data/lib/azure/storage/blob/append.rb +43 -41
- data/lib/azure/storage/blob/blob.rb +150 -147
- data/lib/azure/storage/blob/blob_service.rb +186 -184
- data/lib/azure/storage/blob/block.rb +56 -56
- data/lib/azure/storage/blob/container.rb +93 -92
- data/lib/azure/storage/blob/page.rb +187 -104
- data/lib/azure/storage/blob/serialization.rb +32 -18
- data/lib/azure/storage/client.rb +18 -17
- data/lib/azure/storage/client_options.rb +192 -193
- data/lib/azure/storage/client_options_error.rb +5 -5
- data/lib/azure/storage/configurable.rb +39 -39
- data/lib/azure/storage/core.rb +6 -4
- data/lib/azure/storage/core/auth/shared_access_signature.rb +5 -3
- data/lib/azure/storage/core/auth/shared_access_signature_generator.rb +34 -33
- data/lib/azure/storage/core/auth/shared_access_signature_signer.rb +5 -5
- data/lib/azure/storage/core/auth/shared_key.rb +17 -15
- data/lib/azure/storage/core/autoload.rb +15 -13
- data/lib/azure/storage/core/error.rb +3 -1
- data/lib/azure/storage/core/filter/exponential_retry_filter.rb +13 -11
- data/lib/azure/storage/core/filter/linear_retry_filter.rb +10 -8
- data/lib/azure/storage/core/filter/retry_filter.rb +30 -29
- data/lib/azure/storage/core/http_client.rb +18 -16
- data/lib/azure/storage/core/sr.rb +50 -48
- data/lib/azure/storage/core/utility.rb +19 -17
- data/lib/azure/storage/default.rb +371 -361
- data/lib/azure/storage/file/directory.rb +36 -31
- data/lib/azure/storage/file/file.rb +103 -100
- data/lib/azure/storage/file/file_service.rb +42 -40
- data/lib/azure/storage/file/serialization.rb +9 -6
- data/lib/azure/storage/file/share.rb +48 -46
- data/lib/azure/storage/queue/message.rb +3 -1
- data/lib/azure/storage/queue/queue.rb +3 -2
- data/lib/azure/storage/queue/queue_service.rb +152 -151
- data/lib/azure/storage/queue/serialization.rb +7 -5
- data/lib/azure/storage/service/access_policy.rb +3 -1
- data/lib/azure/storage/service/cors.rb +4 -2
- data/lib/azure/storage/service/cors_rule.rb +3 -1
- data/lib/azure/storage/service/enumeration_results.rb +3 -1
- data/lib/azure/storage/service/logging.rb +5 -3
- data/lib/azure/storage/service/metrics.rb +5 -3
- data/lib/azure/storage/service/retention_policy.rb +3 -1
- data/lib/azure/storage/service/serialization.rb +31 -30
- data/lib/azure/storage/service/signed_identifier.rb +5 -4
- data/lib/azure/storage/service/storage_service.rb +33 -32
- data/lib/azure/storage/service/storage_service_properties.rb +6 -4
- data/lib/azure/storage/table/auth/shared_key.rb +9 -8
- data/lib/azure/storage/table/batch.rb +55 -55
- data/lib/azure/storage/table/batch_response.rb +17 -17
- data/lib/azure/storage/table/edmtype.rb +9 -7
- data/lib/azure/storage/table/entity.rb +4 -3
- data/lib/azure/storage/table/guid.rb +3 -1
- data/lib/azure/storage/table/query.rb +17 -19
- data/lib/azure/storage/table/serialization.rb +14 -12
- data/lib/azure/storage/table/table_service.rb +79 -80
- data/lib/azure/storage/version.rb +7 -5
- metadata +2 -2
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#-------------------------------------------------------------------------
|
2
4
|
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
5
|
#
|
@@ -21,9 +23,9 @@
|
|
21
23
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
24
|
# THE SOFTWARE.
|
23
25
|
#--------------------------------------------------------------------------
|
24
|
-
require
|
25
|
-
require
|
26
|
-
require
|
26
|
+
require "azure/storage/service/logging"
|
27
|
+
require "azure/storage/service/metrics"
|
28
|
+
require "azure/storage/service/cors"
|
27
29
|
|
28
30
|
module Azure::Storage
|
29
31
|
module Service
|
@@ -43,4 +45,4 @@ module Azure::Storage
|
|
43
45
|
attr_accessor :default_service_version
|
44
46
|
end
|
45
47
|
end
|
46
|
-
end
|
48
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#-------------------------------------------------------------------------
|
2
4
|
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
5
|
#
|
@@ -21,8 +23,8 @@
|
|
21
23
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
24
|
# THE SOFTWARE.
|
23
25
|
#--------------------------------------------------------------------------
|
24
|
-
require
|
25
|
-
require
|
26
|
+
require "cgi"
|
27
|
+
require "azure/storage/core/auth/shared_key"
|
26
28
|
|
27
29
|
module Azure::Storage
|
28
30
|
module Table
|
@@ -41,9 +43,9 @@ module Azure::Storage
|
|
41
43
|
def signable_string(method, uri, headers)
|
42
44
|
[
|
43
45
|
method.to_s.upcase,
|
44
|
-
headers.fetch(
|
45
|
-
headers.fetch(
|
46
|
-
headers.fetch(
|
46
|
+
headers.fetch("Content-MD5", ""),
|
47
|
+
headers.fetch("Content-Type", ""),
|
48
|
+
headers.fetch("Date") { headers.fetch("x-ms-date") },
|
47
49
|
canonicalized_resource(uri)
|
48
50
|
].join("\n")
|
49
51
|
end
|
@@ -56,12 +58,11 @@ module Azure::Storage
|
|
56
58
|
def canonicalized_resource(uri)
|
57
59
|
resource = "/#{account_name}#{uri.path}"
|
58
60
|
|
59
|
-
comp = CGI.parse(uri.query.to_s).fetch(
|
60
|
-
resource = [resource,
|
61
|
+
comp = CGI.parse(uri.query.to_s).fetch("comp", nil)
|
62
|
+
resource = [resource, "comp=" + comp[0]].join("?") if comp
|
61
63
|
|
62
64
|
resource
|
63
65
|
end
|
64
|
-
|
65
66
|
end
|
66
67
|
end
|
67
68
|
end
|
@@ -21,17 +21,17 @@
|
|
21
21
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
22
|
# THE SOFTWARE.
|
23
23
|
#--------------------------------------------------------------------------
|
24
|
-
require
|
24
|
+
require "securerandom"
|
25
25
|
|
26
|
-
require
|
27
|
-
require
|
28
|
-
require
|
29
|
-
require
|
26
|
+
require "azure/core/http/http_error"
|
27
|
+
require "azure/storage/table/serialization"
|
28
|
+
require "azure/storage/table/table_service"
|
29
|
+
require "azure/storage/table/batch_response"
|
30
30
|
|
31
31
|
module Azure::Storage
|
32
32
|
module Table
|
33
33
|
# Represents a batch of table operations.
|
34
|
-
#
|
34
|
+
#
|
35
35
|
# Example usage (block syntax):
|
36
36
|
#
|
37
37
|
# results = Batch.new "table", "partition" do
|
@@ -46,9 +46,9 @@ module Azure::Storage
|
|
46
46
|
# .insert("row2", {"meta"=>"data"})
|
47
47
|
# .execute
|
48
48
|
#
|
49
|
-
# which is equivalent to (as class):
|
50
|
-
#
|
51
|
-
# svc = TableSerice.new
|
49
|
+
# which is equivalent to (as class):
|
50
|
+
#
|
51
|
+
# svc = TableSerice.new
|
52
52
|
#
|
53
53
|
# batch = Batch.new "table", "partition"
|
54
54
|
# batch.insert "row1", {"meta"=>"data"}
|
@@ -70,74 +70,74 @@ module Azure::Storage
|
|
70
70
|
end
|
71
71
|
|
72
72
|
private
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
attr_reader :table
|
74
|
+
attr_reader :partition
|
75
|
+
attr_reader :table_service
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
attr_accessor :operations
|
78
|
+
attr_accessor :entity_keys
|
79
|
+
attr_accessor :changeset_id
|
80
80
|
|
81
81
|
public
|
82
82
|
attr_accessor :batch_id
|
83
83
|
|
84
84
|
protected
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
def execute
|
86
|
+
@table_service.execute_batch(self)
|
87
|
+
end
|
88
88
|
|
89
89
|
protected
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
class ResponseWrapper
|
91
|
+
def initialize(hash)
|
92
|
+
@hash = hash
|
93
|
+
end
|
94
94
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
def status_code
|
100
|
-
@hash[:status_code].to_i
|
101
|
-
end
|
95
|
+
def uri
|
96
|
+
@hash[:uri]
|
97
|
+
end
|
102
98
|
|
103
|
-
|
104
|
-
|
99
|
+
def status_code
|
100
|
+
@hash[:status_code].to_i
|
101
|
+
end
|
102
|
+
|
103
|
+
def body
|
104
|
+
@hash[:body]
|
105
|
+
end
|
105
106
|
end
|
106
|
-
end
|
107
107
|
|
108
108
|
protected
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
109
|
+
def add_operation(method, uri, body = nil, headers = nil)
|
110
|
+
op = {
|
111
|
+
method: method,
|
112
|
+
uri: uri,
|
113
|
+
body: body,
|
114
|
+
headers: headers.merge(
|
115
|
+
HeaderConstants::CONTENT_TYPE => HeaderConstants::JSON_CONTENT_TYPE_VALUE,
|
116
|
+
HeaderConstants::DATA_SERVICE_VERSION => TableConstants::DEFAULT_DATA_SERVICE_VERSION
|
117
|
+
)
|
118
|
+
}
|
119
|
+
operations.push op
|
120
|
+
end
|
121
121
|
|
122
122
|
protected
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
123
|
+
def check_entity_key(key)
|
124
|
+
raise ArgumentError, "Only allowed to perform a single operation per entity, and there is already a operation registered in this batch for the key: #{key}." if entity_keys.include? key
|
125
|
+
entity_keys.push key
|
126
|
+
end
|
127
127
|
|
128
128
|
public
|
129
129
|
def parse_response(response)
|
130
130
|
responses = BatchResponse.parse response.body
|
131
131
|
new_responses = []
|
132
132
|
|
133
|
-
(0..responses.length-1).each { |index|
|
133
|
+
(0..responses.length - 1).each { |index|
|
134
134
|
operation = operations[index]
|
135
135
|
response = responses[index]
|
136
136
|
|
137
137
|
if response[:status_code].to_i > 299
|
138
138
|
# failed
|
139
|
-
error = Azure::Core::Http::HTTPError.new(ResponseWrapper.new(response.merge(
|
140
|
-
error.description = response[:message] if (error.description ||
|
139
|
+
error = Azure::Core::Http::HTTPError.new(ResponseWrapper.new(response.merge(uri: operation[:uri])))
|
140
|
+
error.description = response[:message] if (error.description || "").strip == ""
|
141
141
|
raise error
|
142
142
|
else
|
143
143
|
# success
|
@@ -150,10 +150,10 @@ module Azure::Storage
|
|
150
150
|
|
151
151
|
new_responses.push entity
|
152
152
|
when :put, :merge
|
153
|
-
|
153
|
+
# etag from headers
|
154
154
|
new_responses.push response[:headers]["etag"]
|
155
155
|
when :delete
|
156
|
-
# true
|
156
|
+
# true
|
157
157
|
new_responses.push nil
|
158
158
|
end
|
159
159
|
end
|
@@ -165,7 +165,7 @@ module Azure::Storage
|
|
165
165
|
public
|
166
166
|
def to_body
|
167
167
|
body = ""
|
168
|
-
body.define_singleton_method(:add_line) do |a| self << (a||nil) + "\n" end
|
168
|
+
body.define_singleton_method(:add_line) do |a| self << (a || nil) + "\n" end
|
169
169
|
|
170
170
|
body.add_line "--#{batch_id}"
|
171
171
|
body.add_line "Content-Type: multipart/mixed; boundary=#{changeset_id}"
|
@@ -203,7 +203,7 @@ module Azure::Storage
|
|
203
203
|
#
|
204
204
|
# * +row_key+ - String. The row key
|
205
205
|
# * +entity_values+ - Hash. A hash of the name/value pairs for the entity.
|
206
|
-
# * +options+ - Hash. Optional parameters.
|
206
|
+
# * +options+ - Hash. Optional parameters.
|
207
207
|
#
|
208
208
|
# ==== Options
|
209
209
|
#
|
@@ -25,16 +25,16 @@ module Azure::Storage
|
|
25
25
|
module Table
|
26
26
|
module BatchResponse
|
27
27
|
def self.parse(data)
|
28
|
-
context = {
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
28
|
+
context = {
|
29
|
+
lines: data.lines.to_a,
|
30
|
+
index: 0,
|
31
|
+
responses: []
|
32
32
|
}
|
33
33
|
|
34
34
|
find(context) { |c| batch_boundary c }
|
35
35
|
find(context) { |c| batch_headers c }
|
36
|
-
|
37
|
-
while(find(context){ |c| changeset_boundary_or_end c } == :boundary)
|
36
|
+
|
37
|
+
while (find(context) { |c| changeset_boundary_or_end c } == :boundary)
|
38
38
|
find(context) { |c| changeset_headers c }
|
39
39
|
find(context) { |c| response c }
|
40
40
|
find(context) { |c| response_headers c }
|
@@ -45,22 +45,22 @@ module Azure::Storage
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def self.find(context, &block)
|
48
|
-
while(context[:index] < context[:lines].length)
|
48
|
+
while (context[:index] < context[:lines].length)
|
49
49
|
result = block.call(context)
|
50
50
|
return result if result
|
51
|
-
context[:index] +=1
|
51
|
+
context[:index] += 1
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
def self.response_body(context)
|
56
56
|
end_of_body = nil
|
57
|
-
end_of_body = changeset_boundary_or_end(context.dup.merge!(
|
57
|
+
end_of_body = changeset_boundary_or_end(context.dup.merge!(index: context[:index] + 1)) if context[:index] < (context[:lines].length - 1)
|
58
58
|
|
59
59
|
if end_of_body
|
60
60
|
context[:responses].last[:body] ||= ""
|
61
61
|
context[:responses].last[:body] << current_line(context)
|
62
62
|
return context[:responses].last[:body]
|
63
|
-
else
|
63
|
+
else
|
64
64
|
context[:responses].last[:body] ||= ""
|
65
65
|
context[:responses].last[:body] << current_line(context)
|
66
66
|
return nil
|
@@ -70,7 +70,7 @@ module Azure::Storage
|
|
70
70
|
def self.response_headers(context)
|
71
71
|
match = /(.*): (.*)/.match(current_line(context))
|
72
72
|
|
73
|
-
if context[:responses].last[:headers]
|
73
|
+
if context[:responses].last[:headers] && (not match)
|
74
74
|
context[:index] += 1
|
75
75
|
return context[:responses].last[:headers]
|
76
76
|
elsif match
|
@@ -85,25 +85,25 @@ module Azure::Storage
|
|
85
85
|
def self.response(context)
|
86
86
|
match = /HTTP\/1.1 (\d*) (.*)/.match(current_line(context))
|
87
87
|
return nil unless match
|
88
|
-
response = {:
|
88
|
+
response = { status_code: match[1], message: match[2] }
|
89
89
|
context[:responses].push response
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
def self.changeset_headers(context)
|
93
|
-
current_line(context).strip ==
|
93
|
+
current_line(context).strip == ""
|
94
94
|
end
|
95
95
|
|
96
96
|
def self.changeset_boundary_or_end(context)
|
97
97
|
match_boundary = /--changesetresponse_(.*)/.match(current_line(context))
|
98
98
|
match_end = /--changesetresponse_(.*)--/.match(current_line(context))
|
99
99
|
|
100
|
-
(match_boundary
|
100
|
+
(match_boundary && (not match_end)) ? :boundary : (match_end ? :end : nil)
|
101
101
|
end
|
102
102
|
|
103
103
|
def self.batch_headers(context)
|
104
104
|
match = /(.*): (.*)/.match(current_line(context))
|
105
105
|
|
106
|
-
if context[:batch_headers]
|
106
|
+
if context[:batch_headers] && (not match)
|
107
107
|
return context[:batch_headers]
|
108
108
|
elsif match
|
109
109
|
context[:batch_headers] ||= {}
|
@@ -118,7 +118,7 @@ module Azure::Storage
|
|
118
118
|
match = /--batchresponse_(.*)/.match(current_line(context))
|
119
119
|
match ? match[1] : nil
|
120
120
|
end
|
121
|
-
|
121
|
+
|
122
122
|
def self.current_line(context)
|
123
123
|
context[:lines][context[:index]]
|
124
124
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#-------------------------------------------------------------------------
|
2
4
|
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
5
|
#
|
@@ -22,7 +24,7 @@
|
|
22
24
|
# THE SOFTWARE.
|
23
25
|
#--------------------------------------------------------------------------
|
24
26
|
|
25
|
-
require
|
27
|
+
require "azure/storage/table/guid"
|
26
28
|
|
27
29
|
require "time"
|
28
30
|
require "date"
|
@@ -75,7 +77,7 @@ module Azure::Storage
|
|
75
77
|
end
|
76
78
|
|
77
79
|
# Public: Serializes EDM value into proper value to be used in query.
|
78
|
-
#
|
80
|
+
#
|
79
81
|
# value - String. The value to serialize.
|
80
82
|
#
|
81
83
|
# Returns the serialized value
|
@@ -96,7 +98,7 @@ module Azure::Storage
|
|
96
98
|
"X'" + value.to_s.unpack("H*").join("") + "'"
|
97
99
|
else
|
98
100
|
# NULL also is treated as EdmType::STRING
|
99
|
-
value.to_s.gsub("'","''");
|
101
|
+
value.to_s.gsub("'", "''");
|
100
102
|
end
|
101
103
|
end
|
102
104
|
end
|
@@ -116,20 +118,20 @@ module Azure::Storage
|
|
116
118
|
when "Edm.Int32", "Edm.Int64"
|
117
119
|
Integer(value)
|
118
120
|
when "Edm.Boolean"
|
119
|
-
value == true || value ==
|
121
|
+
value == true || value == "true" ? true : false
|
120
122
|
when "Edm.Guid"
|
121
123
|
GUID.new(value.to_s)
|
122
124
|
when "Edm.Binary"
|
123
125
|
Base64.decode64(value.to_s).force_encoding("BINARY")
|
124
126
|
else
|
125
|
-
value ==
|
127
|
+
value == "" ? nil : value.to_s
|
126
128
|
end
|
127
129
|
end
|
128
130
|
|
129
131
|
def self.to_edm_time(value)
|
130
132
|
date = value.is_a?(Time) ? value : Time.parse(value)
|
131
|
-
date.utc.strftime(
|
133
|
+
date.utc.strftime("%Y-%m-%dT%H:%M:%S.%6N0Z")
|
132
134
|
end
|
133
135
|
end
|
134
136
|
end
|
135
|
-
end
|
137
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#-------------------------------------------------------------------------
|
2
4
|
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
5
|
#
|
@@ -25,8 +27,7 @@
|
|
25
27
|
module Azure::Storage
|
26
28
|
module Table
|
27
29
|
class Entity
|
28
|
-
|
29
|
-
def initialize
|
30
|
+
def initialize
|
30
31
|
@properties = {}
|
31
32
|
yield self if block_given?
|
32
33
|
end
|
@@ -35,4 +36,4 @@ module Azure::Storage
|
|
35
36
|
attr_accessor :properties
|
36
37
|
end
|
37
38
|
end
|
38
|
-
end
|
39
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#-------------------------------------------------------------------------
|
2
4
|
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
3
5
|
#
|
@@ -30,4 +32,4 @@ module Azure::Storage
|
|
30
32
|
class GUID < SimpleDelegator
|
31
33
|
end
|
32
34
|
end
|
33
|
-
end
|
35
|
+
end
|
@@ -21,13 +21,13 @@
|
|
21
21
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
22
|
# THE SOFTWARE.
|
23
23
|
#--------------------------------------------------------------------------
|
24
|
-
require
|
25
|
-
require
|
24
|
+
require "azure/storage/table/table_service"
|
25
|
+
require "azure/storage/table/edmtype"
|
26
26
|
|
27
27
|
module Azure::Storage
|
28
28
|
module Table
|
29
29
|
class Query
|
30
|
-
def initialize(table="", partition=nil, row=nil, &block)
|
30
|
+
def initialize(table = "", partition = nil, row = nil, &block)
|
31
31
|
@table = table
|
32
32
|
@partition_key = partition
|
33
33
|
@row_key = row
|
@@ -37,7 +37,7 @@ module Azure::Storage
|
|
37
37
|
@table_service = Azure::Storage::Table::TableService.new
|
38
38
|
self.instance_eval(&block) if block_given?
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
attr_reader :table
|
42
42
|
attr_reader :partition_key
|
43
43
|
attr_reader :row_key
|
@@ -75,7 +75,7 @@ module Azure::Storage
|
|
75
75
|
@filters.push(p)
|
76
76
|
self
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
def top(n)
|
80
80
|
@top_n = n
|
81
81
|
self
|
@@ -92,17 +92,15 @@ module Azure::Storage
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def execute
|
95
|
-
@table_service.query_entities(@table,
|
96
|
-
:
|
97
|
-
:
|
98
|
-
:
|
99
|
-
:
|
100
|
-
:
|
101
|
-
|
102
|
-
:
|
103
|
-
|
104
|
-
}
|
105
|
-
})
|
95
|
+
@table_service.query_entities(@table, partition_key: @partition_key,
|
96
|
+
row_key: @row_key,
|
97
|
+
select: @fields.map { |f| f.to_s },
|
98
|
+
filter: _build_filter_string,
|
99
|
+
top: (@top_n ? @top_n.to_i : @top_n),
|
100
|
+
continuation_token: {
|
101
|
+
next_partition_key: @next_partition_key,
|
102
|
+
next_row_key: @next_row_key
|
103
|
+
})
|
106
104
|
end
|
107
105
|
|
108
106
|
def _build_filter_string
|
@@ -111,11 +109,11 @@ module Azure::Storage
|
|
111
109
|
filters.each { |f|
|
112
110
|
clauses.push "#{f[0]} #{f[1]} #{Azure::Storage::Table::EdmType.serialize_query_value(f[2])}"
|
113
111
|
}
|
114
|
-
return nil if clauses.length == 0
|
115
|
-
|
112
|
+
return nil if clauses.length == 0
|
113
|
+
|
116
114
|
result << clauses.join(" and ")
|
117
115
|
result
|
118
116
|
end
|
119
117
|
end
|
120
118
|
end
|
121
|
-
end
|
119
|
+
end
|