azure-storage-common 1.1.0 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/azure/core/auth/authorizer.rb +36 -0
- data/lib/azure/core/auth/shared_key.rb +125 -0
- data/lib/azure/core/auth/shared_key_lite.rb +48 -0
- data/lib/azure/core/auth/signer.rb +51 -0
- data/lib/azure/core/default.rb +23 -0
- data/lib/azure/core/error.rb +21 -0
- data/lib/azure/core/filtered_service.rb +45 -0
- data/lib/azure/core/http/debug_filter.rb +36 -0
- data/lib/azure/core/http/http_error.rb +135 -0
- data/lib/azure/core/http/http_filter.rb +53 -0
- data/lib/azure/core/http/http_request.rb +195 -0
- data/lib/azure/core/http/http_response.rb +102 -0
- data/lib/azure/core/http/retry_policy.rb +84 -0
- data/lib/azure/core/http/signer_filter.rb +33 -0
- data/lib/azure/core/service.rb +46 -0
- data/lib/azure/core/signed_service.rb +45 -0
- data/lib/azure/core/utility.rb +244 -0
- data/lib/azure/core/version.rb +33 -0
- data/lib/azure/core.rb +47 -0
- data/lib/azure/http_response_helper.rb +38 -0
- data/lib/azure/storage/common/autoload.rb +62 -61
- data/lib/azure/storage/common/client.rb +162 -162
- data/lib/azure/storage/common/client_options.rb +363 -363
- data/lib/azure/storage/common/client_options_error.rb +41 -41
- data/lib/azure/storage/common/configurable.rb +212 -212
- data/lib/azure/storage/common/core/auth/anonymous_signer.rb +43 -43
- data/lib/azure/storage/common/core/auth/shared_access_signature.rb +30 -30
- data/lib/azure/storage/common/core/auth/shared_access_signature_generator.rb +399 -352
- data/lib/azure/storage/common/core/auth/shared_access_signature_signer.rb +57 -57
- data/lib/azure/storage/common/core/auth/shared_key.rb +60 -60
- data/lib/azure/storage/common/core/auth/token_signer.rb +43 -43
- data/lib/azure/storage/common/core/autoload.rb +53 -53
- data/lib/azure/storage/common/core/error.rb +43 -43
- data/lib/azure/storage/common/core/filter/exponential_retry_filter.rb +64 -64
- data/lib/azure/storage/common/core/filter/linear_retry_filter.rb +55 -55
- data/lib/azure/storage/common/core/filter/retry_filter.rb +300 -300
- data/lib/azure/storage/common/core/http_client.rb +82 -69
- data/lib/azure/storage/common/core/sr.rb +85 -85
- data/lib/azure/storage/common/core/token_credential.rb +64 -64
- data/lib/azure/storage/common/core/utility.rb +261 -255
- data/lib/azure/storage/common/core.rb +35 -35
- data/lib/azure/storage/common/default.rb +868 -868
- data/lib/azure/storage/common/service/access_policy.rb +37 -37
- data/lib/azure/storage/common/service/cors.rb +38 -38
- data/lib/azure/storage/common/service/cors_rule.rb +48 -48
- data/lib/azure/storage/common/service/enumeration_results.rb +32 -32
- data/lib/azure/storage/common/service/geo_replication.rb +40 -40
- data/lib/azure/storage/common/service/logging.rb +47 -47
- data/lib/azure/storage/common/service/metrics.rb +45 -45
- data/lib/azure/storage/common/service/retention_policy.rb +37 -37
- data/lib/azure/storage/common/service/serialization.rb +335 -335
- data/lib/azure/storage/common/service/signed_identifier.rb +40 -40
- data/lib/azure/storage/common/service/storage_service.rb +322 -322
- data/lib/azure/storage/common/service/storage_service_properties.rb +48 -48
- data/lib/azure/storage/common/service/storage_service_stats.rb +39 -39
- data/lib/azure/storage/common/service/user_delegation_key.rb +50 -0
- data/lib/azure/storage/common/version.rb +49 -49
- data/lib/azure/storage/common.rb +26 -26
- metadata +85 -17
@@ -1,57 +1,57 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#-------------------------------------------------------------------------
|
4
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
-
#
|
6
|
-
# The MIT License(MIT)
|
7
|
-
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
# of this software and associated documentation files(the "Software"), to deal
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
13
|
-
# furnished to do so, subject to the following conditions :
|
14
|
-
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
16
|
-
# all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
# THE SOFTWARE.
|
25
|
-
#--------------------------------------------------------------------------
|
26
|
-
|
27
|
-
require "azure/core/auth/signer"
|
28
|
-
|
29
|
-
module Azure::Storage::Common::Core
|
30
|
-
module Auth
|
31
|
-
class SharedAccessSignatureSigner < Azure::Core::Auth::Signer
|
32
|
-
attr :account_name, :sas_token
|
33
|
-
attr_accessor :api_ver
|
34
|
-
|
35
|
-
# Public: Initialize the Signer with a SharedAccessSignature
|
36
|
-
#
|
37
|
-
# @param api_ver [String] The api version of the service.
|
38
|
-
# @param account_name [String] The account name. Defaults to the one in the global configuration.
|
39
|
-
# @param sas_token [String] The sas token to be used for signing
|
40
|
-
def initialize(api_ver, account_name = "", sas_token = "")
|
41
|
-
if account_name.empty? || sas_token.empty?
|
42
|
-
client = Azure::Storage::Common::Client.create_from_env
|
43
|
-
account_name = client.storage_account_name if account_name.empty?
|
44
|
-
sas_token = client.storage_sas_token if sas_token.empty?
|
45
|
-
end
|
46
|
-
@api_ver = api_ver
|
47
|
-
@account_name = account_name
|
48
|
-
@sas_token = sas_token
|
49
|
-
end
|
50
|
-
|
51
|
-
def sign_request(req)
|
52
|
-
req.uri = URI.parse(req.uri.to_s + (req.uri.query.nil? ? "?" : "&") + sas_token.sub(/^\?/, "") + "&api-version=" + @api_ver)
|
53
|
-
req
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#-------------------------------------------------------------------------
|
4
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
+
#
|
6
|
+
# The MIT License(MIT)
|
7
|
+
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files(the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions :
|
14
|
+
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
|
27
|
+
require "azure/core/auth/signer"
|
28
|
+
|
29
|
+
module Azure::Storage::Common::Core
|
30
|
+
module Auth
|
31
|
+
class SharedAccessSignatureSigner < Azure::Core::Auth::Signer
|
32
|
+
attr :account_name, :sas_token
|
33
|
+
attr_accessor :api_ver
|
34
|
+
|
35
|
+
# Public: Initialize the Signer with a SharedAccessSignature
|
36
|
+
#
|
37
|
+
# @param api_ver [String] The api version of the service.
|
38
|
+
# @param account_name [String] The account name. Defaults to the one in the global configuration.
|
39
|
+
# @param sas_token [String] The sas token to be used for signing
|
40
|
+
def initialize(api_ver, account_name = "", sas_token = "")
|
41
|
+
if account_name.empty? || sas_token.empty?
|
42
|
+
client = Azure::Storage::Common::Client.create_from_env
|
43
|
+
account_name = client.storage_account_name if account_name.empty?
|
44
|
+
sas_token = client.storage_sas_token if sas_token.empty?
|
45
|
+
end
|
46
|
+
@api_ver = api_ver
|
47
|
+
@account_name = account_name
|
48
|
+
@sas_token = sas_token
|
49
|
+
end
|
50
|
+
|
51
|
+
def sign_request(req)
|
52
|
+
req.uri = URI.parse(req.uri.to_s + (req.uri.query.nil? ? "?" : "&") + sas_token.sub(/^\?/, "") + "&api-version=" + @api_ver)
|
53
|
+
req
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,60 +1,60 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#-------------------------------------------------------------------------
|
4
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
-
#
|
6
|
-
# The MIT License(MIT)
|
7
|
-
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
# of this software and associated documentation files(the "Software"), to deal
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
13
|
-
# furnished to do so, subject to the following conditions :
|
14
|
-
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
16
|
-
# all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
# THE SOFTWARE.
|
25
|
-
#--------------------------------------------------------------------------
|
26
|
-
require "cgi"
|
27
|
-
require "azure/core/auth/signer"
|
28
|
-
require "azure/core/auth/shared_key"
|
29
|
-
|
30
|
-
module Azure::Storage::Common::Core
|
31
|
-
module Auth
|
32
|
-
class SharedKey < Azure::Core::Auth::SharedKey
|
33
|
-
# Generate the string to sign.
|
34
|
-
#
|
35
|
-
# @param method [Symbol] HTTP request method.
|
36
|
-
# @param uri [URI] URI of the request we're signing.
|
37
|
-
# @param headers [Hash] HTTP request headers.
|
38
|
-
#
|
39
|
-
# @return [String]
|
40
|
-
def signable_string(method, uri, headers)
|
41
|
-
[
|
42
|
-
method.to_s.upcase,
|
43
|
-
headers.fetch("Content-Encoding", ""),
|
44
|
-
headers.fetch("Content-Language", ""),
|
45
|
-
headers.fetch("Content-Length", "").sub(/^0+/, ""), # from 2015-02-21, if Content-Length == 0, it won't be signed
|
46
|
-
headers.fetch("Content-MD5", ""),
|
47
|
-
headers.fetch("Content-Type", ""),
|
48
|
-
headers.fetch("Date", ""),
|
49
|
-
headers.fetch("If-Modified-Since", ""),
|
50
|
-
headers.fetch("If-Match", ""),
|
51
|
-
headers.fetch("If-None-Match", ""),
|
52
|
-
headers.fetch("If-Unmodified-Since", ""),
|
53
|
-
headers.fetch("Range", ""),
|
54
|
-
canonicalized_headers(headers),
|
55
|
-
canonicalized_resource(uri)
|
56
|
-
].join("\n")
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#-------------------------------------------------------------------------
|
4
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
+
#
|
6
|
+
# The MIT License(MIT)
|
7
|
+
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files(the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions :
|
14
|
+
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
require "cgi"
|
27
|
+
require "azure/core/auth/signer"
|
28
|
+
require "azure/core/auth/shared_key"
|
29
|
+
|
30
|
+
module Azure::Storage::Common::Core
|
31
|
+
module Auth
|
32
|
+
class SharedKey < Azure::Core::Auth::SharedKey
|
33
|
+
# Generate the string to sign.
|
34
|
+
#
|
35
|
+
# @param method [Symbol] HTTP request method.
|
36
|
+
# @param uri [URI] URI of the request we're signing.
|
37
|
+
# @param headers [Hash] HTTP request headers.
|
38
|
+
#
|
39
|
+
# @return [String]
|
40
|
+
def signable_string(method, uri, headers)
|
41
|
+
[
|
42
|
+
method.to_s.upcase,
|
43
|
+
headers.fetch("Content-Encoding", ""),
|
44
|
+
headers.fetch("Content-Language", ""),
|
45
|
+
headers.fetch("Content-Length", "").sub(/^0+/, ""), # from 2015-02-21, if Content-Length == 0, it won't be signed
|
46
|
+
headers.fetch("Content-MD5", ""),
|
47
|
+
headers.fetch("Content-Type", ""),
|
48
|
+
headers.fetch("Date", ""),
|
49
|
+
headers.fetch("If-Modified-Since", ""),
|
50
|
+
headers.fetch("If-Match", ""),
|
51
|
+
headers.fetch("If-None-Match", ""),
|
52
|
+
headers.fetch("If-Unmodified-Since", ""),
|
53
|
+
headers.fetch("Range", ""),
|
54
|
+
canonicalized_headers(headers),
|
55
|
+
canonicalized_resource(uri)
|
56
|
+
].join("\n")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,43 +1,43 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#-------------------------------------------------------------------------
|
4
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
-
#
|
6
|
-
# The MIT License(MIT)
|
7
|
-
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
# of this software and associated documentation files(the "Software"), to deal
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
13
|
-
# furnished to do so, subject to the following conditions :
|
14
|
-
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
16
|
-
# all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
# THE SOFTWARE.
|
25
|
-
#--------------------------------------------------------------------------
|
26
|
-
|
27
|
-
module Azure::Storage::Common::Core
|
28
|
-
module Auth
|
29
|
-
class TokenSigner < Azure::Core::Auth::Signer
|
30
|
-
# Public: Initialize the Token Signer
|
31
|
-
def initialize(token_credential)
|
32
|
-
@credential = token_credential
|
33
|
-
# Use mock key to initialize super class
|
34
|
-
super(Base64.strict_encode64("accesstoken"))
|
35
|
-
end
|
36
|
-
|
37
|
-
def sign_request(req)
|
38
|
-
req.headers['Authorization'] = "Bearer #{@credential.token}"
|
39
|
-
req
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#-------------------------------------------------------------------------
|
4
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
+
#
|
6
|
+
# The MIT License(MIT)
|
7
|
+
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files(the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions :
|
14
|
+
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
|
27
|
+
module Azure::Storage::Common::Core
|
28
|
+
module Auth
|
29
|
+
class TokenSigner < Azure::Core::Auth::Signer
|
30
|
+
# Public: Initialize the Token Signer
|
31
|
+
def initialize(token_credential)
|
32
|
+
@credential = token_credential
|
33
|
+
# Use mock key to initialize super class
|
34
|
+
super(Base64.strict_encode64("accesstoken"))
|
35
|
+
end
|
36
|
+
|
37
|
+
def sign_request(req)
|
38
|
+
req.headers['Authorization'] = "Bearer #{@credential.token}"
|
39
|
+
req
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,53 +1,53 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#-------------------------------------------------------------------------
|
4
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
-
#
|
6
|
-
# The MIT License(MIT)
|
7
|
-
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
# of this software and associated documentation files(the "Software"), to deal
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
13
|
-
# furnished to do so, subject to the following conditions :
|
14
|
-
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
16
|
-
# all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
# THE SOFTWARE.
|
25
|
-
#--------------------------------------------------------------------------
|
26
|
-
|
27
|
-
module Azure
|
28
|
-
module Storage
|
29
|
-
module Common
|
30
|
-
module Core
|
31
|
-
autoload :HttpClient, "azure/storage/common/core/http_client"
|
32
|
-
autoload :Utility, "azure/storage/common/core/utility"
|
33
|
-
autoload :Logger, "azure/storage/common/core/utility"
|
34
|
-
autoload :Error, "azure/storage/common/core/error"
|
35
|
-
autoload :TokenCredential, "azure/storage/common/core/token_credential.rb"
|
36
|
-
|
37
|
-
module Auth
|
38
|
-
autoload :SharedKey, "azure/storage/common/core/auth/shared_key.rb"
|
39
|
-
autoload :SharedAccessSignature, "azure/storage/common/core/auth/shared_access_signature_generator.rb"
|
40
|
-
autoload :SharedAccessSignatureSigner, "azure/storage/common/core/auth/shared_access_signature_signer.rb"
|
41
|
-
autoload :AnonymousSigner, "azure/storage/common/core/auth/anonymous_signer.rb"
|
42
|
-
autoload :TokenSigner, "azure/storage/common/core/auth/token_signer.rb"
|
43
|
-
end
|
44
|
-
|
45
|
-
module Filter
|
46
|
-
autoload :RetryPolicyFilter, "azure/storage/common/core/filter/retry_filter"
|
47
|
-
autoload :LinearRetryPolicyFilter, "azure/storage/common/core/filter/linear_retry_filter"
|
48
|
-
autoload :ExponentialRetryPolicyFilter, "azure/storage/common/core/filter/exponential_retry_filter"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#-------------------------------------------------------------------------
|
4
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
+
#
|
6
|
+
# The MIT License(MIT)
|
7
|
+
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files(the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions :
|
14
|
+
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
|
27
|
+
module Azure
|
28
|
+
module Storage
|
29
|
+
module Common
|
30
|
+
module Core
|
31
|
+
autoload :HttpClient, "azure/storage/common/core/http_client"
|
32
|
+
autoload :Utility, "azure/storage/common/core/utility"
|
33
|
+
autoload :Logger, "azure/storage/common/core/utility"
|
34
|
+
autoload :Error, "azure/storage/common/core/error"
|
35
|
+
autoload :TokenCredential, "azure/storage/common/core/token_credential.rb"
|
36
|
+
|
37
|
+
module Auth
|
38
|
+
autoload :SharedKey, "azure/storage/common/core/auth/shared_key.rb"
|
39
|
+
autoload :SharedAccessSignature, "azure/storage/common/core/auth/shared_access_signature_generator.rb"
|
40
|
+
autoload :SharedAccessSignatureSigner, "azure/storage/common/core/auth/shared_access_signature_signer.rb"
|
41
|
+
autoload :AnonymousSigner, "azure/storage/common/core/auth/anonymous_signer.rb"
|
42
|
+
autoload :TokenSigner, "azure/storage/common/core/auth/token_signer.rb"
|
43
|
+
end
|
44
|
+
|
45
|
+
module Filter
|
46
|
+
autoload :RetryPolicyFilter, "azure/storage/common/core/filter/retry_filter"
|
47
|
+
autoload :LinearRetryPolicyFilter, "azure/storage/common/core/filter/linear_retry_filter"
|
48
|
+
autoload :ExponentialRetryPolicyFilter, "azure/storage/common/core/filter/exponential_retry_filter"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -1,43 +1,43 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#-------------------------------------------------------------------------
|
4
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
-
#
|
6
|
-
# The MIT License(MIT)
|
7
|
-
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
# of this software and associated documentation files(the "Software"), to deal
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
13
|
-
# furnished to do so, subject to the following conditions :
|
14
|
-
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
16
|
-
# all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
# THE SOFTWARE.
|
25
|
-
#--------------------------------------------------------------------------
|
26
|
-
require "azure/core"
|
27
|
-
|
28
|
-
module Azure::Storage::Common::Core
|
29
|
-
# Superclass for errors generated from this library, so people can
|
30
|
-
# just rescue this for generic error handling
|
31
|
-
class StorageError < StandardError
|
32
|
-
# attr_reader :description
|
33
|
-
# attr_reader :status_code
|
34
|
-
# attr_reader :type
|
35
|
-
|
36
|
-
# def initialize(description, type, status)
|
37
|
-
# @type = type
|
38
|
-
# @status_code = status
|
39
|
-
# @description = description
|
40
|
-
# super("#{type} (#{status_code}): #{description}")
|
41
|
-
# end
|
42
|
-
end
|
43
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#-------------------------------------------------------------------------
|
4
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
+
#
|
6
|
+
# The MIT License(MIT)
|
7
|
+
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files(the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions :
|
14
|
+
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
require "azure/core"
|
27
|
+
|
28
|
+
module Azure::Storage::Common::Core
|
29
|
+
# Superclass for errors generated from this library, so people can
|
30
|
+
# just rescue this for generic error handling
|
31
|
+
class StorageError < StandardError
|
32
|
+
# attr_reader :description
|
33
|
+
# attr_reader :status_code
|
34
|
+
# attr_reader :type
|
35
|
+
|
36
|
+
# def initialize(description, type, status)
|
37
|
+
# @type = type
|
38
|
+
# @status_code = status
|
39
|
+
# @description = description
|
40
|
+
# super("#{type} (#{status_code}): #{description}")
|
41
|
+
# end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,64 +1,64 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#-------------------------------------------------------------------------
|
4
|
-
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
-
#
|
6
|
-
# The MIT License(MIT)
|
7
|
-
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
-
# of this software and associated documentation files(the "Software"), to deal
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
13
|
-
# furnished to do so, subject to the following conditions :
|
14
|
-
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
16
|
-
# all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
-
# THE SOFTWARE.
|
25
|
-
#--------------------------------------------------------------------------
|
26
|
-
require "azure/core"
|
27
|
-
require "azure/core/http/retry_policy"
|
28
|
-
|
29
|
-
module Azure::Storage::Common::Core::Filter
|
30
|
-
class ExponentialRetryPolicyFilter < RetryPolicyFilter
|
31
|
-
def initialize(retry_count = nil, min_retry_interval = nil, max_retry_interval = nil)
|
32
|
-
@retry_count = retry_count || ExponentialRetryPolicyFilter::DEFAULT_RETRY_COUNT
|
33
|
-
@min_retry_interval = min_retry_interval || ExponentialRetryPolicyFilter::DEFAULT_MIN_RETRY_INTERVAL
|
34
|
-
@max_retry_interval = max_retry_interval || ExponentialRetryPolicyFilter::DEFAULT_MAX_RETRY_INTERVAL
|
35
|
-
|
36
|
-
super @retry_count, @min_retry_interval
|
37
|
-
end
|
38
|
-
|
39
|
-
attr_reader :min_retry_interval,
|
40
|
-
:max_retry_interval
|
41
|
-
|
42
|
-
DEFAULT_RETRY_COUNT = 3
|
43
|
-
DEFAULT_MIN_RETRY_INTERVAL = 10
|
44
|
-
DEFAULT_MAX_RETRY_INTERVAL = 90
|
45
|
-
|
46
|
-
# Overrides the base class implementation of call to determine
|
47
|
-
# how the HTTP request should continue retrying
|
48
|
-
#
|
49
|
-
# retry_data - Hash. Stores stateful retry data
|
50
|
-
#
|
51
|
-
# The retry_data is a Hash which can be used to store
|
52
|
-
# stateful data about the request execution context (such as an
|
53
|
-
# incrementing counter, timestamp, etc). The retry_data object
|
54
|
-
# will be the same instance throughout the lifetime of the request
|
55
|
-
def apply_retry_policy(retry_data)
|
56
|
-
# Adjust retry count
|
57
|
-
retry_data[:count] = retry_data[:count] === nil ? 1 : retry_data[:count] + 1
|
58
|
-
|
59
|
-
# Adjust retry interval
|
60
|
-
increment_delta = (@max_retry_interval - @min_retry_interval).fdiv(2**(@retry_count - 1)) * (2**(retry_data[:count] - 1));
|
61
|
-
retry_data[:interval] = retry_data[:interval] === nil ? @min_retry_interval : [@min_retry_interval + increment_delta, @max_retry_interval].min;
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#-------------------------------------------------------------------------
|
4
|
+
# # Copyright (c) Microsoft and contributors. All rights reserved.
|
5
|
+
#
|
6
|
+
# The MIT License(MIT)
|
7
|
+
|
8
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
# of this software and associated documentation files(the "Software"), to deal
|
10
|
+
# in the Software without restriction, including without limitation the rights
|
11
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
12
|
+
# copies of the Software, and to permit persons to whom the Software is
|
13
|
+
# furnished to do so, subject to the following conditions :
|
14
|
+
|
15
|
+
# The above copyright notice and this permission notice shall be included in
|
16
|
+
# all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
21
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
# THE SOFTWARE.
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
require "azure/core"
|
27
|
+
require "azure/core/http/retry_policy"
|
28
|
+
|
29
|
+
module Azure::Storage::Common::Core::Filter
|
30
|
+
class ExponentialRetryPolicyFilter < RetryPolicyFilter
|
31
|
+
def initialize(retry_count = nil, min_retry_interval = nil, max_retry_interval = nil)
|
32
|
+
@retry_count = retry_count || ExponentialRetryPolicyFilter::DEFAULT_RETRY_COUNT
|
33
|
+
@min_retry_interval = min_retry_interval || ExponentialRetryPolicyFilter::DEFAULT_MIN_RETRY_INTERVAL
|
34
|
+
@max_retry_interval = max_retry_interval || ExponentialRetryPolicyFilter::DEFAULT_MAX_RETRY_INTERVAL
|
35
|
+
|
36
|
+
super @retry_count, @min_retry_interval
|
37
|
+
end
|
38
|
+
|
39
|
+
attr_reader :min_retry_interval,
|
40
|
+
:max_retry_interval
|
41
|
+
|
42
|
+
DEFAULT_RETRY_COUNT = 3
|
43
|
+
DEFAULT_MIN_RETRY_INTERVAL = 10
|
44
|
+
DEFAULT_MAX_RETRY_INTERVAL = 90
|
45
|
+
|
46
|
+
# Overrides the base class implementation of call to determine
|
47
|
+
# how the HTTP request should continue retrying
|
48
|
+
#
|
49
|
+
# retry_data - Hash. Stores stateful retry data
|
50
|
+
#
|
51
|
+
# The retry_data is a Hash which can be used to store
|
52
|
+
# stateful data about the request execution context (such as an
|
53
|
+
# incrementing counter, timestamp, etc). The retry_data object
|
54
|
+
# will be the same instance throughout the lifetime of the request
|
55
|
+
def apply_retry_policy(retry_data)
|
56
|
+
# Adjust retry count
|
57
|
+
retry_data[:count] = retry_data[:count] === nil ? 1 : retry_data[:count] + 1
|
58
|
+
|
59
|
+
# Adjust retry interval
|
60
|
+
increment_delta = (@max_retry_interval - @min_retry_interval).fdiv(2**(@retry_count - 1)) * (2**(retry_data[:count] - 1));
|
61
|
+
retry_data[:interval] = retry_data[:interval] === nil ? @min_retry_interval : [@min_retry_interval + increment_delta, @max_retry_interval].min;
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|