File: sign_command.rb

package info (click to toggle)
ruby-oauth 0.5.4-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 584 kB
  • sloc: ruby: 4,070; makefile: 4
file content (81 lines) | stat: -rw-r--r-- 2,454 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class OAuth::CLI
  class SignCommand < BaseCommand

    def required_options
      [:oauth_consumer_key, :oauth_consumer_secret, :oauth_token, :oauth_token_secret]
    end

    def _run
      request = OAuth::RequestProxy.proxy \
         "method"     => options[:method],
         "uri"        => options[:uri],
         "parameters" => parameters

      if verbose?
        puts_verbose_parameters(request)
      end

      request.sign! \
        :consumer_secret => options[:oauth_consumer_secret],
        :token_secret    => options[:oauth_token_secret]

      if verbose?
        puts_verbose_request(request)
      else
        puts request.oauth_signature
      end
    end

    def puts_verbose_parameters(request)
      puts "OAuth parameters:"
      request.oauth_parameters.each do |k,v|
        puts "  " + [k, v] * ": "
      end
      puts

      if request.non_oauth_parameters.any?
        puts "Parameters:"
        request.non_oauth_parameters.each do |k,v|
          puts "  " + [k, v] * ": "
        end
        puts
      end
    end

    def puts_verbose_request(request)
      puts "Method: #{request.method}"
      puts "URI: #{request.uri}"
      puts "Normalized params: #{request.normalized_parameters}" unless options[:xmpp]
      puts "Signature base string: #{request.signature_base_string}"

      if xmpp?
        puts
        puts "XMPP Stanza:"
        puts xmpp_output(request)
        puts
        puts "Note: You may want to use bare JIDs in your URI."
        puts
      else
        puts "OAuth Request URI: #{request.signed_uri}"
        puts "Request URI: #{request.signed_uri(false)}"
        puts "Authorization header: #{request.oauth_header(:realm => options[:realm])}"
      end
      puts "Signature:         #{request.oauth_signature}"
      puts "Escaped signature: #{OAuth::Helper.escape(request.oauth_signature)}"
    end

    def xmpp_output(request)
      <<-EOS
  <oauth xmlns='urn:xmpp:oauth:0'>
    <oauth_consumer_key>#{request.oauth_consumer_key}</oauth_consumer_key>
    <oauth_token>#{request.oauth_token}</oauth_token>
    <oauth_signature_method>#{request.oauth_signature_method}</oauth_signature_method>
    <oauth_signature>#{request.oauth_signature}</oauth_signature>
    <oauth_timestamp>#{request.oauth_timestamp}</oauth_timestamp>
    <oauth_nonce>#{request.oauth_nonce}</oauth_nonce>
    <oauth_version>#{request.oauth_version}</oauth_version>
  </oauth>
      EOS
    end
  end
end