Fix BMT base URL path in requests [SCI-6010]

This commit is contained in:
Oleksii Kriuchykhin 2021-09-07 16:28:14 +02:00
parent 3cab5751e7
commit 7041cc19af
2 changed files with 15 additions and 11 deletions

View file

@ -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)

View file

@ -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