Improvements and bugfixes refs #2242.
[arvados.git] / apps / workbench / app / models / arvados_api_client.rb
index 35d75267636040c4d0cb6f51cea590abe0f87fd0..84735d9774c60f902896d3a15f5ae6850fb977c7 100644 (file)
@@ -32,6 +32,9 @@ class ArvadosApiClient
     resources_kind = class_kind(resources_kind).pluralize if resources_kind.is_a? Class
     url = "#{self.arvados_v1_base}/#{resources_kind}#{action}"
 
+    # Clean up /arvados/v1/../../discovery/v1 to /discovery/v1
+    url.sub! '/arvados/v1/../../', '/'
+
     query = {"api_token" => api_token}
     if !data.nil?
       data.each do |k,v|
@@ -77,7 +80,7 @@ class ArvadosApiClient
     if msg.status_code != 200
       errors = resp[:errors]
       errors = errors.join("\n\n") if errors.is_a? Array
-      raise "API error #{msg.status_code}:\n\n#{errors}\n"
+      raise "#{errors} [API: #{msg.status_code}]"
     end
     if resp[:_profile]
       Rails.logger.info "API client: " \
@@ -138,6 +141,10 @@ class ArvadosApiClient
     @arvados_schema ||= api 'schema', ''
   end
 
+  def discovery
+    @discovery ||= api '../../discovery/v1/apis/arvados/v1/rest', ''
+  end
+
   def kind_class(kind)
     kind.match(/^arvados\#(.+?)(_list|List)?$/)[1].pluralize.classify.constantize rescue nil
   end