class Realogy::DataSync
Constants
- ACTIVE_API_ENDPOINTS
API endpoints by type
- DELTA_API_ENDPOINTS
- DETAILS_API_ENDPOINTS
Public Class Methods
client()
click to toggle source
# File lib/realogy/app/models/data_sync.rb, line 10 def self.client return @@instance end
Private Instance Methods
auth_token()
click to toggle source
# File lib/realogy/app/models/data_sync.rb, line 113 def auth_token oauth2_client_credentials_token( ENV["REALOGY_CLIENT_ID"], ENV["REALOGY_CLIENT_SECRET"], ENV["REALOGY_TOKEN_URL"], ENV["REALOGY_SCOPE"] ) end
oauth2_client_credentials_token(client_id, client_secret, token_url, scope)
click to toggle source
# File lib/realogy/app/models/data_sync.rb, line 131 def oauth2_client_credentials_token(client_id, client_secret, token_url, scope) @token = OAuth2::AccessToken.read_token_from_file(".oauth-access-token.json") expiry = @token.try(:expires_at).present? ? DateTime.strptime(@token.expires_at.to_s, '%s') : 1.day.ago if expiry > DateTime.now.utc return @token.token else @token = oauth2_client_credentials_token_object(client_id, client_secret, token_url, scope) @token.save_token_to_file(".oauth-access-token.json") return @token.token end end
oauth2_client_credentials_token_object(client_id, client_secret, token_url, scope)
click to toggle source
# File lib/realogy/app/models/data_sync.rb, line 122 def oauth2_client_credentials_token_object(client_id, client_secret, token_url, scope) client = OAuth2::Client.new( client_id, client_secret, token_url: token_url ) return client.client_credentials.get_token(scope: scope) end
perform_api_call(endpoint, params)
click to toggle source
# File lib/realogy/app/models/data_sync.rb, line 99 def perform_api_call(endpoint, params) query = params.present? ? URI.encode_www_form(params) : "" uri = uri_for_endpoint(endpoint) uri.query && uri.query.length > 0 ? uri.query += '&' + query : uri.query = query request = Net::HTTP::Get.new(uri.request_uri) request['Ocp-Apim-Subscription-Key'] = ENV["REALOGY_SUBSCRIPTION_KEY"] request['Authorization'] = "Bearer #{auth_token}" response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| http.max_retries = 10 http.request(request) end return JSON(response.body) rescue nil end
perform_simple_call(url)
click to toggle source
# File lib/realogy/app/models/data_sync.rb, line 87 def perform_simple_call(url) uri = URI(url) request = Net::HTTP::Get.new(uri) request['Ocp-Apim-Subscription-Key'] = ENV["REALOGY_SUBSCRIPTION_KEY"] request['Authorization'] = "Bearer #{auth_token}" response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| http.max_retries = 10 http.request(request) end return JSON(response.body) end
uri_for_endpoint(endpoint)
click to toggle source
Utility
# File lib/realogy/app/models/data_sync.rb, line 83 def uri_for_endpoint endpoint return URI([ENV["REALOGY_API_BASE_URL"], endpoint].join("/")) end