lib/soaspec/exchange_handlers/rest_accessors.rb in soaspec-0.0.84 vs lib/soaspec/exchange_handlers/rest_accessors.rb in soaspec-0.0.85
- old
+ new
@@ -1,84 +1,84 @@
-module Soaspec
- # Accessors specific to REST handler
- module RestAccessors
-
- # Defines method 'base_url_value' containing base URL used in REST requests
- # @param [String] url Base Url to use in REST requests. Suburl is appended to this
- def base_url(url)
- define_method('base_url_value') do
- url
- end
- end
-
- # Will create access_token method based on passed parameters
- def oauth2(params)# client_id: nil, client_secret: nil, token_url: nil, username: nil, password: nil, security_token: nil)
- define_method('oauth_response') do
- params[:username] = api_username || ERB.new(params[:username]).result(binding) if params[:username]
- params[:security_token] = ERB.new(params[:security_token]).result(binding) if params[:security_token]
- params[:token_url] = ERB.new(params[:token_url]).result(binding) if params[:token_url]
- params[:password] = ERB.new(params[:password]).result(binding) if params[:password]
- payload = if params[:password] && params[:username]
- {
- grant_type: 'password',
- client_id: params[:client_id],
- client_secret: params[:client_secret],
- username: params[:username],
- password: params[:security_token] ? (params[:password] + params[:security_token]) : params[:password],
- multipart: true
- }
- else
- {
- grant_type: 'client_credentials',
- client_id: params[:client_id],
- client_secret: params[:client_secret]
- }
- end
- retry_count = 0
- begin
- Soaspec::SpecLogger.add_to 'request_params: ' + payload.to_s
- response = RestClient.post(params[:token_url], payload, cache_control: 'no_cache', verify_ssl: false)
- rescue RestClient::Exception => e
- Soaspec::SpecLogger.add_to("oauth_error: #{e.message}")
- Soaspec::SpecLogger.add_to("oauth_error: #{e.response}")
- retry_count += 1
- retry if retry_count < 3
- raise e
- end
- Soaspec::SpecLogger.add_to("response_headers: #{response.headers}")
- Soaspec::SpecLogger.add_to("response_body: #{response.body}")
- JSON.parse(response)
- end
-
- define_method('access_token') do
- oauth_response['access_token']
- end
- define_method('instance_url') do
- oauth_response['instance_url']
- end
- end
-
- # Pass path to YAML file containing OAuth2 parameters
- # @param [String] path_to_filename Will have Soaspec.credentials_folder appended to it if set
- def oauth2_file(path_to_filename)
- full_path = Soaspec.credentials_folder ? File.join(Soaspec.credentials_folder, path_to_filename + '.yml') : path_to_filename + '.yml'
- file_hash = YAML.load_file(full_path)
- raise 'File at ' + full_path + ' is not a hash ' unless file_hash.is_a? Hash
- oauth_hash = file_hash.transform_keys_to_symbols
- oauth2 **oauth_hash
- end
-
- # @param [Hash] headers Hash of REST headers used in RestClient
- def headers(headers)
- define_method('rest_client_headers') do
- headers
- end
- end
-
- # Convert each key from snake_case to PascalCase
- def pascal_keys(set)
- define_method('pascal_keys?') do
- set
- end
- end
- end
+module Soaspec
+ # Accessors specific to REST handler
+ module RestAccessors
+
+ # Defines method 'base_url_value' containing base URL used in REST requests
+ # @param [String] url Base Url to use in REST requests. Suburl is appended to this
+ def base_url(url)
+ define_method('base_url_value') do
+ url
+ end
+ end
+
+ # Will create access_token method based on passed parameters
+ def oauth2(params)# client_id: nil, client_secret: nil, token_url: nil, username: nil, password: nil, security_token: nil)
+ define_method('oauth_response') do
+ params[:username] = api_username || ERB.new(params[:username]).result(binding) if params[:username]
+ params[:security_token] = ERB.new(params[:security_token]).result(binding) if params[:security_token]
+ params[:token_url] = ERB.new(params[:token_url]).result(binding) if params[:token_url]
+ params[:password] = ERB.new(params[:password]).result(binding) if params[:password]
+ payload = if params[:password] && params[:username]
+ {
+ grant_type: 'password',
+ client_id: params[:client_id],
+ client_secret: params[:client_secret],
+ username: params[:username],
+ password: params[:security_token] ? (params[:password] + params[:security_token]) : params[:password],
+ multipart: true
+ }
+ else
+ {
+ grant_type: 'client_credentials',
+ client_id: params[:client_id],
+ client_secret: params[:client_secret]
+ }
+ end
+ retry_count = 0
+ begin
+ Soaspec::SpecLogger.add_to 'request_params: ' + payload.to_s
+ response = RestClient.post(params[:token_url], payload, cache_control: 'no_cache', verify_ssl: false)
+ rescue RestClient::Exception => e
+ Soaspec::SpecLogger.add_to("oauth_error: #{e.message}")
+ Soaspec::SpecLogger.add_to("oauth_error: #{e.response}")
+ retry_count += 1
+ retry if retry_count < 3
+ raise e
+ end
+ Soaspec::SpecLogger.add_to("response_headers: #{response.headers}")
+ Soaspec::SpecLogger.add_to("response_body: #{response.body}")
+ JSON.parse(response)
+ end
+
+ define_method('access_token') do
+ oauth_response['access_token']
+ end
+ define_method('instance_url') do
+ oauth_response['instance_url']
+ end
+ end
+
+ # Pass path to YAML file containing OAuth2 parameters
+ # @param [String] path_to_filename Will have Soaspec.credentials_folder appended to it if set
+ def oauth2_file(path_to_filename)
+ full_path = Soaspec.credentials_folder ? File.join(Soaspec.credentials_folder, path_to_filename + '.yml') : path_to_filename + '.yml'
+ file_hash = YAML.load_file(full_path)
+ raise 'File at ' + full_path + ' is not a hash ' unless file_hash.is_a? Hash
+ oauth_hash = file_hash.transform_keys_to_symbols
+ oauth2 **oauth_hash
+ end
+
+ # @param [Hash] headers Hash of REST headers used in RestClient
+ def headers(headers)
+ define_method('rest_client_headers') do
+ headers
+ end
+ end
+
+ # Convert each key from snake_case to PascalCase
+ def pascal_keys(set)
+ define_method('pascal_keys?') do
+ set
+ end
+ end
+ end
end
\ No newline at end of file