X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ab5ded7cdf302ad156c58d47f59ab07e3a14ec69..5756eb031199c2ab015463292e7d24f3357c1852:/sdk/ruby/lib/arvados.rb diff --git a/sdk/ruby/lib/arvados.rb b/sdk/ruby/lib/arvados.rb index 567423ff4f..a89c21b017 100644 --- a/sdk/ruby/lib/arvados.rb +++ b/sdk/ruby/lib/arvados.rb @@ -1,27 +1,21 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + require 'rubygems' -require 'google/api_client' require 'active_support/inflector' require 'json' require 'fileutils' require 'andand' +require 'arvados/google_api_client' + ActiveSupport::Inflector.inflections do |inflect| inflect.irregular 'specimen', 'specimens' inflect.irregular 'human', 'humans' end -module Kernel - def suppress_warnings - original_verbosity = $VERBOSE - $VERBOSE = nil - result = yield - $VERBOSE = original_verbosity - return result - end -end - class Arvados - class TransactionFailedError < StandardError end @@ -105,28 +99,6 @@ class Arvados end end - class Google::APIClient - def discovery_document(api, version) - api = api.to_s - return @discovery_documents["#{api}:#{version}"] ||= - begin - # fetch new API discovery doc if stale - cached_doc = File.expand_path '~/.cache/arvados/discovery_uri.json' - if not File.exist?(cached_doc) or (Time.now - File.mtime(cached_doc)) > 86400 - response = self.execute!(:http_method => :get, - :uri => self.discovery_uri(api, version), - :authenticated => false) - FileUtils.makedirs(File.dirname cached_doc) - File.open(cached_doc, 'w') do |f| - f.puts response.body - end - end - - File.open(cached_doc) { |f| JSON.load f } - end - end - end - def client @client ||= Google::APIClient. new(:host => @arvados_api_host, @@ -210,8 +182,6 @@ class Arvados end def self.api_exec(method, parameters={}) api_method = arvados_api.send(api_models_sym).send(method.name.to_sym) - parameters = parameters. - merge(:api_token => arvados.config['ARVADOS_API_TOKEN']) parameters.each do |k,v| parameters[k] = v.to_json if v.is_a? Array or v.is_a? Hash end @@ -230,14 +200,17 @@ class Arvados execute(:api_method => api_method, :authenticated => false, :parameters => parameters, - :body => body) + :body_object => body, + :headers => { + :authorization => 'OAuth2 '+arvados.config['ARVADOS_API_TOKEN'] + }) resp = JSON.parse result.body, :symbolize_names => true if resp[:errors] raise Arvados::TransactionFailedError.new(resp[:errors]) elsif resp[:uuid] and resp[:etag] self.new(resp) elsif resp[:items].is_a? Array - resp.merge(items: resp[:items].collect do |i| + resp.merge(:items => resp[:items].collect do |i| self.new(i) end) else @@ -282,4 +255,16 @@ class Arvados @attributes = j end end + + protected + + def suppress_warnings + original_verbosity = $VERBOSE + begin + $VERBOSE = nil + yield + ensure + $VERBOSE = original_verbosity + end + end end