signet 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.3.3
2
+
3
+ * Request objects no longer recreated during processing
4
+ * Faraday middleware now supported
5
+ * Streamed requests now supported
6
+ * Fixed assertion profiles; client ID/secret omission no longer an error
7
+
1
8
  # 0.3.2
2
9
 
3
10
  * Added audience security check for ID tokens
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source :rubygems
2
+
3
+ gem 'addressable', '>= 2.2.3'
4
+ gem 'faraday', '~> 0.7.0'
5
+ gem 'multi_json', '>= 1.3.0'
6
+ gem 'jwt', '>= 0.1.4'
7
+ gem 'extlib', '>= 0.9.15'
8
+ gem 'jruby-openssl', :platforms => :jruby
9
+
10
+ group :development do
11
+ gem 'launchy'
12
+ gem 'yard'
13
+ gem 'redcarpet'
14
+ end
15
+
16
+ group :test, :development do
17
+ gem 'rake', '>= 0.9.0'
18
+ gem 'rspec', '~> 1.2.9'
19
+ gem 'rcov', '>= 0.9.9', :platform => :mri_18
20
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,39 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ addressable (2.2.8)
5
+ extlib (0.9.15)
6
+ faraday (0.7.6)
7
+ addressable (~> 2.2)
8
+ multipart-post (~> 1.1)
9
+ rack (~> 1.1)
10
+ json (1.7.3)
11
+ jwt (0.1.4)
12
+ json (>= 1.2.4)
13
+ launchy (2.1.0)
14
+ addressable (~> 2.2.6)
15
+ multi_json (1.3.5)
16
+ multipart-post (1.1.5)
17
+ rack (1.4.1)
18
+ rake (0.9.2.2)
19
+ rcov (1.0.0)
20
+ redcarpet (2.1.1)
21
+ rspec (1.2.9)
22
+ yard (0.8.1)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ addressable (>= 2.2.3)
29
+ extlib (>= 0.9.15)
30
+ faraday (~> 0.7.0)
31
+ jruby-openssl
32
+ jwt (>= 0.1.4)
33
+ launchy
34
+ multi_json (>= 1.3.0)
35
+ rake (>= 0.9.0)
36
+ rcov (>= 0.9.9)
37
+ redcarpet
38
+ rspec (~> 1.2.9)
39
+ yard
data/README.md CHANGED
@@ -7,6 +7,9 @@
7
7
  <dt>License</dt><dd>Apache 2.0</dd>
8
8
  </dl>
9
9
 
10
+ [![Build Status](https://secure.travis-ci.org/google/signet.png)](http://travis-ci.org/google/signet)
11
+ [![Dependency Status](https://gemnasium.com/google/signet.png)](https://gemnasium.com/google/signet)
12
+
10
13
  ## Description
11
14
 
12
15
  Signet is an OAuth 1.0 / OAuth 2.0 implementation.
data/Rakefile CHANGED
@@ -4,11 +4,6 @@ $:.uniq!
4
4
 
5
5
  require 'rubygems'
6
6
  require 'rake'
7
- require 'rake/testtask'
8
- require 'rake/rdoctask'
9
- require 'rake/packagetask'
10
- require 'rake/gempackagetask'
11
- require 'rake/contrib/rubyforgepublisher'
12
7
 
13
8
  begin
14
9
  require 'spec/rake/spectask'
@@ -27,14 +22,9 @@ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
27
22
 
28
23
  RELEASE_NAME = "REL #{PKG_VERSION}"
29
24
 
30
- RUBY_FORGE_PROJECT = PKG_NAME
31
- RUBY_FORGE_USER = "sporkmonger"
32
- RUBY_FORGE_PATH = "/var/www/gforge-projects/#{RUBY_FORGE_PROJECT}"
33
- RUBY_FORGE_URL = "http://#{RUBY_FORGE_PROJECT}.rubyforge.org/"
34
-
35
25
  PKG_AUTHOR = "Bob Aman"
36
26
  PKG_AUTHOR_EMAIL = "bobaman@google.com"
37
- PKG_HOMEPAGE = RUBY_FORGE_URL
27
+ PKG_HOMEPAGE = "http://code.google.com/p/oauth-signet/"
38
28
  PKG_SUMMARY = "Package Summary"
39
29
  PKG_DESCRIPTION = <<-TEXT
40
30
  Signet is an OAuth 1.0 / OAuth 2.0 implementation.
@@ -849,93 +849,90 @@ module Signet
849
849
  end
850
850
  options = {
851
851
  :signature_method => 'HMAC-SHA1',
852
- :realm => nil
852
+ :realm => nil,
853
+ :connection => Faraday.default_connection
853
854
  }.merge(options)
854
- if options[:request]
855
+
856
+ if options[:request].kind_of?(Faraday::Request)
857
+ request = options[:request]
858
+ else
855
859
  if options[:request].kind_of?(Array)
856
860
  method, uri, headers, body = options[:request]
857
- elsif options[:request].kind_of?(Faraday::Request)
858
- options[:connection] ||= Faraday.default_connection
859
- method = options[:request].method.to_s.downcase.to_sym
860
- uri = options[:connection].build_url(
861
- options[:request].path, options[:request].params
862
- )
863
- headers = options[:request].headers || {}
864
- body = options[:request].body || ''
861
+ else
862
+ method = options[:method] || :get
863
+ uri = options[:uri]
864
+ headers = options[:headers] || []
865
+ body = options[:body] || ''
865
866
  end
866
- else
867
- method = options[:method] || :get
868
- uri = options[:uri]
869
- headers = options[:headers] || []
870
- body = options[:body] || ''
871
- end
872
- headers = headers.to_a if headers.kind_of?(Hash)
873
- request_components = {
874
- :method => method,
875
- :uri => uri,
876
- :headers => headers,
877
- :body => body
878
- }
879
- # Verify that we have all pieces required to return an HTTP request
880
- request_components.each do |(key, value)|
881
- unless value
882
- raise ArgumentError, "Missing :#{key} parameter."
867
+ headers = headers.to_a if headers.kind_of?(Hash)
868
+ request_components = {
869
+ :method => method,
870
+ :uri => uri,
871
+ :headers => headers,
872
+ :body => body
873
+ }
874
+ # Verify that we have all pieces required to return an HTTP request
875
+ request_components.each do |(key, value)|
876
+ unless value
877
+ raise ArgumentError, "Missing :#{key} parameter."
878
+ end
883
879
  end
884
- end
885
- if !body.kind_of?(String) && body.respond_to?(:each)
886
- # Just in case we get a chunked body
887
- merged_body = StringIO.new
888
- body.each do |chunk|
889
- merged_body.write(chunk)
880
+ if !body.kind_of?(String) && body.respond_to?(:each)
881
+ # Just in case we get a chunked body
882
+ merged_body = StringIO.new
883
+ body.each do |chunk|
884
+ merged_body.write(chunk)
885
+ end
886
+ body = merged_body.string
887
+ end
888
+ if !body.kind_of?(String)
889
+ raise TypeError, "Expected String, got #{body.class}."
890
+ end
891
+ method = method.to_s.downcase.to_sym
892
+
893
+ request = Faraday::Request.create(method) do |req|
894
+ req.url(Addressable::URI.parse(uri))
895
+ req.headers = Faraday::Utils::Headers.new(headers)
896
+ req.body = body
890
897
  end
891
- body = merged_body.string
892
- end
893
- if !body.kind_of?(String)
894
- raise TypeError, "Expected String, got #{body.class}."
895
898
  end
896
- method = method.to_s.downcase.to_sym
899
+
897
900
  parameters = ::Signet::OAuth1.unsigned_resource_parameters(
898
901
  :client_credential_key => self.client_credential_key,
899
902
  :token_credential_key => self.token_credential_key,
900
903
  :signature_method => options[:signature_method],
901
904
  :two_legged => self.two_legged
902
905
  )
903
- media_type = nil
904
- headers.each do |(header, value)|
905
- if header.downcase == 'Content-Type'.downcase
906
- media_type = value.gsub(/^([^;]+)(;.*?)?$/, '\1')
907
- end
908
- end
909
- if method == :post &&
910
- media_type == 'application/x-www-form-urlencoded'
911
- post_parameters = Addressable::URI.form_unencode(body)
912
- else
913
- post_parameters = []
914
- end
915
- parameters = parameters.concat(post_parameters)
906
+
907
+ env = request.to_env(options[:connection])
908
+
909
+ content_type = request['Content-Type'].to_s
910
+ content_type = content_type.split(';', 2).first if content_type.index(';')
911
+ if request.method == :post && content_type == 'application/x-www-form-urlencoded'
912
+ # Serializes the body in case a hash/array was passed. Noop if already string like
913
+ encoder = Faraday::Request::UrlEncoded.new(lambda { |env| })
914
+ encoder.call(env)
915
+ request.body = env[:body]
916
+
917
+ post_parameters = Addressable::URI.form_unencode(env[:body])
918
+ parameters = parameters.concat(post_parameters)
919
+ end
920
+
916
921
  # No need to attach URI query parameters, the .sign_parameters
917
922
  # method takes care of that automatically.
918
923
  signature = ::Signet::OAuth1.sign_parameters(
919
- method,
920
- uri,
924
+ env[:method],
925
+ env[:url],
921
926
  parameters,
922
927
  self.client_credential_secret,
923
928
  self.token_credential_secret
924
929
  )
930
+
925
931
  parameters << ['oauth_signature', signature]
926
- authorization_header = [
927
- 'Authorization',
928
- ::Signet::OAuth1.generate_authorization_header(
929
- parameters, options[:realm]
930
- )
931
- ]
932
- headers << authorization_header
933
- headers << ['Cache-Control', 'no-store']
934
- return Faraday::Request.create(method.to_s.downcase.to_sym) do |req|
935
- req.url(Addressable::URI.parse(uri))
936
- req.headers = Faraday::Utils::Headers.new(headers)
937
- req.body = body
938
- end
932
+ request['Authorization'] = ::Signet::OAuth1.generate_authorization_header(
933
+ parameters, options[:realm])
934
+ request['Cache-Control'] = 'no-store'
935
+ return request
939
936
  end
940
937
 
941
938
  ##
@@ -656,12 +656,7 @@ module Signet
656
656
  if self.token_credential_uri == nil
657
657
  raise ArgumentError, 'Missing token endpoint URI.'
658
658
  end
659
- if self.client_id == nil
660
- raise ArgumentError, 'Missing client identifier.'
661
- end
662
- if self.client_secret == nil
663
- raise ArgumentError, 'Missing client secret.'
664
- end
659
+
665
660
  method = 'POST'
666
661
  parameters = {"grant_type" => self.grant_type}
667
662
  case self.grant_type
@@ -679,9 +674,10 @@ module Signet
679
674
  # the presence of the redirect URI.
680
675
  raise ArgumentError, 'Missing authorization code.'
681
676
  end
677
+ parameters.merge!(self.extension_parameters)
682
678
  end
683
- parameters['client_id'] = self.client_id
684
- parameters['client_secret'] = self.client_secret
679
+ parameters['client_id'] = self.client_id unless self.client_id.nil?
680
+ parameters['client_secret'] = self.client_secret unless self.client_secret.nil?
685
681
  headers = [
686
682
  ['Cache-Control', 'no-store'],
687
683
  ['Content-Type', 'application/x-www-form-urlencoded']
@@ -752,7 +748,7 @@ module Signet
752
748
  # - <code>:realm</code> —
753
749
  # The Authorization realm. See RFC 2617.
754
750
  #
755
- # @return [Array] The request object.
751
+ # @return [Faraday::Request] The request object.
756
752
  def generate_authenticated_request(options={})
757
753
  if self.access_token == nil
758
754
  raise ArgumentError, 'Missing access token.'
@@ -760,62 +756,44 @@ module Signet
760
756
  options = {
761
757
  :realm => nil
762
758
  }.merge(options)
763
- if options[:request]
759
+ if options[:request].kind_of?(Faraday::Request)
760
+ request = options[:request]
761
+ else
764
762
  if options[:request].kind_of?(Array)
765
763
  method, uri, headers, body = options[:request]
766
- elsif options[:request].kind_of?(Faraday::Request)
767
- options[:connection] ||= Faraday.default_connection
768
- method = options[:request].method.to_s.downcase.to_sym
769
- uri = options[:connection].build_url(
770
- options[:request].path, options[:request].params
771
- )
772
- headers = options[:request].headers || {}
773
- body = options[:request].body || ''
764
+ else
765
+ method = options[:method] || :get
766
+ uri = options[:uri]
767
+ headers = options[:headers] || []
768
+ body = options[:body] || ''
774
769
  end
775
- else
776
- method = options[:method] || :get
777
- uri = options[:uri]
778
- headers = options[:headers] || []
779
- body = options[:body] || ''
780
- end
781
- headers = headers.to_a if headers.kind_of?(Hash)
782
- request_components = {
783
- :method => method,
784
- :uri => uri,
785
- :headers => headers,
786
- :body => body
787
- }
788
- # Verify that we have all pieces required to return an HTTP request
789
- request_components.each do |(key, value)|
790
- unless value
791
- raise ArgumentError, "Missing :#{key} parameter."
770
+ headers = headers.to_a if headers.kind_of?(Hash)
771
+ request_components = {
772
+ :method => method,
773
+ :uri => uri,
774
+ :headers => headers,
775
+ :body => body
776
+ }
777
+ # Verify that we have all pieces required to return an HTTP request
778
+ request_components.each do |(key, value)|
779
+ unless value
780
+ raise ArgumentError, "Missing :#{key} parameter."
781
+ end
792
782
  end
793
- end
794
- if !body.kind_of?(String) && body.respond_to?(:each)
795
- # Just in case we get a chunked body
796
- merged_body = StringIO.new
797
- body.each do |chunk|
798
- merged_body.write(chunk)
783
+ method = method.to_s.downcase.to_sym
784
+ request = Faraday::Request.create(method.to_s.downcase.to_sym) do |req|
785
+ req.url(Addressable::URI.parse(uri))
786
+ req.headers = Faraday::Utils::Headers.new(headers)
787
+ req.body = body
799
788
  end
800
- body = merged_body.string
801
- end
802
- if !body.kind_of?(String)
803
- raise TypeError, "Expected String, got #{body.class}."
804
- end
805
- method = method.to_s.downcase.to_sym
806
- headers << [
807
- 'Authorization',
808
- ::Signet::OAuth2.generate_bearer_authorization_header(
809
- self.access_token,
810
- options[:realm] ? [['realm', options[:realm]]] : nil
811
- )
812
- ]
813
- headers << ['Cache-Control', 'no-store']
814
- return Faraday::Request.create(method.to_s.downcase.to_sym) do |req|
815
- req.url(Addressable::URI.parse(uri))
816
- req.headers = Faraday::Utils::Headers.new(headers)
817
- req.body = body
818
789
  end
790
+
791
+ request['Authorization'] = ::Signet::OAuth2.generate_bearer_authorization_header(
792
+ self.access_token,
793
+ options[:realm] ? [['realm', options[:realm]]] : nil
794
+ )
795
+ request['Cache-Control'] = 'no-store'
796
+ return request
819
797
  end
820
798
 
821
799
  ##
@@ -18,7 +18,7 @@ unless defined? Signet::VERSION
18
18
  module VERSION
19
19
  MAJOR = 0
20
20
  MINOR = 3
21
- TINY = 2
21
+ TINY = 3
22
22
 
23
23
  STRING = [MAJOR, MINOR, TINY].join('.')
24
24
  end
@@ -690,4 +690,92 @@ describe Signet::OAuth1::Client, 'configured' do
690
690
  parameters['oauth_version'].should == '1.0'
691
691
  end
692
692
  end
693
+
694
+ describe 'with Faraday requests' do
695
+
696
+ it 'should correctly get the protected resource' do
697
+ # Repeat this because signatures change from test to test
698
+ 10.times do
699
+ original_request = Faraday::Request.create(:get) do |req|
700
+ req.url(Addressable::URI.parse('https://photos.example.net/photos?file=vacation.jpg&size=original'))
701
+ req.headers = Faraday::Utils::Headers.new([['Host', 'photos.example.net']])
702
+ req.body = ''
703
+ end
704
+
705
+ signed_request = @client.generate_authenticated_request(
706
+ :request => original_request
707
+ )
708
+
709
+ # Should be same request object
710
+ original_request['Authorization'].should == signed_request['Authorization']
711
+
712
+ signed_request.method.should == :get
713
+ signed_request.path.should ===
714
+ 'https://photos.example.net/photos?file=vacation.jpg&size=original'
715
+ authorization_header = signed_request.headers['Authorization']
716
+ signed_request.body.should == ''
717
+ parameters = ::Signet::OAuth1.parse_authorization_header(
718
+ authorization_header
719
+ ).inject({}) { |h,(k,v)| h[k]=v; h }
720
+ parameters.should_not have_key('oauth_client_credential_key')
721
+ parameters.should_not have_key('oauth_temporary_credential_key')
722
+ parameters.should_not have_key('oauth_token_credential_key')
723
+ parameters.should_not have_key('oauth_callback')
724
+ parameters['oauth_nonce'].should =~ /^\w+$/
725
+ parameters['oauth_timestamp'].should =~ /^\d+$/
726
+ parameters['oauth_signature_method'].should == 'HMAC-SHA1'
727
+ parameters['oauth_consumer_key'].should == @client.client_credential_key
728
+ parameters['oauth_token'].should == @client.token_credential_key
729
+ parameters['oauth_signature'].should =~ /^[a-zA-Z0-9\=\/\+]+$/
730
+ parameters['oauth_version'].should == '1.0'
731
+ end
732
+ end
733
+
734
+ it 'should correctly post the protected resource' do
735
+ # Repeat this because signatures change from test to test
736
+ 10.times do
737
+ original_request = Faraday::Request.create(:post) do |req|
738
+ req.url(Addressable::URI.parse('https://photos.example.net/photos'))
739
+ req.headers = Faraday::Utils::Headers.new([
740
+ ['Host', 'photos.example.net'],
741
+ ['Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'],
742
+ ['Content-Length', '31'],
743
+ ])
744
+ req.body = {
745
+ 'size' => 'original',
746
+ 'file' => 'vacation.jpg'
747
+ }
748
+ end
749
+
750
+ signed_request = @client.generate_authenticated_request(
751
+ :request => original_request
752
+ )
753
+
754
+ # Should be same request object
755
+ original_request['Authorization'].should == signed_request['Authorization']
756
+
757
+ signed_request.method.should == :post
758
+ signed_request.path.should ===
759
+ 'https://photos.example.net/photos'
760
+ authorization_header = signed_request.headers['Authorization']
761
+ # Can't rely on the order post parameters are encoded in.
762
+ signed_request.body.should include('file=vacation.jpg')
763
+ signed_request.body.should include('size=original')
764
+ parameters = ::Signet::OAuth1.parse_authorization_header(
765
+ authorization_header
766
+ ).inject({}) { |h,(k,v)| h[k]=v; h }
767
+ parameters.should_not have_key('oauth_client_credential_key')
768
+ parameters.should_not have_key('oauth_temporary_credential_key')
769
+ parameters.should_not have_key('oauth_token_credential_key')
770
+ parameters.should_not have_key('oauth_callback')
771
+ parameters['oauth_nonce'].should =~ /^\w+$/
772
+ parameters['oauth_timestamp'].should =~ /^\d+$/
773
+ parameters['oauth_signature_method'].should == 'HMAC-SHA1'
774
+ parameters['oauth_consumer_key'].should == @client.client_credential_key
775
+ parameters['oauth_token'].should == @client.token_credential_key
776
+ parameters['oauth_signature'].should =~ /^[a-zA-Z0-9\=\/\+]+$/
777
+ parameters['oauth_version'].should == '1.0'
778
+ end
779
+ end
780
+ end
693
781
  end
@@ -191,6 +191,16 @@ describe Signet::OAuth2::Client, 'configured for Google userinfo API' do
191
191
  end).should raise_error(TypeError)
192
192
  end
193
193
 
194
+ it 'should include extension parameters in token request' do
195
+ @client.grant_type = 'urn:ietf:params:oauth:grant-type:saml2-bearer'
196
+ @client.extension_parameters['assertion'] =
197
+ 'PEFzc2VydGlvbiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDU'
198
+
199
+ request = @client.generate_access_token_request
200
+ params = Addressable::URI.form_unencode(request.body)
201
+ params.should include(['assertion', 'PEFzc2VydGlvbiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDU'])
202
+ end
203
+
194
204
  it 'should allow the token to be updated' do
195
205
  issued_at = Time.now
196
206
  @client.update_token!(
@@ -248,20 +258,6 @@ describe Signet::OAuth2::Client, 'configured for Google userinfo API' do
248
258
  end).should raise_error(ArgumentError)
249
259
  end
250
260
 
251
- it 'should raise an error if client ID is missing' do
252
- @client.client_secret = 'secret-12345'
253
- (lambda do
254
- @client.fetch_access_token!
255
- end).should raise_error(ArgumentError)
256
- end
257
-
258
- it 'should raise an error if client secret is missing' do
259
- @client.client_id = 'client-12345'
260
- (lambda do
261
- @client.fetch_access_token!
262
- end).should raise_error(ArgumentError)
263
- end
264
-
265
261
  it 'should raise an error if unauthorized' do
266
262
  @client.client_id = 'client-12345'
267
263
  @client.client_secret = 'secret-12345'
@@ -488,20 +484,6 @@ JSON
488
484
  end).should raise_error(ArgumentError)
489
485
  end
490
486
 
491
- it 'should raise an error if a bogus request body is supplied' do
492
- @client.client_id = 'client-12345'
493
- @client.client_secret = 'secret-12345'
494
- @client.access_token = '12345'
495
- (lambda do
496
- @client.generate_authenticated_request(
497
- :realm => 'Example',
498
- :method => 'POST',
499
- :uri => 'http://www.example.com/',
500
- :body => :bogus
501
- )
502
- end).should raise_error(TypeError)
503
- end
504
-
505
487
  it 'should raise an error if the client does not have an access token' do
506
488
  @client.client_id = 'client-12345'
507
489
  @client.client_secret = 'secret-12345'
data/tasks/gem.rake CHANGED
@@ -1,4 +1,4 @@
1
- require "rake/gempackagetask"
1
+ require "rubygems/package_task"
2
2
 
3
3
  namespace :gem do
4
4
  GEM_SPEC = Gem::Specification.new do |s|
@@ -14,7 +14,6 @@ namespace :gem do
14
14
  s.homepage = PKG_HOMEPAGE
15
15
  s.summary = PKG_SUMMARY
16
16
  s.description = PKG_DESCRIPTION
17
- s.rubyforge_project = RUBY_FORGE_PROJECT
18
17
 
19
18
  s.files = PKG_FILES.to_a
20
19
 
@@ -30,12 +29,11 @@ namespace :gem do
30
29
  s.add_development_dependency("rake", "~> 0.8.3")
31
30
  s.add_development_dependency("rspec", "~> 1.1.11")
32
31
  s.add_development_dependency("launchy", "~> 2.0.0")
33
- s.add_development_dependency("diff-lcs", "~> 1.1.2")
34
32
 
35
33
  s.require_path = "lib"
36
34
  end
37
35
 
38
- Rake::GemPackageTask.new(GEM_SPEC) do |p|
36
+ Gem::PackageTask.new(GEM_SPEC) do |p|
39
37
  p.gem_spec = GEM_SPEC
40
38
  p.need_tar = true
41
39
  p.need_zip = true
data/tasks/wiki.rake CHANGED
@@ -4,7 +4,6 @@ $LOAD_PATH.unshift(
4
4
  $LOAD_PATH.unshift(File.expand_path('.'))
5
5
  $LOAD_PATH.uniq!
6
6
 
7
- require 'google/api_client'
8
7
  require 'rake'
9
8
  require 'rake/clean'
10
9
 
metadata CHANGED
@@ -1,162 +1,102 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: signet
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 3
9
- - 2
10
- version: 0.3.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.3
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Bob Aman
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-31 00:00:00 +03:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: addressable
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2160769840 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
18
+ requirements:
27
19
  - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 1
30
- segments:
31
- - 2
32
- - 2
33
- - 3
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.2.3
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: faraday
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2160769840
25
+ - !ruby/object:Gem::Dependency
26
+ name: faraday
27
+ requirement: &2160769240 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
29
+ requirements:
43
30
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- - 7
49
- - 0
31
+ - !ruby/object:Gem::Version
50
32
  version: 0.7.0
51
33
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: multi_json
55
34
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2160769240
36
+ - !ruby/object:Gem::Dependency
37
+ name: multi_json
38
+ requirement: &2160768620 !ruby/object:Gem::Requirement
57
39
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 23
62
- segments:
63
- - 1
64
- - 0
65
- - 0
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
66
43
  version: 1.0.0
67
44
  type: :runtime
68
- version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: jwt
71
45
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2160768620
47
+ - !ruby/object:Gem::Dependency
48
+ name: jwt
49
+ requirement: &2160768040 !ruby/object:Gem::Requirement
73
50
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 19
78
- segments:
79
- - 0
80
- - 1
81
- - 4
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
82
54
  version: 0.1.4
83
55
  type: :runtime
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: rake
87
56
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2160768040
58
+ - !ruby/object:Gem::Dependency
59
+ name: rake
60
+ requirement: &2160767280 !ruby/object:Gem::Requirement
89
61
  none: false
90
- requirements:
62
+ requirements:
91
63
  - - ~>
92
- - !ruby/object:Gem::Version
93
- hash: 57
94
- segments:
95
- - 0
96
- - 8
97
- - 3
64
+ - !ruby/object:Gem::Version
98
65
  version: 0.8.3
99
66
  type: :development
100
- version_requirements: *id005
101
- - !ruby/object:Gem::Dependency
102
- name: rspec
103
67
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2160767280
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &2160766640 !ruby/object:Gem::Requirement
105
72
  none: false
106
- requirements:
73
+ requirements:
107
74
  - - ~>
108
- - !ruby/object:Gem::Version
109
- hash: 5
110
- segments:
111
- - 1
112
- - 1
113
- - 11
75
+ - !ruby/object:Gem::Version
114
76
  version: 1.1.11
115
77
  type: :development
116
- version_requirements: *id006
117
- - !ruby/object:Gem::Dependency
118
- name: launchy
119
78
  prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *2160766640
80
+ - !ruby/object:Gem::Dependency
81
+ name: launchy
82
+ requirement: &2160766000 !ruby/object:Gem::Requirement
121
83
  none: false
122
- requirements:
84
+ requirements:
123
85
  - - ~>
124
- - !ruby/object:Gem::Version
125
- hash: 15
126
- segments:
127
- - 2
128
- - 0
129
- - 0
86
+ - !ruby/object:Gem::Version
130
87
  version: 2.0.0
131
88
  type: :development
132
- version_requirements: *id007
133
- - !ruby/object:Gem::Dependency
134
- name: diff-lcs
135
89
  prerelease: false
136
- requirement: &id008 !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- hash: 23
142
- segments:
143
- - 1
144
- - 1
145
- - 2
146
- version: 1.1.2
147
- type: :development
148
- version_requirements: *id008
149
- description: |
150
- Signet is an OAuth 1.0 / OAuth 2.0 implementation.
90
+ version_requirements: *2160766000
91
+ description: ! 'Signet is an OAuth 1.0 / OAuth 2.0 implementation.
151
92
 
93
+ '
152
94
  email: bobaman@google.com
153
95
  executables: []
154
-
155
96
  extensions: []
156
-
157
- extra_rdoc_files:
97
+ extra_rdoc_files:
158
98
  - README.md
159
- files:
99
+ files:
160
100
  - lib/compat/digest/hmac.rb
161
101
  - lib/compat/securerandom.rb
162
102
  - lib/signet/errors.rb
@@ -184,50 +124,40 @@ files:
184
124
  - tasks/gem.rake
185
125
  - tasks/git.rake
186
126
  - tasks/metrics.rake
187
- - tasks/rdoc.rake
188
- - tasks/rubyforge.rake
189
127
  - tasks/spec.rake
190
128
  - tasks/wiki.rake
191
129
  - tasks/yard.rake
192
130
  - website/index.html
193
131
  - CHANGELOG.md
132
+ - Gemfile
133
+ - Gemfile.lock
194
134
  - LICENSE
195
135
  - Rakefile
196
136
  - README.md
197
- has_rdoc: true
198
- homepage: http://signet.rubyforge.org/
137
+ homepage: http://code.google.com/p/oauth-signet/
199
138
  licenses: []
200
-
201
139
  post_install_message:
202
- rdoc_options:
140
+ rdoc_options:
203
141
  - --main
204
142
  - README.md
205
- require_paths:
143
+ require_paths:
206
144
  - lib
207
- required_ruby_version: !ruby/object:Gem::Requirement
145
+ required_ruby_version: !ruby/object:Gem::Requirement
208
146
  none: false
209
- requirements:
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- hash: 3
213
- segments:
214
- - 0
215
- version: "0"
216
- required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
152
  none: false
218
- requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- hash: 3
222
- segments:
223
- - 0
224
- version: "0"
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
225
157
  requirements: []
226
-
227
- rubyforge_project: signet
228
- rubygems_version: 1.3.7
158
+ rubyforge_project:
159
+ rubygems_version: 1.8.15
229
160
  signing_key:
230
161
  specification_version: 3
231
162
  summary: Package Summary
232
163
  test_files: []
233
-
data/tasks/rdoc.rake DELETED
@@ -1,26 +0,0 @@
1
- require "rake/rdoctask"
2
-
3
- namespace :doc do
4
- desc "Generate RDoc documentation"
5
- Rake::RDocTask.new do |rdoc|
6
- rdoc.rdoc_dir = "doc"
7
- rdoc.title = "#{PKG_NAME}-#{PKG_VERSION} Documentation"
8
- rdoc.options << "--line-numbers" << "--inline-source" <<
9
- "--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
10
- rdoc.template = "#{ENV["template"]}.rb" if ENV["template"]
11
- rdoc.rdoc_files.include("README.md", "CHANGELOG.md", "LICENSE")
12
- rdoc.rdoc_files.include("lib/**/*.rb")
13
- end
14
-
15
- desc "Generate ri locally for testing"
16
- task :ri do
17
- sh "rdoc --ri -o ri ."
18
- end
19
-
20
- desc "Remove ri products"
21
- task :clobber_ri do
22
- rm_r "ri" rescue nil
23
- end
24
- end
25
-
26
- task "clobber" => ["doc:clobber_rdoc", "doc:clobber_ri"]
data/tasks/rubyforge.rake DELETED
@@ -1,100 +0,0 @@
1
- namespace :gem do
2
- desc 'Package and upload to RubyForge'
3
- task :release => ["gem:package"] do |t|
4
- require 'rubyforge'
5
-
6
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
7
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PKG_VERSION
8
- pkg = "pkg/#{GEM_SPEC.full_name}"
9
-
10
- rf = RubyForge.new
11
- rf.configure
12
- puts 'Logging in...'
13
- rf.login
14
-
15
- c = rf.userconfig
16
- changelog = File.open("CHANGELOG.md") { |file| file.read }
17
- c['release_changes'] = changelog
18
- c['preformatted'] = true
19
-
20
- files = ["#{pkg}.tgz", "#{pkg}.zip", "#{pkg}.gem"]
21
-
22
- puts "Releasing #{PKG_NAME} v. #{PKG_VERSION}"
23
- rf.add_release RUBY_FORGE_PROJECT, PKG_NAME, PKG_VERSION, *files
24
- end
25
- end
26
-
27
- namespace :doc do
28
- desc "Publish RDoc to RubyForge"
29
- task :release => ["doc:yard"] do
30
- require "rake/contrib/sshpublisher"
31
- require "yaml"
32
-
33
- config = YAML.load(
34
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
35
- )
36
- host = "#{config['username']}@rubyforge.org"
37
- remote_dir = RUBY_FORGE_PATH + "/api"
38
- local_dir = "doc"
39
- system("mkdir -p website/api")
40
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
41
- end
42
- end
43
-
44
- namespace :spec do
45
- desc "Publish specdoc to RubyForge"
46
- task :release => ["spec:specdoc"] do
47
- require "rake/contrib/sshpublisher"
48
- require "yaml"
49
-
50
- config = YAML.load(
51
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
52
- )
53
- host = "#{config['username']}@rubyforge.org"
54
- remote_dir = RUBY_FORGE_PATH + "/specdoc"
55
- local_dir = "specdoc"
56
- system("mkdir -p website/specdoc")
57
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
58
- end
59
-
60
- namespace :rcov do
61
- desc "Publish coverage report to RubyForge"
62
- task :release => ["spec:rcov"] do
63
- require "rake/contrib/sshpublisher"
64
- require "yaml"
65
-
66
- config = YAML.load(
67
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
68
- )
69
- host = "#{config['username']}@rubyforge.org"
70
- remote_dir = RUBY_FORGE_PATH + "/coverage"
71
- local_dir = "coverage"
72
- system("mkdir -p website/coverage")
73
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
74
- end
75
- end
76
- end
77
-
78
- namespace :website do
79
- desc "Publish website to RubyForge"
80
- task :init do
81
- require "rake/contrib/sshpublisher"
82
- require "yaml"
83
-
84
- config = YAML.load(
85
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
86
- )
87
- host = "#{config['username']}@rubyforge.org"
88
- remote_dir = RUBY_FORGE_PATH
89
- local_dir = "website"
90
- system("mkdir -p website/api")
91
- system("mkdir -p website/specdoc")
92
- system("mkdir -p website/coverage")
93
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
94
- end
95
-
96
- desc "Publish website to RubyForge"
97
- task :release => [
98
- "website:init", "doc:release", "spec:release", "spec:rcov:release"
99
- ]
100
- end