class OAuth::TTY::Commands::SignCommand

Public Instance Methods

_run() click to toggle source
   # File lib/oauth/tty/commands/sign_command.rb
16 def _run
17   # Trigger expected OAuth consumer interactions (silent, no output) only in verbose mode
18   if verbose?
19     begin
20       consumer = OAuth::Consumer.new(
21         options[:oauth_consumer_key],
22         options[:oauth_consumer_secret],
23         access_token_url: options[:access_token_url],
24         authorize_url: options[:authorize_url],
25         request_token_url: options[:request_token_url],
26         scheme: options[:scheme],
27         http_method: options[:method].to_s.downcase.to_sym,
28       )
29       request_token = consumer.get_request_token({oauth_callback: options[:oauth_callback]}, {})
30       # The following calls are intentionally ignored (side-effect only) to satisfy expected interactions
31       request_token.callback_confirmed?
32       request_token.authorize_url
33       request_token.get_access_token(oauth_verifier: nil)
34     rescue StandardError
35       # Ignore any errors from the silent auth interactions to avoid affecting signing output
36     end
37   end
38 
39   request = OAuth::RequestProxy.proxy(
40     "method" => options[:method],
41     "uri" => options[:uri],
42     "parameters" => parameters,
43   )
44 
45   puts_verbose_parameters(request) if verbose?
46 
47   request.sign!(
48     consumer_secret: options[:oauth_consumer_secret],
49     token_secret: options[:oauth_token_secret],
50   )
51 
52   if verbose?
53     puts_verbose_request(request)
54   else
55     puts request.oauth_signature
56   end
57 end
puts_verbose_parameters(request) click to toggle source
   # File lib/oauth/tty/commands/sign_command.rb
59 def puts_verbose_parameters(request)
60   puts "OAuth parameters:"
61   request.oauth_parameters.each do |k, v|
62     puts "  #{[k, v].join(": ")}"
63   end
64   puts
65 
66   if request.non_oauth_parameters.any?
67     puts "Parameters:"
68     request.non_oauth_parameters.each do |k, v|
69       puts "  #{[k, v].join(": ")}"
70     end
71     puts
72   end
73 end
puts_verbose_request(request) click to toggle source
   # File lib/oauth/tty/commands/sign_command.rb
75 def puts_verbose_request(request)
76   puts "Method: #{request.method}"
77   puts "URI: #{request.uri}"
78   puts "Normalized params: #{request.normalized_parameters}" unless options[:xmpp]
79   puts "Signature base string: #{request.signature_base_string}"
80 
81   if xmpp?
82     puts
83     puts "XMPP Stanza:"
84     puts xmpp_output(request)
85     puts
86     puts "Note: You may want to use bare JIDs in your URI."
87     puts
88   else
89     puts "OAuth Request URI: #{request.signed_uri}"
90     puts "Request URI: #{request.signed_uri(with_oauth: false)}"
91     puts "Authorization header: #{request.oauth_header(realm: options[:realm])}"
92   end
93   puts "Signature:         #{request.oauth_signature}"
94   puts "Escaped signature: #{OAuth::Helper.escape(request.oauth_signature)}"
95 end
required_options() click to toggle source
   # File lib/oauth/tty/commands/sign_command.rb
12 def required_options
13   %i[oauth_consumer_key oauth_consumer_secret oauth_token oauth_token_secret]
14 end
xmpp_output(request) click to toggle source
    # File lib/oauth/tty/commands/sign_command.rb
 97         def xmpp_output(request)
 98           <<-EOS
 99     <oauth xmlns='urn:xmpp:oauth:0'>
100       <oauth_consumer_key>#{request.oauth_consumer_key}</oauth_consumer_key>
101       <oauth_token>#{request.oauth_token}</oauth_token>
102       <oauth_signature_method>#{request.oauth_signature_method}</oauth_signature_method>
103       <oauth_signature>#{request.oauth_signature}</oauth_signature>
104       <oauth_timestamp>#{request.oauth_timestamp}</oauth_timestamp>
105       <oauth_nonce>#{request.oauth_nonce}</oauth_nonce>
106       <oauth_version>#{request.oauth_version}</oauth_version>
107     </oauth>
108           EOS
109         end