Sha256: 127236a6656a0c9ebc2d49fabc5fcfc33b05c0ee591f860367d3b54aadae8fb7

Contents?: true

Size: 1.49 KB

Versions: 13

Compression:

Stored size: 1.49 KB

Contents

module Onering
  module CLI
    class Call < Plugin
      def self.configure(global={})
        @api = Onering::CLI.connect(global)

        @opts = ::Trollop::options do
          banner <<-EOS
Call an arbitrary Onering API endpoint and return the output

Usage:
    onering call [options] [endpoint]

Examples:
    # Returns the API status page at path /api/
    $ onering call /

    # Returns details about the authenticated user
    $ onering call users/current

    # Delete the device called '0bf29c'
    $ onering call devices/0bf29c -m delete

Options:
EOS
          opt :method, "The HTTP method to use when performing the request", :default => 'get', :short => "-m", :type => :string
          opt :query,  "A query string attribute to add to the request in the form of NAME=VALUE", :short => '-a', :type => :string, :multi => true
          opt :header, "A 'Name: Value' header to add to the request", :short => '-H', :type => :string, :multi => true
        end
      end

      def self.run(args)
        data = STDIN.read() unless STDIN.tty?

        headers = {
          'Content-Type' => 'application/json'
        }.merge(Hash[@opts[:header].collect{|i|
            i.split(/[\:=]\s*/,2)
        }])

        rv = @api.request(@opts[:method], args.first, {
          :body    => data,
          :headers => headers,
          :query   => Hash[@opts[:query].collect{|i|
            i.split('=',2)
          }]
        })

        return (rv.parsed_response rescue rv.response.body)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
onering-agent-0.4.4 lib/onering/cli/call.rb
onering-agent-0.4.3 lib/onering/cli/call.rb
onering-client-0.4.3 lib/onering/cli/call.rb
onering-client-0.4.2 lib/onering/cli/call.rb
onering-client-0.4.1 lib/onering/cli/call.rb
onering-client-0.4.0 lib/onering/cli/call.rb
onering-client-0.3.4 lib/onering/cli/call.rb
onering-client-0.3.3 lib/onering/cli/call.rb
onering-client-0.3.2 lib/onering/cli/call.rb
onering-client-0.3.1 lib/onering/cli/call.rb
onering-client-0.3.0 lib/onering/cli/call.rb
onering-client-0.2.4 lib/onering/cli/call.rb
onering-client-0.2.3 lib/onering/cli/call.rb