Use discovery document to build infix->kind map instead of using a
[arvados.git] / apps / workbench / app / models / arvados_api_client.rb
index c9cd6c2e51daf3fbb343e116dda61b16e659bd7a..b2d774cac493be43a1f27a2226f657c0b5f6099e 100644 (file)
@@ -19,6 +19,9 @@ class ArvadosApiClient
         @@api_client = HTTPClient.new
         if Rails.configuration.arvados_insecure_https
           @@api_client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
+        else
+          # Use system CA certificates
+          @@api_client.ssl_config.add_trust_ca('/etc/ssl/certs')
         end
       end
     end
@@ -74,7 +77,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: " \
@@ -135,6 +138,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