class WolfCore::ApplicationService
def call
def call process rescue => e if e.instance_of?(WolfCore::ServiceException) return Result.failure( error: e.error.to_h.merge({ backtrace: e.backtrace }) ) end # Honeybadger.notify(e) return Result.failure(error: { message: e.message, backtrace: e.backtrace }) end
def get_salesforce_access_token
def get_salesforce_access_token result = WolfCore::SalesforceOauthService.new.call raise_failed_result(result) result.data.access_token end
def get_salesforce_foreign_object(salesforce_access_token:, record_id:)
def get_salesforce_foreign_object(salesforce_access_token:, record_id:) foreign_object = salesforce_http_get( salesforce_access_token: salesforce_access_token, query: { calltype: 'getRecord', RecordId: record_id } ) log_object foreign_object, title: 'foreign object is' foreign_object end
def get_wolf_token
def get_wolf_token response = http_post( query: { tenant: ENV['TENANT'] }, url: "#{ENV['WOLF_PLATFORM_URL']}/api/v1/sign_in", body: { email: ENV['WOLF_ADMIN_EMAIL'], password: ENV['WOLF_ADMIN_PASSWORD'] } ) validate_http_response( response: response, message: 'Failed to get wolf token' ) response_body = JSON.parse(response.body) wolf_token = response_body.dig('user', 'authentication_token') puts "wolf token is #{wolf_token}" wolf_token end
def process
def process raise NotImplementedError end
def raise_failed_result(result)
def raise_failed_result(result) return if result.success? raise_service_error(result.error.to_h) end
def remove_non_permitted_parameters(params, allowed_params)
def remove_non_permitted_parameters(params, allowed_params) permitted = params.slice(*allowed_params) if permitted.blank? raise_service_error({ message: "There are not permitted parameters"}) end return permitted end
def salesforce_http_get(salesforce_access_token:, query: nil)
def salesforce_http_get(salesforce_access_token:, query: nil) response = http_get( url: ENV['SALESFORCE_URL'], headers: { 'Authorization' => "Bearer #{salesforce_access_token}" }, query: query ) validate_salesforce_response(response) JSON.parse(response.parsed_response) end
def validate_presence(object, message)
def validate_presence(object, message) return if object.present? raise_service_error({ message: message }) end
def validate_salesforce_response(response)
def validate_salesforce_response(response) return if response.code == 200 message = JSON.parse(response.body).first['message'] raise_service_error({ message: message, response: response }) end