Attempting to fix some Windows issues and update deprecated library calls.
[arvados.git] / bin / google-api
index 0af0f6b408c4d9cd1040e771aaf84ebb14e5d996..e8f3957666e639082a9cc515fd0a7773f514bd78 100755 (executable)
@@ -108,8 +108,8 @@ HTML
             options[:api] = s
           end
           opts.on(
-              "--service-version <id>", String,
-              "Select service version") do |id|
+              "--api-version <id>", String,
+              "Select api version") do |id|
             options[:version] = id
           end
           opts.on(
@@ -165,7 +165,7 @@ HTML
             "\nAvailable commands:\n" +
             "    oauth-1-login   Log a user into an API with OAuth 1.0a\n" +
             "    oauth-2-login   Log a user into an API with OAuth 2.0 d10\n" +
-            "    list            List the methods available for a service\n" +
+            "    list            List the methods available for an API\n" +
             "    execute         Execute a method on the API\n" +
             "    irb             Start an interactive client session"
           )
@@ -238,17 +238,27 @@ HTML
         end
 
         if options[:discovery_uri]
-          client.discovery_uri = options[:discovery_uri]
+          if options[:api] && options[:version]
+            client.register_discovery_uri(
+              options[:api], options[:version], options[:discovery_uri]
+            )
+          else
+            STDERR.puts(
+              'Cannot register a discovery URI without ' +
+              'specifying an API and version.'
+            )
+            exit(1)
+          end
         end
 
         return client
       end
 
-      def api_version(api, version)
+      def api_version(api_name, version)
         v = version
         if !version
-          if client.preferred_version(api)
-            v = client.preferred_version(api).version
+          if client.preferred_version(api_name)
+            v = client.preferred_version(api_name).version
           else
             v = 'v1'
           end
@@ -284,13 +294,12 @@ HTML
           exit(0)
         else
           $verifier = nil
-          # TODO(bobaman): Cross-platform?
-          logger = WEBrick::Log.new('/dev/null')
           server = WEBrick::HTTPServer.new(
             :Port => OAUTH_SERVER_PORT,
-            :Logger => logger,
-            :AccessLog => logger
+            :Logger => WEBrick::Log.new,
+            :AccessLog => WEBrick::Log.new
           )
+          server.logger.level = 0
           trap("INT") { server.shutdown }
 
           server.mount("/", OAuthVerifierServlet)
@@ -379,7 +388,7 @@ HTML
           )
 
           # Launch browser
-          Launchy::Browser.run(oauth_client.authorization_uri.to_s)
+          Launchy.open(oauth_client.authorization_uri.to_s)
 
           server.start
           oauth_client.code = $verifier
@@ -399,18 +408,28 @@ HTML
       end
 
       def list
-        api = options[:api]
-        unless api
-          STDERR.puts('No service name supplied.')
+        api_name = options[:api]
+        unless api_name
+          STDERR.puts('No API name supplied.')
           exit(1)
         end
         client = Google::APIClient.new(:authorization => nil)
         if options[:discovery_uri]
-          client.discovery_uri = options[:discovery_uri]
+          if options[:api] && options[:version]
+            client.register_discovery_uri(
+              options[:api], options[:version], options[:discovery_uri]
+            )
+          else
+            STDERR.puts(
+              'Cannot register a discovery URI without ' +
+              'specifying an API and version.'
+            )
+            exit(1)
+          end
         end
-        version = api_version(api, options[:version])
-        service = client.discovered_api(api, version)
-        rpcnames = service.to_h.keys
+        version = api_version(api_name, options[:version])
+        api = client.discovered_api(api_name, version)
+        rpcnames = api.to_h.keys
         puts rpcnames.sort.join("\n")
         exit(0)
       end
@@ -447,7 +466,7 @@ HTML
           method.upcase!
           request = [method, uri.to_str, headers, [request_body]]
           request = client.generate_authenticated_request(:request => request)
-          response = client.transmit_request(request)
+          response = client.transmit(request)
           status, headers, body = response
           puts body
           exit(0)
@@ -457,14 +476,14 @@ HTML
             STDERR.puts('No rpcname supplied.')
             exit(1)
           end
-          api = options[:api] || self.rpcname[/^([^\.]+)\./, 1]
-          version = api_version(api, options[:version])
-          service = client.discovered_api(api, version)
-          method = service.to_h[self.rpcname]
+          api_name = options[:api] || self.rpcname[/^([^\.]+)\./, 1]
+          version = api_version(api_name, options[:version])
+          api = client.discovered_api(api_name, version)
+          method = api.to_h[self.rpcname]
           if !method
             STDERR.puts(
               "Method #{self.rpcname} does not exist for " +
-              "#{api}-#{version}."
+              "#{api_name}-#{version}."
             )
             exit(1)
           end
@@ -477,10 +496,13 @@ HTML
             parameters['xoauth_requestor_id'] = options[:requestor_id]
           end
           begin
-            response = client.execute(
-              method, parameters, request_body, headers
+            result = client.execute(
+              :api_method => method,
+              :parameters => parameters,
+              :merged_body => request_body,
+              :headers => headers
             )
-            status, headers, body = response
+            status, headers, body = result.response
             puts body
             exit(0)
           rescue ArgumentError => e