sayso-oauth 0.4.4.001

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/.gitignore +3 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +45 -0
  4. data/HISTORY +150 -0
  5. data/LICENSE +20 -0
  6. data/README.rdoc +74 -0
  7. data/Rakefile +37 -0
  8. data/TODO +32 -0
  9. data/bin/oauth +5 -0
  10. data/examples/yql.rb +44 -0
  11. data/lib/digest/hmac.rb +104 -0
  12. data/lib/oauth.rb +13 -0
  13. data/lib/oauth/cli.rb +378 -0
  14. data/lib/oauth/client.rb +4 -0
  15. data/lib/oauth/client/action_controller_request.rb +65 -0
  16. data/lib/oauth/client/em_http.rb +120 -0
  17. data/lib/oauth/client/helper.rb +91 -0
  18. data/lib/oauth/client/net_http.rb +119 -0
  19. data/lib/oauth/consumer.rb +385 -0
  20. data/lib/oauth/core_ext.rb +31 -0
  21. data/lib/oauth/errors.rb +3 -0
  22. data/lib/oauth/errors/error.rb +4 -0
  23. data/lib/oauth/errors/problem.rb +14 -0
  24. data/lib/oauth/errors/unauthorized.rb +12 -0
  25. data/lib/oauth/helper.rb +93 -0
  26. data/lib/oauth/oauth.rb +13 -0
  27. data/lib/oauth/oauth_test_helper.rb +25 -0
  28. data/lib/oauth/request_proxy.rb +24 -0
  29. data/lib/oauth/request_proxy/action_controller_request.rb +62 -0
  30. data/lib/oauth/request_proxy/base.rb +174 -0
  31. data/lib/oauth/request_proxy/curb_request.rb +55 -0
  32. data/lib/oauth/request_proxy/em_http_request.rb +66 -0
  33. data/lib/oauth/request_proxy/jabber_request.rb +41 -0
  34. data/lib/oauth/request_proxy/mock_request.rb +44 -0
  35. data/lib/oauth/request_proxy/net_http.rb +72 -0
  36. data/lib/oauth/request_proxy/rack_request.rb +48 -0
  37. data/lib/oauth/request_proxy/typhoeus_request.rb +53 -0
  38. data/lib/oauth/server.rb +66 -0
  39. data/lib/oauth/signature.rb +45 -0
  40. data/lib/oauth/signature/base.rb +110 -0
  41. data/lib/oauth/signature/hmac/base.rb +15 -0
  42. data/lib/oauth/signature/hmac/md5.rb +8 -0
  43. data/lib/oauth/signature/hmac/rmd160.rb +8 -0
  44. data/lib/oauth/signature/hmac/sha1.rb +9 -0
  45. data/lib/oauth/signature/hmac/sha2.rb +8 -0
  46. data/lib/oauth/signature/md5.rb +13 -0
  47. data/lib/oauth/signature/plaintext.rb +23 -0
  48. data/lib/oauth/signature/rsa/sha1.rb +46 -0
  49. data/lib/oauth/signature/sha1.rb +13 -0
  50. data/lib/oauth/token.rb +7 -0
  51. data/lib/oauth/tokens/access_token.rb +71 -0
  52. data/lib/oauth/tokens/consumer_token.rb +33 -0
  53. data/lib/oauth/tokens/request_token.rb +32 -0
  54. data/lib/oauth/tokens/server_token.rb +9 -0
  55. data/lib/oauth/tokens/token.rb +17 -0
  56. data/oauth.gemspec +173 -0
  57. data/tasks/deployment.rake +34 -0
  58. data/tasks/environment.rake +7 -0
  59. data/tasks/website.rake +17 -0
  60. data/test/cases/oauth_case.rb +19 -0
  61. data/test/cases/spec/1_0-final/test_construct_request_url.rb +62 -0
  62. data/test/cases/spec/1_0-final/test_normalize_request_parameters.rb +88 -0
  63. data/test/cases/spec/1_0-final/test_parameter_encodings.rb +86 -0
  64. data/test/cases/spec/1_0-final/test_signature_base_strings.rb +77 -0
  65. data/test/integration/consumer_test.rb +307 -0
  66. data/test/keys/rsa.cert +11 -0
  67. data/test/keys/rsa.pem +16 -0
  68. data/test/test_access_token.rb +26 -0
  69. data/test/test_action_controller_request_proxy.rb +133 -0
  70. data/test/test_consumer.rb +171 -0
  71. data/test/test_curb_request_proxy.rb +77 -0
  72. data/test/test_em_http_client.rb +80 -0
  73. data/test/test_em_http_request_proxy.rb +115 -0
  74. data/test/test_helper.rb +26 -0
  75. data/test/test_hmac_sha1.rb +20 -0
  76. data/test/test_net_http_client.rb +280 -0
  77. data/test/test_net_http_request_proxy.rb +72 -0
  78. data/test/test_oauth_helper.rb +71 -0
  79. data/test/test_rack_request_proxy.rb +40 -0
  80. data/test/test_request_token.rb +51 -0
  81. data/test/test_rsa_sha1.rb +59 -0
  82. data/test/test_server.rb +40 -0
  83. data/test/test_signature.rb +22 -0
  84. data/test/test_signature_base.rb +32 -0
  85. data/test/test_signature_plain_text.rb +31 -0
  86. data/test/test_token.rb +14 -0
  87. data/test/test_typhoeus_request_proxy.rb +81 -0
  88. metadata +235 -0
@@ -0,0 +1,51 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ class StubbedToken < OAuth::RequestToken
4
+ define_method :build_authorize_url_promoted do |root_domain, params|
5
+ build_authorize_url root_domain, params
6
+ end
7
+ end
8
+
9
+ class TestRequestToken < Test::Unit::TestCase
10
+ def setup
11
+ # setup a fake req. token. mocking Consumer would be more appropriate...
12
+ @request_token = OAuth::RequestToken.new(
13
+ OAuth::Consumer.new("key", "secret", {}),
14
+ "key",
15
+ "secret"
16
+ )
17
+ end
18
+
19
+ def test_request_token_builds_authorize_url_connectly_with_additional_params
20
+ auth_url = @request_token.authorize_url({:oauth_callback => "github.com"})
21
+ assert_not_nil auth_url
22
+ assert_match(/oauth_token/, auth_url)
23
+ assert_match(/oauth_callback/, auth_url)
24
+ end
25
+
26
+ def test_request_token_builds_authorize_url_connectly_with_no_or_nil_params
27
+ # we should only have 1 key in the url returned if we didn't pass anything.
28
+ # this is the only required param to authenticate the client.
29
+ auth_url = @request_token.authorize_url(nil)
30
+ assert_not_nil auth_url
31
+ assert_match(/\?oauth_token=/, auth_url)
32
+
33
+ auth_url = @request_token.authorize_url
34
+ assert_not_nil auth_url
35
+ assert_match(/\?oauth_token=/, auth_url)
36
+ end
37
+
38
+ #TODO: mock out the Consumer to test the Consumer/AccessToken interaction.
39
+ def test_get_access_token
40
+ end
41
+
42
+ def test_build_authorize_url
43
+ @stubbed_token = StubbedToken.new(nil, nil, nil)
44
+ assert_respond_to @stubbed_token, :build_authorize_url_promoted
45
+ url = @stubbed_token.build_authorize_url_promoted(
46
+ "http://github.com/oauth/authorize",
47
+ {:foo => "bar bar"})
48
+ assert url
49
+ assert_equal "http://github.com/oauth/authorize?foo=bar+bar", url
50
+ end
51
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'oauth/consumer'
3
+ require 'oauth/signature/rsa/sha1'
4
+
5
+ class TestSignatureRsaSha1 < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @request = Net::HTTP::Get.new('/photos?file=vacaction.jpg&size=original&oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&oauth_signature_method=RSA-SHA1')
9
+
10
+ @consumer = OAuth::Consumer.new('dpf43f3p2l4k3l03', OpenSSL::PKey::RSA.new(IO.read(File.dirname(__FILE__) + "/keys/rsa.pem")))
11
+
12
+ end
13
+
14
+ def test_that_rsa_sha1_implements_rsa_sha1
15
+ assert OAuth::Signature.available_methods.include?('rsa-sha1')
16
+ end
17
+
18
+ def test_that_get_request_from_oauth_test_cases_produces_matching_signature_base_string
19
+ sbs = OAuth::Signature.signature_base_string(@request, { :consumer => @consumer,
20
+ :uri => 'http://photos.example.net/photos' } )
21
+
22
+ assert_equal 'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacaction.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3D13917289812797014437%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D1196666512%26oauth_version%3D1.0%26size%3Doriginal', sbs
23
+ end
24
+
25
+ def test_that_get_request_from_oauth_test_cases_produces_matching_signature
26
+ signature = OAuth::Signature.sign(@request, { :consumer => @consumer,
27
+ :uri => 'http://photos.example.net/photos' } )
28
+
29
+ assert_equal 'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=', signature
30
+
31
+ end
32
+
33
+ def test_that_get_request_from_oauth_test_cases_produces_matching_signature_using_private_key_file
34
+ @consumer = OAuth::Consumer.new('dpf43f3p2l4k3l03',nil)
35
+
36
+ signature = OAuth::Signature.sign(@request, { :consumer => @consumer,
37
+ :private_key_file=>File.dirname(__FILE__) + "/keys/rsa.pem",
38
+ :uri => 'http://photos.example.net/photos' } )
39
+
40
+ assert_equal 'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=', signature
41
+ end
42
+
43
+ def test_that_get_request_from_oauth_test_cases_verifies_signature
44
+ @request = Net::HTTP::Get.new('/photos?oauth_signature_method=RSA-SHA1&oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&file=vacaction.jpg&size=original&oauth_signature=jvTp%2FwX1TYtByB1m%2BPbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2%2F9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW%2F%2Fe%2BRinhejgCuzoH26dyF8iY2ZZ%2F5D1ilgeijhV%2FvBka5twt399mXwaYdCwFYE%3D')
45
+ @consumer = OAuth::Consumer.new('dpf43f3p2l4k3l03',OpenSSL::X509::Certificate.new(IO.read(File.dirname(__FILE__) + "/keys/rsa.cert")))
46
+
47
+ assert OAuth::Signature.verify(@request, { :consumer => @consumer,
48
+ :uri => 'http://photos.example.net/photos' } )
49
+
50
+ end
51
+
52
+ def test_that_get_request_from_oauth_test_cases_verifies_signature_with_pem
53
+ @request = Net::HTTP::Get.new('/photos?oauth_signature_method=RSA-SHA1&oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&file=vacaction.jpg&size=original&oauth_signature=jvTp%2FwX1TYtByB1m%2BPbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2%2F9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW%2F%2Fe%2BRinhejgCuzoH26dyF8iY2ZZ%2F5D1ilgeijhV%2FvBka5twt399mXwaYdCwFYE%3D')
54
+ assert OAuth::Signature.verify(@request, { :consumer => @consumer,
55
+ :uri => 'http://photos.example.net/photos' } )
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,40 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'oauth/server'
3
+ class ServerTest < Test::Unit::TestCase
4
+ def setup
5
+ @server=OAuth::Server.new "http://test.com"
6
+ end
7
+
8
+ def test_default_paths
9
+ assert_equal "/oauth/request_token",@server.request_token_path
10
+ assert_equal "/oauth/authorize",@server.authorize_path
11
+ assert_equal "/oauth/access_token",@server.access_token_path
12
+ end
13
+
14
+ def test_default_urls
15
+ assert_equal "http://test.com/oauth/request_token",@server.request_token_url
16
+ assert_equal "http://test.com/oauth/authorize",@server.authorize_url
17
+ assert_equal "http://test.com/oauth/access_token",@server.access_token_url
18
+ end
19
+
20
+ def test_generate_consumer_credentials
21
+ consumer=@server.generate_consumer_credentials
22
+ assert_not_nil consumer.key
23
+ assert_not_nil consumer.secret
24
+ end
25
+
26
+ def test_create_consumer
27
+ @consumer=@server.create_consumer
28
+ assert_not_nil @consumer
29
+ assert_not_nil @consumer.key
30
+ assert_not_nil @consumer.secret
31
+ assert_equal "http://test.com",@consumer.site
32
+ assert_equal "/oauth/request_token",@consumer.request_token_path
33
+ assert_equal "/oauth/authorize",@consumer.authorize_path
34
+ assert_equal "/oauth/access_token",@consumer.access_token_path
35
+ assert_equal "http://test.com/oauth/request_token",@consumer.request_token_url
36
+ assert_equal "http://test.com/oauth/authorize",@consumer.authorize_url
37
+ assert_equal "http://test.com/oauth/access_token",@consumer.access_token_url
38
+ end
39
+
40
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../test_helper', __FILE__)
4
+
5
+ class TestOauth < Test::Unit::TestCase
6
+
7
+ def test_parameter_escaping_kcode_invariant
8
+ ruby19 = RUBY_VERSION =~ /^1\.9/
9
+ old = $KCODE if !ruby19
10
+ begin
11
+ %w(n N e E s S u U).each do |kcode|
12
+ $KCODE = kcode if !ruby19
13
+ assert_equal '%E3%81%82', OAuth::Helper.escape('あ'),
14
+ "Failed to correctly escape Japanese under $KCODE = #{kcode}"
15
+ assert_equal '%C3%A9', OAuth::Helper.escape('é'),
16
+ "Failed to correctly escape e+acute under $KCODE = #{kcode}"
17
+ end
18
+ ensure
19
+ $KCODE = old if !ruby19
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'oauth/signature/base'
3
+ require 'net/http'
4
+ class SignatureBaseTest < Test::Unit::TestCase
5
+
6
+ def test_that_initialize_requires_one_request_argument
7
+ assert_raises ArgumentError do
8
+ OAuth::Signature::Base.new()
9
+ end
10
+ end
11
+
12
+ def test_that_initialize_requires_a_valid_request_argument
13
+ request = nil
14
+ assert_raises TypeError do
15
+ OAuth::Signature::Base.new(request) { |token|
16
+ # just a stub
17
+ }
18
+ end
19
+ end
20
+
21
+ def test_that_initialize_succeeds_when_the_request_proxy_is_valid
22
+ # this isn't quite valid, but it will do.
23
+ raw_request = Net::HTTP::Get.new('/test')
24
+ request = OAuth::RequestProxy.proxy(raw_request)
25
+ assert_nothing_raised do
26
+ OAuth::Signature::Base.new(request) { |token|
27
+ # just a stub
28
+ }
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'oauth/signature/plaintext'
3
+
4
+ class TestSignaturePlaintext < Test::Unit::TestCase
5
+ def test_that_plaintext_implements_plaintext
6
+ assert OAuth::Signature.available_methods.include?('plaintext')
7
+ end
8
+
9
+ def test_that_get_request_from_oauth_test_cases_produces_matching_signature
10
+ request = Net::HTTP::Get.new('/photos?file=vacation.jpg&size=original&oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_token=nnch734d00sl2jdk&oauth_signature=kd94hf93k423kf44%26&oauth_timestamp=1191242096&oauth_nonce=kllo9940pd9333jh&oauth_signature_method=PLAINTEXT')
11
+
12
+ consumer = OAuth::Consumer.new('dpf43f3p2l4k3l03','kd94hf93k423kf44')
13
+ token = OAuth::Token.new('nnch734d00sl2jdk', nil)
14
+
15
+ assert OAuth::Signature.verify(request, { :consumer => consumer,
16
+ :token => token,
17
+ :uri => 'http://photos.example.net/photos' } )
18
+ end
19
+
20
+ def test_that_get_request_from_oauth_test_cases_produces_matching_signature_part_two
21
+ request = Net::HTTP::Get.new('/photos?file=vacation.jpg&size=original&oauth_version=1.0&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_token=nnch734d00sl2jdk&oauth_signature=kd94hf93k423kf44%26pfkkdhi9sl3r4s00&oauth_timestamp=1191242096&oauth_nonce=kllo9940pd9333jh&oauth_signature_method=PLAINTEXT')
22
+
23
+ consumer = OAuth::Consumer.new('dpf43f3p2l4k3l03','kd94hf93k423kf44')
24
+ token = OAuth::Token.new('nnch734d00sl2jdk', 'pfkkdhi9sl3r4s00')
25
+
26
+ assert OAuth::Signature.verify(request, { :consumer => consumer,
27
+ :token => token,
28
+ :uri => 'http://photos.example.net/photos' } )
29
+ end
30
+
31
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'oauth/token'
3
+
4
+ class TestToken < Test::Unit::TestCase
5
+
6
+ def setup
7
+ end
8
+
9
+ def test_token_constructor_produces_valid_token
10
+ token = OAuth::Token.new('xyz', '123')
11
+ assert_equal 'xyz', token.token
12
+ assert_equal '123', token.secret
13
+ end
14
+ end
@@ -0,0 +1,81 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ begin
4
+
5
+ require 'oauth/request_proxy/typhoeus_request'
6
+ require 'typhoeus'
7
+
8
+ class TyphoeusRequestProxyTest < Test::Unit::TestCase
9
+
10
+ def test_that_proxy_simple_get_request_works
11
+ request = ::Typhoeus::Request.new('/test?key=value')
12
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value'})
13
+
14
+ expected_parameters = {'key' => ['value']}
15
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
16
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
17
+ assert_equal 'GET', request_proxy.method
18
+ end
19
+
20
+ def test_that_proxy_simple_post_request_works_with_arguments
21
+ request = Typhoeus::Request.new('/test', :method => :post)
22
+ params = {'key' => 'value'}
23
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
24
+
25
+ expected_parameters = {'key' => 'value'}
26
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
27
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
28
+ assert_equal 'POST', request_proxy.method
29
+ end
30
+
31
+ def test_that_proxy_simple_post_request_works_with_form_data
32
+ request = Typhoeus::Request.new('/test', :method => :post,
33
+ :body => {'key' => 'value'},
34
+ :headers => {'Content-Type' => 'application/x-www-form-urlencoded'})
35
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
36
+
37
+ expected_parameters = {'key' => 'value'}
38
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
39
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
40
+ assert_equal 'POST', request_proxy.method
41
+ end
42
+
43
+ def test_that_proxy_simple_put_request_works_with_arguments
44
+ request = Typhoeus::Request.new('/test', :method => :put)
45
+ params = {'key' => 'value'}
46
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
47
+
48
+ expected_parameters = {'key' => 'value'}
49
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
50
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
51
+ assert_equal 'PUT', request_proxy.method
52
+ end
53
+
54
+ def test_that_proxy_simple_put_request_works_with_form_data
55
+ request = Typhoeus::Request.new('/test', :method => :put, :body => {'key' => 'value'})
56
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
57
+
58
+ expected_parameters = {}
59
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
60
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
61
+ assert_equal 'PUT', request_proxy.method
62
+ end
63
+
64
+ def test_that_proxy_post_request_works_with_mixed_parameter_sources
65
+ request = Typhoeus::Request.new('/test?key=value',
66
+ :method => :post,
67
+ :body => {'key2' => 'value2'},
68
+ :headers => {'Content-Type' => 'application/x-www-form-urlencoded'})
69
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value', :parameters => {'key3' => 'value3'}})
70
+
71
+ expected_parameters = {'key' => ['value'], 'key2' => 'value2', 'key3' => 'value3'}
72
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
73
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
74
+ assert_equal 'POST', request_proxy.method
75
+ end
76
+ end
77
+
78
+ rescue LoadError => e
79
+ warn "! problem loading typhoeus, skipping these tests: #{e}"
80
+ end
81
+
metadata ADDED
@@ -0,0 +1,235 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sayso-oauth
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.4.4.001
6
+ platform: ruby
7
+ authors:
8
+ - SaySo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2010-10-31 00:00:00 +02:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: actionpack
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 2.3.5
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 1.0.0
36
+ type: :development
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: mocha
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.9.8
47
+ type: :development
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: typhoeus
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 0.1.13
58
+ type: :development
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: em-http-request
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.2.10
69
+ type: :development
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: curb
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.6.6.0
80
+ type: :development
81
+ version_requirements: *id006
82
+ description: OAuth Core Ruby implementation - forked and gemified for sayso
83
+ email: sayso@truvolabs.com
84
+ executables:
85
+ - oauth
86
+ extensions: []
87
+
88
+ extra_rdoc_files:
89
+ - LICENSE
90
+ - README.rdoc
91
+ - TODO
92
+ files:
93
+ - .gitignore
94
+ - Gemfile
95
+ - Gemfile.lock
96
+ - HISTORY
97
+ - LICENSE
98
+ - README.rdoc
99
+ - Rakefile
100
+ - TODO
101
+ - bin/oauth
102
+ - examples/yql.rb
103
+ - lib/digest/hmac.rb
104
+ - lib/oauth.rb
105
+ - lib/oauth/cli.rb
106
+ - lib/oauth/client.rb
107
+ - lib/oauth/client/action_controller_request.rb
108
+ - lib/oauth/client/em_http.rb
109
+ - lib/oauth/client/helper.rb
110
+ - lib/oauth/client/net_http.rb
111
+ - lib/oauth/consumer.rb
112
+ - lib/oauth/core_ext.rb
113
+ - lib/oauth/errors.rb
114
+ - lib/oauth/errors/error.rb
115
+ - lib/oauth/errors/problem.rb
116
+ - lib/oauth/errors/unauthorized.rb
117
+ - lib/oauth/helper.rb
118
+ - lib/oauth/oauth.rb
119
+ - lib/oauth/oauth_test_helper.rb
120
+ - lib/oauth/request_proxy.rb
121
+ - lib/oauth/request_proxy/action_controller_request.rb
122
+ - lib/oauth/request_proxy/base.rb
123
+ - lib/oauth/request_proxy/curb_request.rb
124
+ - lib/oauth/request_proxy/em_http_request.rb
125
+ - lib/oauth/request_proxy/jabber_request.rb
126
+ - lib/oauth/request_proxy/mock_request.rb
127
+ - lib/oauth/request_proxy/net_http.rb
128
+ - lib/oauth/request_proxy/rack_request.rb
129
+ - lib/oauth/request_proxy/typhoeus_request.rb
130
+ - lib/oauth/server.rb
131
+ - lib/oauth/signature.rb
132
+ - lib/oauth/signature/base.rb
133
+ - lib/oauth/signature/hmac/base.rb
134
+ - lib/oauth/signature/hmac/md5.rb
135
+ - lib/oauth/signature/hmac/rmd160.rb
136
+ - lib/oauth/signature/hmac/sha1.rb
137
+ - lib/oauth/signature/hmac/sha2.rb
138
+ - lib/oauth/signature/md5.rb
139
+ - lib/oauth/signature/plaintext.rb
140
+ - lib/oauth/signature/rsa/sha1.rb
141
+ - lib/oauth/signature/sha1.rb
142
+ - lib/oauth/token.rb
143
+ - lib/oauth/tokens/access_token.rb
144
+ - lib/oauth/tokens/consumer_token.rb
145
+ - lib/oauth/tokens/request_token.rb
146
+ - lib/oauth/tokens/server_token.rb
147
+ - lib/oauth/tokens/token.rb
148
+ - oauth.gemspec
149
+ - tasks/deployment.rake
150
+ - tasks/environment.rake
151
+ - tasks/website.rake
152
+ - test/cases/oauth_case.rb
153
+ - test/cases/spec/1_0-final/test_construct_request_url.rb
154
+ - test/cases/spec/1_0-final/test_normalize_request_parameters.rb
155
+ - test/cases/spec/1_0-final/test_parameter_encodings.rb
156
+ - test/cases/spec/1_0-final/test_signature_base_strings.rb
157
+ - test/integration/consumer_test.rb
158
+ - test/keys/rsa.cert
159
+ - test/keys/rsa.pem
160
+ - test/test_access_token.rb
161
+ - test/test_action_controller_request_proxy.rb
162
+ - test/test_consumer.rb
163
+ - test/test_curb_request_proxy.rb
164
+ - test/test_em_http_client.rb
165
+ - test/test_em_http_request_proxy.rb
166
+ - test/test_helper.rb
167
+ - test/test_hmac_sha1.rb
168
+ - test/test_net_http_client.rb
169
+ - test/test_net_http_request_proxy.rb
170
+ - test/test_oauth_helper.rb
171
+ - test/test_rack_request_proxy.rb
172
+ - test/test_request_token.rb
173
+ - test/test_rsa_sha1.rb
174
+ - test/test_server.rb
175
+ - test/test_signature.rb
176
+ - test/test_signature_base.rb
177
+ - test/test_signature_plain_text.rb
178
+ - test/test_token.rb
179
+ - test/test_typhoeus_request_proxy.rb
180
+ has_rdoc: true
181
+ homepage:
182
+ licenses: []
183
+
184
+ post_install_message:
185
+ rdoc_options:
186
+ - --charset=UTF-8
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ none: false
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: "0"
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: "0"
201
+ requirements: []
202
+
203
+ rubyforge_project: oauth
204
+ rubygems_version: 1.6.2
205
+ signing_key:
206
+ specification_version: 3
207
+ summary: OAuth Core Ruby implementation - forked and gemified for sayso
208
+ test_files:
209
+ - test/cases/oauth_case.rb
210
+ - test/cases/spec/1_0-final/test_construct_request_url.rb
211
+ - test/cases/spec/1_0-final/test_normalize_request_parameters.rb
212
+ - test/cases/spec/1_0-final/test_parameter_encodings.rb
213
+ - test/cases/spec/1_0-final/test_signature_base_strings.rb
214
+ - test/integration/consumer_test.rb
215
+ - test/test_access_token.rb
216
+ - test/test_action_controller_request_proxy.rb
217
+ - test/test_consumer.rb
218
+ - test/test_curb_request_proxy.rb
219
+ - test/test_em_http_client.rb
220
+ - test/test_em_http_request_proxy.rb
221
+ - test/test_helper.rb
222
+ - test/test_hmac_sha1.rb
223
+ - test/test_net_http_client.rb
224
+ - test/test_net_http_request_proxy.rb
225
+ - test/test_oauth_helper.rb
226
+ - test/test_rack_request_proxy.rb
227
+ - test/test_request_token.rb
228
+ - test/test_rsa_sha1.rb
229
+ - test/test_server.rb
230
+ - test/test_signature.rb
231
+ - test/test_signature_base.rb
232
+ - test/test_signature_plain_text.rb
233
+ - test/test_token.rb
234
+ - test/test_typhoeus_request_proxy.rb
235
+ - examples/yql.rb