azure-storage 0.11.1.preview → 0.11.2.preview

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: 93583b9726a105be0a8a14bfd6ccd9abf3050617
4
- data.tar.gz: ca52bd4560c7c0623bda0549845eb2dd6809c5d9
3
+ metadata.gz: 92ecd94693e7588079b928351edc1b8f8f9befc9
4
+ data.tar.gz: 504fedfb82e16dee909bba757984f8e788faa7b3
5
5
  SHA512:
6
- metadata.gz: 131e208024935b48d19f7a28ec80ba86f50a23894fb37087e11ea382c521986a0e0bcdddb74119b7ebe35ea5b093766bb59c0bd777c4be002a1592080a348238
7
- data.tar.gz: b99f307c7a166babcf00da58d87ed7aefdc171d97cce2ad314ea3ab4846dedb17b7787f2d969d9727b69f4ec124cc785339147bfd8d9670b18d011c8a2da9ab0
6
+ metadata.gz: a9c473917d6af7d6055b7b7ebb0d2f8339dd3cf99cd5e4a205cbc43edc18325c5e3697d6b452622eb60b993066ccc48b4f5d1c501ebb2dd18cc7f0a22ee71f19
7
+ data.tar.gz: 098c8642665754bbf630e83f5fcaf0132a90d15017575e3e3cb305b4e6ab1c2575d5a6c4e2a1c9dc5faa9305a9756f63bf332c6109870176e29cef8c81f4d130
@@ -34,6 +34,7 @@ module Azure::Storage
34
34
 
35
35
  module Blob
36
36
  class BlobService < StorageService
37
+ include Azure::Storage::Core::Utility
37
38
  include Azure::Storage::Blob
38
39
  include Azure::Storage::Blob::Container
39
40
 
@@ -43,24 +44,25 @@ module Azure::Storage
43
44
  super(signer, client_config.storage_account_name, options)
44
45
  @host = client.storage_blob_host
45
46
  end
46
-
47
+
47
48
  def call(method, uri, body=nil, headers={}, options={})
48
49
  # Force the request.body to the content encoding of specified in the header
49
- # (content encoding probably shouldn't be used this way)
50
- if headers && !body.nil?
51
- if headers['Content-Encoding'].nil?
52
- Service::StorageService.with_header headers, 'Content-Encoding', body.encoding.to_s
50
+ if headers && !body.nil? && !(body.encoding.to_s <=> 'ASCII_8BIT')
51
+ if headers['x-ms-blob-content-type'].nil?
52
+ Service::StorageService.with_header headers, 'x-ms-blob-content-type', "text/plain; charset=#{body.encoding.to_s}"
53
53
  else
54
- body.force_encoding(headers['Content-Encoding'])
54
+ charset = parse_charset_from_content_type(headers['x-ms-blob-content-type'])
55
+ body.force_encoding(charset)
55
56
  end
56
57
  end
57
58
 
58
59
  response = super
59
60
 
60
- # Force the response.body to the content encoding of specified in the header.
61
- # content-encoding is echo'd back for the blob and is used to store the encoding of the octet stream
62
- if !response.nil? && !response.body.nil? && response.headers['content-encoding']
63
- response.body.force_encoding(response.headers['content-encoding'])
61
+ # Force the response.body to the content charset of specified in the header.
62
+ # Content-Type is echo'd back for the blob and is used to store the encoding of the octet stream
63
+ if !response.nil? && !response.body.nil? && response.headers['Content-Type']
64
+ charset = parse_charset_from_content_type(response.headers['Content-Type'])
65
+ response.body.force_encoding(charset) if charset && charset.length > 0
64
66
  end
65
67
 
66
68
  response
@@ -99,12 +101,12 @@ module Azure::Storage
99
101
  # * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
100
102
  # in the analytics logs when storage analytics logging is enabled.
101
103
  #
104
+ # See: https://msdn.microsoft.com/en-us/library/azure/dd179352.aspx
105
+ #
102
106
  # NOTE: Metadata requested with the :metadata parameter must have been stored in
103
107
  # accordance with the naming restrictions imposed by the 2009-09-19 version of the Blob
104
108
  # service. Beginning with that version, all metadata names must adhere to the naming
105
- # conventions for C# identifiers.
106
- #
107
- # See: http://msdn.microsoft.com/en-us/library/aa664670(VS.71).aspx
109
+ # conventions for C# identifiers. See: https://msdn.microsoft.com/en-us/library/aa664670(VS.71).aspx
108
110
  #
109
111
  # Any metadata with invalid names which were previously stored, will be returned with the
110
112
  # key "x-ms-invalid-name" in the metadata hash. This may contain multiple values and be an
@@ -115,11 +115,12 @@ module Azure::Storage::Core::Filter
115
115
  # incrementing counter, timestamp, etc). The retry_data object
116
116
  # will be the same instance throughout the lifetime of the request.
117
117
  def should_retry_on_error?(response, retry_data)
118
+ response = response || retry_data[:error].http_response if retry_data[:error] && retry_data[:error].respond_to?('http_response')
118
119
  unless response
119
120
  retry_data[:retryable] = false unless retry_data[:error]
120
121
  return retry_data[:retryable]
121
122
  end
122
-
123
+
123
124
  # If a request sent to the secondary location fails with 404 (Not Found), it is possible
124
125
  # that the resource replication is not finished yet. So, in case of 404 only in the secondary
125
126
  # location, the failure should still be retryable.
@@ -133,7 +134,7 @@ module Azure::Storage::Core::Filter
133
134
  else
134
135
  retry_data[:status_code] = nil
135
136
  end
136
- end
137
+ end
137
138
 
138
139
  # Non-timeout Cases
139
140
  if (retry_data[:status_code] >= 300 && retry_data[:status_code] != 408)
@@ -142,26 +143,26 @@ module Azure::Storage::Core::Filter
142
143
  retry_data[:retryable] = false;
143
144
  return false;
144
145
  end
145
- end
146
-
147
- # When absorb_conditional_errors_on_retry is set (for append blob)
148
- if (retry_data[:request_options] && retry_data[:request_options][:absorb_conditional_errors_on_retry])
149
- if (retry_data[:status_code] == 412)
150
- # When appending block with precondition failure and their was a server error before, we ignore the error.
151
- if (retry_data[:last_server_error])
152
- retry_data[:error] = nil;
146
+
147
+ # When absorb_conditional_errors_on_retry is set (for append blob)
148
+ if (retry_data[:request_options] && retry_data[:request_options][:absorb_conditional_errors_on_retry])
149
+ if (retry_data[:status_code] == 412)
150
+ # When appending block with precondition failure and their was a server error before, we ignore the error.
151
+ if (retry_data[:last_server_error])
152
+ retry_data[:error] = nil;
153
+ retry_data[:retryable] = true;
154
+ else
155
+ retry_data[:retryable] = false;
156
+ end
157
+ elsif (retry_data[:retryable] && retry_data[:status_code] >= 500 && retry_data[:status_code] < 600)
158
+ # Retry on the server error
153
159
  retry_data[:retryable] = true;
154
- else
155
- retry_data[:retryable] = false;
160
+ retry_data[:last_server_error] = true;
156
161
  end
157
- elsif (retry_data[:retryable] && retry_data[:status_code] >= 500 && retry_data[:status_code] < 600)
158
- # Retry on the server error
159
- retry_data[:retryable] = true;
160
- retry_data[:last_server_error] = true;
162
+ elsif (retry_data[:status_code] < 500)
163
+ # No retry on the client error
164
+ retry_data[:retryable] = false;
161
165
  end
162
- elsif (retry_data[:status_code] < 500)
163
- # No retry on the client error
164
- retry_data[:retryable] = false;
165
166
  end
166
167
  end
167
168
 
@@ -107,6 +107,13 @@ module Azure::Storage
107
107
  def initialize_external_logger(logger)
108
108
  Loggerx.initialize_external_logger(logger)
109
109
  end
110
+
111
+ def parse_charset_from_content_type(content_type)
112
+ if (content_type && content_type.length > 0)
113
+ charset = content_type.split(';').delete_if { |attribute| !attribute.lstrip.start_with?('charset=') }.map { |x| x.lstrip }[0]
114
+ charset['charset='.length...charset.length] if charset
115
+ end
116
+ end
110
117
  end
111
118
 
112
119
  # Logger
@@ -28,7 +28,7 @@ module Azure
28
28
  # Fields represent the parts defined in http://semver.org/
29
29
  MAJOR = 0 unless defined? MAJOR
30
30
  MINOR = 11 unless defined? MINOR
31
- UPDATE = 1 unless defined? UPDATE
31
+ UPDATE = 2 unless defined? UPDATE
32
32
  PRE = 'preview' unless defined? PRE
33
33
 
34
34
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azure-storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1.preview
4
+ version: 0.11.2.preview
5
5
  platform: ruby
6
6
  authors:
7
7
  - Microsoft Corporation
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-30 00:00:00.000000000 Z
11
+ date: 2016-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable