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