class OAuth::CLI::BaseCommand

Attributes

options[R]

Public Class Methods

new(stdout, stdin, stderr, arguments) click to toggle source
# File lib/oauth/cli/base_command.rb, line 3
def initialize(stdout, stdin, stderr, arguments)
  @stdout = stdout
  @stdin = stdin
  @stderr = stderr

  @options = {}
  option_parser.parse!(arguments)
end

Public Instance Methods

required_options() click to toggle source
# File lib/oauth/cli/base_command.rb, line 22
def required_options
  []
end
run() click to toggle source
# File lib/oauth/cli/base_command.rb, line 12
def run
  missing = required_options - options.keys
  if missing.empty?
    _run
  else
    show_missing(missing)
    puts option_parser.help
  end
end

Protected Instance Methods

_option_parser_authorization(opts) click to toggle source
# File lib/oauth/cli/base_command.rb, line 186
def _option_parser_authorization(opts)
  opts.separator("\n  options for authorization")

  opts.on("--access-token-url URL", "Specifies the access token URL.") do |v|
    options[:access_token_url] = v
  end

  opts.on("--authorize-url URL", "Specifies the authorization URL.") do |v|
    options[:authorize_url] = v
  end

  opts.on("--callback-url URL", "Specifies a callback URL.") do |v|
    options[:oauth_callback] = v
  end

  opts.on("--request-token-url URL", "Specifies the request token URL.") do |v|
    options[:request_token_url] = v
  end

  opts.on("--scope SCOPE", "Specifies the scope (Google-specific).") do |v|
    options[:scope] = v
  end
end
_option_parser_common(opts) click to toggle source
# File lib/oauth/cli/base_command.rb, line 99
def _option_parser_common(opts)
  ## Common Options

  opts.on("-B", "--body", "Use the request body for OAuth parameters.") do
    options[:scheme] = :body
  end

  opts.on("--consumer-key KEY", "Specifies the consumer key to use.") do |v|
    options[:oauth_consumer_key] = v
  end

  opts.on("--consumer-secret SECRET", "Specifies the consumer secret to use.") do |v|
    options[:oauth_consumer_secret] = v
  end

  opts.on("-H", "--header", "Use the 'Authorization' header for OAuth parameters (default).") do
    options[:scheme] = :header
  end

  opts.on("-Q", "--query-string", "Use the query string for OAuth parameters.") do
    options[:scheme] = :query_string
  end

  opts.on("-O", "--options FILE", "Read options from a file") do |v|
    arguments = open(v).readlines.map { |l| l.chomp.split(" ") }.flatten
    options2 = parse_options(arguments)
    options.merge!(options2)
  end
end
_option_parser_defaults() click to toggle source
# File lib/oauth/cli/base_command.rb, line 88
def _option_parser_defaults
  options[:oauth_nonce] = OAuth::Helper.generate_key
  options[:oauth_signature_method] = "HMAC-SHA1"
  options[:oauth_timestamp] = OAuth::Helper.generate_timestamp
  options[:oauth_version] = "1.0"
  options[:method] = :post
  options[:params] = []
  options[:scheme] = :header
  options[:version] = "1.0"
end
_option_parser_sign_and_query(opts) click to toggle source
# File lib/oauth/cli/base_command.rb, line 129
def _option_parser_sign_and_query(opts)
  opts.separator("\n  options for signing and querying")

  opts.on("--method METHOD", "Specifies the method (e.g. GET) to use when signing.") do |v|
    options[:method] = v
  end

  opts.on("--nonce NONCE", "Specifies the nonce to use.") do |v|
    options[:oauth_nonce] = v
  end

  opts.on("--parameters PARAMS", "Specifies the parameters to use when signing.") do |v|
    options[:params] << v
  end

  opts.on("--signature-method METHOD", "Specifies the signature method to use; defaults to HMAC-SHA1.") do |v|
    options[:oauth_signature_method] = v
  end

  opts.on("--token TOKEN", "Specifies the token to use.") do |v|
    options[:oauth_token] = v
  end

  opts.on("--secret SECRET", "Specifies the token secret to use.") do |v|
    options[:oauth_token_secret] = v
  end

  opts.on("--timestamp TIMESTAMP", "Specifies the timestamp to use.") do |v|
    options[:oauth_timestamp] = v
  end

  opts.on("--realm REALM", "Specifies the realm to use.") do |v|
    options[:realm] = v
  end

  opts.on("--uri URI", "Specifies the URI to use when signing.") do |v|
    options[:uri] = v
  end

  opts.on("--version [VERSION]", "Specifies the OAuth version to use.") do |v|
    options[:oauth_version] = v
  end

  opts.on("--no-version", "Omit oauth_version.") do
    options[:oauth_version] = nil
  end

  opts.on("--xmpp", "Generate XMPP stanzas.") do
    options[:xmpp] = true
    options[:method] ||= "iq"
  end

  opts.on("-v", "--verbose", "Be verbose.") do
    options[:verbose] = true
  end
end
alert(string = nil) click to toggle source
# File lib/oauth/cli/base_command.rb, line 47
def alert(string = nil)
  @stderr.puts(string)
end
option_parser() click to toggle source
# File lib/oauth/cli/base_command.rb, line 77
def option_parser
  @option_parser ||= OptionParser.new do |opts|
    opts.banner = "Usage: oauth <command> [ARGS]"

    _option_parser_defaults
    _option_parser_common(opts)
    _option_parser_sign_and_query(opts)
    _option_parser_authorization(opts)
  end
end
parameters() click to toggle source
# File lib/oauth/cli/base_command.rb, line 51
def parameters
  @parameters ||= begin
    escaped_pairs = options[:params].collect do |pair|
      if pair =~ /:/
        Hash[*pair.split(":", 2)].collect do |k, v|
          [CGI.escape(k.strip), CGI.escape(v.strip)].join("=")
        end
      else
        pair
      end
    end

    querystring = escaped_pairs * "&"
    cli_params = CGI.parse(querystring)

    {
      "oauth_consumer_key"     => options[:oauth_consumer_key],
      "oauth_nonce"            => options[:oauth_nonce],
      "oauth_timestamp"        => options[:oauth_timestamp],
      "oauth_token"            => options[:oauth_token],
      "oauth_signature_method" => options[:oauth_signature_method],
      "oauth_version"          => options[:oauth_version]
    }.reject { |_k, v| v.nil? || v == "" }.merge(cli_params)
  end
end
puts(string = nil) click to toggle source
# File lib/oauth/cli/base_command.rb, line 43
def puts(string = nil)
  @stdout.puts(string)
end
show_missing(array) click to toggle source
# File lib/oauth/cli/base_command.rb, line 30
def show_missing(array)
  array = array.map { |s| "--#{s}" }.join(" ")
  OAuth::CLI.puts_red "Options missing to OAuth CLI: #{array}"
end
verbose?() click to toggle source
# File lib/oauth/cli/base_command.rb, line 39
def verbose?
  options[:verbose]
end
xmpp?() click to toggle source
# File lib/oauth/cli/base_command.rb, line 35
def xmpp?
  options[:xmpp]
end