ms_rest 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,37 +1,37 @@
1
- # encoding: utf-8
2
- # Copyright (c) Microsoft Corporation. All rights reserved.
3
- # Licensed under the MIT License. See License.txt in the project root for license information.
4
-
5
- module MsRest
6
- #
7
- # Class which represents the data received and deserialized from server.
8
- #
9
- class HttpOperationResponse
10
-
11
- # @param [MsRest::HttpOperationRequest] the HTTP request data.
12
- attr_accessor :request
13
-
14
- # @return [Faraday::Response] the HTTP response object.
15
- attr_accessor :response
16
-
17
- # @return [String] the HTTP response body.
18
- attr_accessor :body
19
-
20
- #
21
- # Creates and initialize new instance of the HttpOperationResponse class.
22
- # @param [MsRest::HttpOperationRequest] request the HTTP request object.
23
- # @param [Faraday::Response] response the HTTP response object.
24
- # @param [String] body the HTTP response body.
25
- def initialize(request, response, body = nil)
26
- @request = request
27
- @response = response
28
- @body = body
29
- end
30
-
31
- def to_json(*a)
32
- res_dict = response ? { body: response.body, headers: response.headers, status: response.status } : nil
33
- {response: res_dict, request: request}.to_json(*a)
34
- end
35
-
36
- end
37
- end
1
+ # encoding: utf-8
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for license information.
4
+
5
+ module MsRest
6
+ #
7
+ # Class which represents the data received and deserialized from server.
8
+ #
9
+ class HttpOperationResponse
10
+
11
+ # @param [MsRest::HttpOperationRequest] the HTTP request data.
12
+ attr_accessor :request
13
+
14
+ # @return [Faraday::Response] the HTTP response object.
15
+ attr_accessor :response
16
+
17
+ # @return [String] the HTTP response body.
18
+ attr_accessor :body
19
+
20
+ #
21
+ # Creates and initialize new instance of the HttpOperationResponse class.
22
+ # @param [MsRest::HttpOperationRequest] request the HTTP request object.
23
+ # @param [Faraday::Response] response the HTTP response object.
24
+ # @param [String] body the HTTP response body.
25
+ def initialize(request, response, body = nil)
26
+ @request = request
27
+ @response = response
28
+ @body = body
29
+ end
30
+
31
+ def to_json(*a)
32
+ res_dict = response ? { body: response.body, headers: response.headers, status: response.status } : nil
33
+ {response: res_dict, request: request}.to_json(*a)
34
+ end
35
+
36
+ end
37
+ end
@@ -1,39 +1,39 @@
1
- # encoding: utf-8
2
- # Copyright (c) Microsoft Corporation. All rights reserved.
3
- # Licensed under the MIT License. See License.txt in the project root for license information.
4
-
5
- module MsRest
6
- # Mixin to provide simple serialization / deserialization in AutoRest generated model classes
7
- module JSONable
8
- include MsRest::Serialization
9
-
10
- #
11
- # Serialize the object to JSON
12
- # @param options [Hash] hash map contains options to convert to json.
13
- # @return [String] JSON serialized version of the object
14
- #
15
- def to_json(options = nil)
16
- mapper = (options.nil? || !options.key?(:mapper))? self.class.mapper: options[:mapper]
17
- object = (options.nil? || !options.key?(:object))? self: options[:object]
18
- serialize(mapper, object)
19
- end
20
-
21
- #
22
- # Deserialize the object from JSON
23
- # @param json [String] JSON string representation of the object
24
- # @return [JSONable] object built from json input
25
- #
26
- def from_json(json, mapper = nil)
27
- mapper = self.class.mapper if mapper.nil?
28
- deserialize(mapper, json)
29
- end
30
-
31
- #
32
- # String representation of the object
33
- # @return [String]
34
- #
35
- def to_s
36
- "#{super} #{to_json.to_s}"
37
- end
38
- end
39
- end
1
+ # encoding: utf-8
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for license information.
4
+
5
+ module MsRest
6
+ # Mixin to provide simple serialization / deserialization in AutoRest generated model classes
7
+ module JSONable
8
+ include MsRest::Serialization
9
+
10
+ #
11
+ # Serialize the object to JSON
12
+ # @param options [Hash] hash map contains options to convert to json.
13
+ # @return [String] JSON serialized version of the object
14
+ #
15
+ def to_json(options = nil)
16
+ mapper = (options.nil? || !options.key?(:mapper))? self.class.mapper: options[:mapper]
17
+ object = (options.nil? || !options.key?(:object))? self: options[:object]
18
+ serialize(mapper, object)
19
+ end
20
+
21
+ #
22
+ # Deserialize the object from JSON
23
+ # @param json [String] JSON string representation of the object
24
+ # @return [JSONable] object built from json input
25
+ #
26
+ def from_json(json, mapper = nil)
27
+ mapper = self.class.mapper if mapper.nil?
28
+ deserialize(mapper, json)
29
+ end
30
+
31
+ #
32
+ # String representation of the object
33
+ # @return [String]
34
+ #
35
+ def to_s
36
+ "#{super} #{to_json.to_s}"
37
+ end
38
+ end
39
+ end
@@ -1,11 +1,11 @@
1
- # encoding: utf-8
2
- # Copyright (c) Microsoft Corporation. All rights reserved.
3
- # Licensed under the MIT License. See License.txt in the project root for license information.
4
-
5
- module MsRest
6
- #
7
- # Class which represents an general exception for REST client.
8
- #
9
- class RestError < StandardError
10
- end
11
- end
1
+ # encoding: utf-8
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for license information.
4
+
5
+ module MsRest
6
+ #
7
+ # Class which represents an general exception for REST client.
8
+ #
9
+ class RestError < StandardError
10
+ end
11
+ end
@@ -1,44 +1,44 @@
1
- # encoding: utf-8
2
- # Copyright (c) Microsoft Corporation. All rights reserved.
3
- # Licensed under the MIT License. See License.txt in the project root for license information.
4
-
5
- module MsRest
6
- #
7
- # Class which handles retry policy.
8
- #
9
- class RetryPolicyMiddleware < Faraday::Response::Middleware
10
- #
11
- # Initializes a new instance of the RetryPolicyMiddleware class.
12
- #
13
- def initialize(app, options = {})
14
- @times = options[:times] || 5
15
- @delay = options[:delay] || 0.01
16
-
17
- super(app)
18
- end
19
-
20
- #
21
- # Performs request and response processing.
22
- #
23
- def call(request_env)
24
- request_body = request_env[:body]
25
-
26
- begin
27
- request_env[:body] = request_body
28
-
29
- @app.call(request_env).on_complete do |response_env|
30
- status_code = response_env.status
31
-
32
- if @times > 0 && (status_code == 408 || (status_code >= 500 && status_code != 501 && status_code != 505))
33
- sleep @delay
34
- fail 'faraday_retry'
35
- end
36
- end
37
- rescue Exception => e
38
- raise e if e.message != 'faraday_retry'
39
- @times = @times - 1
40
- retry
41
- end
42
- end
43
- end
44
- end
1
+ # encoding: utf-8
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for license information.
4
+
5
+ module MsRest
6
+ #
7
+ # Class which handles retry policy.
8
+ #
9
+ class RetryPolicyMiddleware < Faraday::Response::Middleware
10
+ #
11
+ # Initializes a new instance of the RetryPolicyMiddleware class.
12
+ #
13
+ def initialize(app, options = {})
14
+ @times = options[:times] || 5
15
+ @delay = options[:delay] || 0.01
16
+
17
+ super(app)
18
+ end
19
+
20
+ #
21
+ # Performs request and response processing.
22
+ #
23
+ def call(request_env)
24
+ request_body = request_env[:body]
25
+
26
+ begin
27
+ request_env[:body] = request_body
28
+
29
+ @app.call(request_env).on_complete do |response_env|
30
+ status_code = response_env.status
31
+
32
+ if @times > 0 && (status_code == 408 || (status_code >= 500 && status_code != 501 && status_code != 505))
33
+ sleep @delay
34
+ fail 'faraday_retry'
35
+ end
36
+ end
37
+ rescue Exception => e
38
+ raise e if e.message != 'faraday_retry'
39
+ @times = @times - 1
40
+ retry
41
+ end
42
+ end
43
+ end
44
+ end
File without changes
@@ -1,115 +1,115 @@
1
- # encoding: utf-8
2
- # Copyright (c) Microsoft Corporation. All rights reserved.
3
- # Licensed under the MIT License. See License.txt in the project root for license information.
4
-
5
- module MsRest
6
- #
7
- # Class which represents a point of access to the REST API.
8
- #
9
- class ServiceClient
10
-
11
- # @return [MsRest::ServiceClientCredentials] the credentials object.
12
- attr_accessor :credentials
13
-
14
- # @return [Hash{String=>String}] default middlewares configuration for requests.
15
- attr_accessor :middlewares
16
-
17
- # @return [Hash{String=>String}] default request headers for requests.
18
- attr_accessor :request_headers
19
-
20
- # @return [Array] strings to be appended to the user agent in the request
21
- attr_accessor :user_agent_extended
22
-
23
- #
24
- # Creates and initialize new instance of the ServiceClient class.
25
- #
26
- # @param credentials [MsRest::ServiceClientCredentials] credentials to authorize
27
- # HTTP requests made by the service client.
28
- # @param options additional parameters for the HTTP request (not implemented yet).
29
- #
30
- def initialize(credentials = nil, options = nil)
31
- @credentials = credentials
32
- @request_headers = {}
33
- @middlewares = {middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]]}
34
- @user_agent_extended = []
35
- @user_agent_extended.push("ms_rest/#{MsRest::VERSION}")
36
- end
37
-
38
- #
39
- # @param base_url [String] the base url for the request.
40
- # @param method [Symbol] with any of the following values :get, :put, :post, :patch, :delete.
41
- # @param path [String] the path, relative to {base_url}.
42
- # @param options [Hash{String=>String}] specifying any request options like :credentials, :body, etc.
43
- # @return [Concurrent::Promise] Promise object which holds the HTTP response.
44
- #
45
- def make_request_async(base_url, method, path, options = {})
46
- options = @middlewares.merge(options)
47
- options[:credentials] = options[:credentials] || @credentials
48
- options[:user_agent_extended] = @user_agent_extended
49
- request = MsRest::HttpOperationRequest.new(base_url, path, method, options)
50
- promise = request.run_promise do |req|
51
- options[:credentials].sign_request(req) unless options[:credentials].nil?
52
- end
53
- promise = promise.then do |http_response|
54
- response_content = http_response.body.to_s.empty? ? nil : http_response.body
55
- # Create response
56
- create_response(request, http_response, response_content)
57
- end
58
- promise.execute
59
- end
60
-
61
- #
62
- # Add additional information into User-Agent header.
63
- # @param [String] additional_user_agent_information additional product information for user agent string.
64
- #
65
- # Example:
66
- # recommended format is Product/[version]
67
- # please refer https://github.com/Azure/azure-sdk-for-ruby/issues/517 for more information.
68
- #
69
- # add_user_agent_information('fog-azure-rm/0.2.0')
70
- #
71
- def add_user_agent_information(additional_user_agent_information)
72
- @user_agent_extended.push(additional_user_agent_information)
73
- end
74
-
75
- private
76
- #
77
- # Retrieves a new instance of the HttpOperationResponse class.
78
- # @param [MsRest::HttpOperationRequest] request the HTTP request object.
79
- # @param [Faraday::Response] response the HTTP response object.
80
- # @param [String] body the HTTP response body.
81
- # @return [MsRest::HttpOperationResponse] the operation response.
82
- #
83
- def create_response(request, http_response, body = nil)
84
- HttpOperationResponse.new(request, http_response, body)
85
- end
86
- end
87
-
88
- #
89
- # Hash of SSL options for Faraday connection. Default is nil.
90
- #
91
- @@ssl_options = {}
92
-
93
- #
94
- # Stores the SSL options to be used for Faraday connections.
95
- # ==== Examples
96
- # MsRest.use_ssl_cert # => Uses bundled certificate for all the connections
97
- # MsRest.use_ssl_cert({:ca_file => "path_to_ca_file"}) # => Uses supplied certificate for all the connections
98
- #
99
- # @param ssl_options [Hash] Hash of SSL options for Faraday connection. It defaults to the bundled certificate.
100
- #
101
- def self.use_ssl_cert(ssl_options = nil)
102
- if ssl_options.nil?
103
- @@ssl_options = {:ca_file => File.expand_path(File.join(File.dirname(__FILE__), '../..', 'ca-cert.pem')) }
104
- else
105
- @@ssl_options = ssl_options
106
- end
107
- end
108
-
109
- #
110
- # @return [Hash] Hash of SSL options to be used for Faraday connection.
111
- #
112
- def self.ssl_options
113
- @@ssl_options
114
- end
115
- end
1
+ # encoding: utf-8
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for license information.
4
+
5
+ module MsRest
6
+ #
7
+ # Class which represents a point of access to the REST API.
8
+ #
9
+ class ServiceClient
10
+
11
+ # @return [MsRest::ServiceClientCredentials] the credentials object.
12
+ attr_accessor :credentials
13
+
14
+ # @return [Hash{String=>String}] default middlewares configuration for requests.
15
+ attr_accessor :middlewares
16
+
17
+ # @return [Hash{String=>String}] default request headers for requests.
18
+ attr_accessor :request_headers
19
+
20
+ # @return [Array] strings to be appended to the user agent in the request
21
+ attr_accessor :user_agent_extended
22
+
23
+ #
24
+ # Creates and initialize new instance of the ServiceClient class.
25
+ #
26
+ # @param credentials [MsRest::ServiceClientCredentials] credentials to authorize
27
+ # HTTP requests made by the service client.
28
+ # @param options additional parameters for the HTTP request (not implemented yet).
29
+ #
30
+ def initialize(credentials = nil, options = nil)
31
+ @credentials = credentials
32
+ @request_headers = {}
33
+ @middlewares = {middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]]}
34
+ @user_agent_extended = []
35
+ @user_agent_extended.push("ms_rest/#{MsRest::VERSION}")
36
+ end
37
+
38
+ #
39
+ # @param base_url [String] the base url for the request.
40
+ # @param method [Symbol] with any of the following values :get, :put, :post, :patch, :delete.
41
+ # @param path [String] the path, relative to {base_url}.
42
+ # @param options [Hash{String=>String}] specifying any request options like :credentials, :body, etc.
43
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
44
+ #
45
+ def make_request_async(base_url, method, path, options = {})
46
+ options = @middlewares.merge(options)
47
+ options[:credentials] = options[:credentials] || @credentials
48
+ options[:user_agent_extended] = @user_agent_extended
49
+ request = MsRest::HttpOperationRequest.new(base_url, path, method, options)
50
+ promise = request.run_promise do |req|
51
+ options[:credentials].sign_request(req) unless options[:credentials].nil?
52
+ end
53
+ promise = promise.then do |http_response|
54
+ response_content = http_response.body.to_s.empty? ? nil : http_response.body
55
+ # Create response
56
+ create_response(request, http_response, response_content)
57
+ end
58
+ promise.execute
59
+ end
60
+
61
+ #
62
+ # Add additional information into User-Agent header.
63
+ # @param [String] additional_user_agent_information additional product information for user agent string.
64
+ #
65
+ # Example:
66
+ # recommended format is Product/[version]
67
+ # please refer https://github.com/Azure/azure-sdk-for-ruby/issues/517 for more information.
68
+ #
69
+ # add_user_agent_information('fog-azure-rm/0.2.0')
70
+ #
71
+ def add_user_agent_information(additional_user_agent_information)
72
+ @user_agent_extended.push(additional_user_agent_information)
73
+ end
74
+
75
+ private
76
+ #
77
+ # Retrieves a new instance of the HttpOperationResponse class.
78
+ # @param [MsRest::HttpOperationRequest] request the HTTP request object.
79
+ # @param [Faraday::Response] response the HTTP response object.
80
+ # @param [String] body the HTTP response body.
81
+ # @return [MsRest::HttpOperationResponse] the operation response.
82
+ #
83
+ def create_response(request, http_response, body = nil)
84
+ HttpOperationResponse.new(request, http_response, body)
85
+ end
86
+ end
87
+
88
+ #
89
+ # Hash of SSL options for Faraday connection. Default is nil.
90
+ #
91
+ @@ssl_options = {}
92
+
93
+ #
94
+ # Stores the SSL options to be used for Faraday connections.
95
+ # ==== Examples
96
+ # MsRest.use_ssl_cert # => Uses bundled certificate for all the connections
97
+ # MsRest.use_ssl_cert({:ca_file => "path_to_ca_file"}) # => Uses supplied certificate for all the connections
98
+ #
99
+ # @param ssl_options [Hash] Hash of SSL options for Faraday connection. It defaults to the bundled certificate.
100
+ #
101
+ def self.use_ssl_cert(ssl_options = nil)
102
+ if ssl_options.nil?
103
+ @@ssl_options = {:ca_file => File.expand_path(File.join(File.dirname(__FILE__), '../..', 'ca-cert.pem')) }
104
+ else
105
+ @@ssl_options = ssl_options
106
+ end
107
+ end
108
+
109
+ #
110
+ # @return [Hash] Hash of SSL options to be used for Faraday connection.
111
+ #
112
+ def self.ssl_options
113
+ @@ssl_options
114
+ end
115
+ end