diff --git a/app/controllers/bio_eddie_assets_controller.rb b/app/controllers/bio_eddie_assets_controller.rb index 1c49ab5eb..bd321d8e5 100644 --- a/app/controllers/bio_eddie_assets_controller.rb +++ b/app/controllers/bio_eddie_assets_controller.rb @@ -59,7 +59,7 @@ class BioEddieAssetsController < ApplicationController return render_404 unless Rails.application.config.x.biomolecule_toolkit_base_url uri = URI.parse(Rails.application.config.x.biomolecule_toolkit_base_url) - uri.path = request.original_fullpath.remove('/biomolecule_toolkit') + uri.path = File.join(uri.path, request.original_fullpath.remove('/biomolecule_toolkit')) Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| api_request = "Net::HTTP::#{request.request_method.capitalize}".constantize.new(uri) diff --git a/app/services/biomolecule_toolkit_client.rb b/app/services/biomolecule_toolkit_client.rb index 9d859bb82..deb43e03a 100644 --- a/app/services/biomolecule_toolkit_client.rb +++ b/app/services/biomolecule_toolkit_client.rb @@ -7,50 +7,54 @@ class BiomoleculeToolkitClient class BiomoleculeToolkitClientException < StandardError; end def initialize - uri = URI.parse(Rails.application.config.x.biomolecule_toolkit_base_url) - @http = Net::HTTP.new(uri.host, uri.port) - @http.use_ssl = (uri.scheme == 'https') + @uri = URI.parse(Rails.application.config.x.biomolecule_toolkit_base_url) + @http = Net::HTTP.new(@uri.host, @uri.port) + @http.use_ssl = (@uri.scheme == 'https') end def healthy? - request = Net::HTTP::Get.new('/api/health') + request = Net::HTTP::Get.new(build_request_path('/api/health')) process_request(request)&.dig('status') == 'UP' end def list_attributes - request = Net::HTTP::Get.new(MACROMOLECULES_ATTRIBUTES_PATH) + request = Net::HTTP::Get.new(build_request_path(MACROMOLECULES_ATTRIBUTES_PATH)) process_request(request) end def list - request = Net::HTTP::Get.new(MACROMOLECULES_PATH) + request = Net::HTTP::Get.new(build_request_path(MACROMOLECULES_PATH)) process_request(request) end def create(params:) - request = Net::HTTP::Post.new(MACROMOLECULES_PATH) + request = Net::HTTP::Post.new(build_request_path(MACROMOLECULES_PATH)) request.body = params process_request(request) end def get(cid:) - request = Net::HTTP::Get.new("#{MACROMOLECULES_PATH}/#{CGI.escape(cid)}") + request = Net::HTTP::Get.new(build_request_path("#{MACROMOLECULES_PATH}/#{CGI.escape(cid)}")) process_request(request) end def update(cid:, params:) - request = Net::HTTP::Put.new("#{MACROMOLECULES_PATH}/#{CGI.escape(cid)}") + request = Net::HTTP::Put.new(build_request_path("#{MACROMOLECULES_PATH}/#{CGI.escape(cid)}")) request.body = params process_request(request) end def delete - request = Net::HTTP::Delete.new("#{MACROMOLECULES_PATH}/#{CGI.escape(cid)}") + request = Net::HTTP::Delete.new(build_request_path("#{MACROMOLECULES_PATH}/#{CGI.escape(cid)}")) process_request(request) end private + def build_request_path(sub_path) + File.join(@uri.path, sub_path) + end + def process_request(request) if Rails.application.config.x.biomolecule_toolkit_api_key request['x-api-key'] = Rails.application.config.x.biomolecule_toolkit_api_key