oauth1 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4ca906e79f1d51b69b98d0b74a942eeaa9ec5666
4
- data.tar.gz: cd36870a23d68a0fc888c3a1ed55e4a551436dda
3
+ metadata.gz: 9e1478cf15e24757ee13844ef6f016018b3b67d2
4
+ data.tar.gz: 92cb424fc754762c2cf415257f4147fe9d4ab7e6
5
5
  SHA512:
6
- metadata.gz: eb8b8819e07b01661fc2ab05a1865fb857e4580b0a9233bb63d79a17780b05bca59542987e7ad5d20210e8b1a7b768304875f4728b3b12981d972aa6c55aed43
7
- data.tar.gz: cc6b1c07a31934fb4c741cad7a528c0cb3c1fad0de8a8455ab68f3cb9adbe07c5297e64ccee46b0545e633b0f67f86cd664351a242b3fc4c90f436a960e8d160
6
+ metadata.gz: 3de5d792698b6133079ec7687717474911a8c4711125ad466ea8af8e60dbd407d7a16883d0d2caeb3045dac0dd0782c3d80a51153f619542312ffed165d1ba57
7
+ data.tar.gz: a3c611a190c7e5f8df6964ee9e5abb0cfdaab4bed454e92f7424e82305cde7938d0ff3b6760c9dea0c57af6091dda9c99624241a133eec44abe50b1760ed2457
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
4
+ - 2.1.1
5
+ - 2.1.0
6
+ - 2.0.0
7
+ - 1.9.3
8
+ - jruby-19mode # JRuby in 1.9 mode
9
+ script: bundle exec rspec spec
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
+ [![Build Status](https://travis-ci.org/lunks/oauth1.svg?branch=master)](https://travis-ci.org/lunks/oauth1)
2
+ [![Dependency Status](https://gemnasium.com/lunks/oauth1.svg)](https://gemnasium.com/lunks/oauth1)
3
+ [![Code Climate](https://codeclimate.com/github/lunks/oauth1/badges/gpa.svg)](https://codeclimate.com/github/lunks/oauth1)
4
+
1
5
  # OAuth1
2
6
 
3
- Simple OAuth 1.0 helper. Take a look at the specs on how to use it.
7
+ Simple helper that helps you build the url needed to authenticate into a service using OAuth 1.0.
4
8
 
5
9
  ## Installation
6
10
 
@@ -16,6 +20,25 @@ Or install it yourself as:
16
20
 
17
21
  $ gem install oauth1
18
22
 
23
+ ## Usage
24
+
25
+ # Setup data
26
+ method = :get
27
+ domain_url = 'http://some.app.com/auth/'
28
+ user_date = { uid: user_email + encrypted_password }
29
+ oauth_config = { consumer_key: ENV['OAUTH_KEY'], consumer_secret: ENV['OAUTH_SECRET'] }
30
+
31
+ # Usage
32
+ oauth = Oauth::Helper.new(method, domain_url, user_data, oauth_config)
33
+
34
+ # Returns
35
+ oauth.signature_base # Returns the signature appended in the auth url
36
+ oauth.full_url # The proper url used for authentication
37
+
38
+
39
+ After that, all you need to do is to redirect the user to `oauth.full_url`.
40
+
41
+
19
42
  ## Contributing
20
43
 
21
44
  1. Fork it
@@ -3,6 +3,7 @@ require 'addressable/uri'
3
3
  require 'cgi'
4
4
  require 'base64'
5
5
  require 'openssl'
6
+ require 'securerandom'
6
7
 
7
8
  module OAuth1
8
9
  class Helper
@@ -13,24 +14,21 @@ module OAuth1
13
14
  version: "1.0",
14
15
  signature_method: 'HMAC-SHA1',
15
16
  timestamp: Time.now.to_i.to_s,
16
- nonce: SecureRandom.uuid,
17
- token: ""
17
+ nonce: SecureRandom.uuid
18
18
  })
19
19
 
20
20
  @consumer_secret = options.delete(:consumer_secret)
21
+ @token_secret = options.delete(:token_secret)
21
22
  @url_params = params.merge(prepend_oauth_to_key(options))
22
-
23
23
  @method = method.to_s.upcase
24
24
  @url = Addressable::URI.parse(url)
25
25
  end
26
26
 
27
27
  def signature_base
28
+ @url_params.delete(:oauth_signature)
28
29
  [@method, @url.to_s, url_with_params.query].map{|v| CGI.escape(v) }.join('&')
29
30
  end
30
31
 
31
- def append_signature_to_params
32
- @url_params[:oauth_signature] = hmac_sha1_signature("#{CGI.escape(@consumer_secret)}&", signature_base)
33
- end
34
32
 
35
33
  def full_url
36
34
  append_signature_to_params
@@ -38,16 +36,24 @@ module OAuth1
38
36
  end
39
37
 
40
38
  private
39
+ def key
40
+ @token_secret ? "#{CGI.escape(@consumer_secret)}&#{CGI.escape(@token_secret)}" : "#{CGI.escape(@consumer_secret)}&"
41
+ end
42
+
41
43
  def url_with_params
42
44
  @url.dup.tap{|url| url.query_values = url_params}
43
45
  end
44
46
 
47
+ def append_signature_to_params
48
+ @url_params[:oauth_signature] = hmac_sha1_signature(key, signature_base)
49
+ end
50
+
45
51
  def prepend_oauth_to_key(options)
46
52
  Hash[options.map{|key, value| ["oauth_#{key}".to_sym, value]}]
47
53
  end
48
54
 
49
55
  def hmac_sha1_signature(key, signature_string)
50
- digest = OpenSSL::Digest::Digest.new('sha1')
56
+ digest = OpenSSL::Digest.new('sha1')
51
57
  hmac = OpenSSL::HMAC.digest(digest, key, signature_string)
52
58
  Base64.encode64(hmac).chomp.gsub(/\n/, '')
53
59
  end
@@ -1,3 +1,3 @@
1
1
  module OAuth1
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.3'
3
3
  end
@@ -1,66 +1,66 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe OAuth1::Helper do
4
- let(:url) { "http://example.com" }
5
- let(:params) { {my_special_param: "params"} }
6
- let(:consumer_key) { "some_key" }
7
- let(:consumer_secret) { "some_secret" }
4
+ let(:url) { 'http://example.com' }
5
+ let(:params) { {user_specified_param: 'params'} }
6
+ let(:consumer_key) { 'some_key' }
7
+ let(:consumer_secret) { 'some_secret' }
8
8
 
9
9
  let(:helper) { OAuth1::Helper.new(:get, url, params, {consumer_key: consumer_key, consumer_secret: consumer_secret}) }
10
10
 
11
- describe "#url_params" do
11
+ describe '#url_params' do
12
12
  let(:url_params) { helper.url_params }
13
- it "prepends oauth_ to option keys" do
14
- url_params.keys.should include(:oauth_consumer_key)
13
+
14
+ it 'prepends "oauth_" to option keys' do
15
+ expect(url_params.keys).to include(:oauth_consumer_key)
15
16
  end
16
17
 
17
- it "has some default options" do
18
- url_params.keys.should include(:oauth_version)
18
+ it 'has some default options' do
19
+ expect(url_params.keys).to include(:oauth_version)
19
20
  end
20
21
 
21
- it "doesn't include the consumer_secret" do
22
- url_params.keys.should_not include("oauth_consumer_secret")
22
+ it 'does not include the consumer_secret' do
23
+ expect(url_params.keys).to_not include('oauth_consumer_secret')
23
24
  end
24
25
 
25
- it "has oauth_token as an empty string" do
26
- url_params[:oauth_token].should eq("")
26
+ it 'does not have oauth_token as a param' do
27
+ expect(url_params[:oauth_token]).to be_nil
27
28
  end
28
- end
29
29
 
30
- describe "#url_params" do
31
- let(:url_params) { helper.url_params }
32
- it "returns an array with the options and the params" do
33
- url_params.should have(7).params
30
+ it 'returns an array with the options and the params' do
31
+ expect(url_params.keys).to have(6).items
34
32
  end
35
33
 
36
- it "has the user-specified params" do
37
- url_params.keys.should include(:my_special_param)
34
+ it 'has any user specified params' do
35
+ expect(url_params.keys).to include(:user_specified_param)
38
36
  end
39
37
  end
40
38
 
41
- describe "#signature_base" do
39
+ describe '#signature_base' do
42
40
  let(:signature_base) { helper.signature_base }
43
- it "returns an escaped string with method" do
44
- signature_base.should match(/GET/)
41
+
42
+ it { expect(signature_base).to be_a(String) }
43
+
44
+ it 'contains the http method' do
45
+ expect(signature_base).to match(/GET/)
45
46
  end
46
47
 
47
- it "returns an escaped string with url" do
48
- signature_base.should match(/example.com/)
48
+ it 'contains the url' do
49
+ expect(signature_base).to match(/example.com/)
49
50
  end
50
51
 
51
- it "returns an escaped string with the params" do
52
- signature_base.should match(/oauth_consumer_key/)
53
- signature_base.should match(/my_special_param/)
52
+ it 'contains the params' do
53
+ expect(signature_base).to match(/oauth_consumer_key/)
54
+ expect(signature_base).to match(/user_specified_param/)
54
55
  end
55
56
  end
56
57
 
57
- describe "#full_url" do
58
+ describe '#full_url' do
58
59
  let(:full_url) { helper.full_url }
59
- it "returns the url with the params for auth" do
60
- full_url.should match(/oauth_consumer_key=#{consumer_key}/)
61
- full_url.should match(/oauth_signature_method=HMAC-SHA1/)
62
- full_url.should match(/oauth_signature=/)
63
- full_url.should match(/my_special_param/)
64
- end
60
+
61
+ it { expect(full_url).to match(/oauth_consumer_key=#{consumer_key}/) }
62
+ it { expect(full_url).to match(/oauth_signature_method=HMAC-SHA1/) }
63
+ it { expect(full_url).to match(/oauth_signature=/) }
64
+ it { expect(full_url).to match(/user_specified_param/) }
65
65
  end
66
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matheus Bras
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-22 00:00:00.000000000 Z
12
+ date: 2015-07-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -92,6 +92,7 @@ files:
92
92
  - .gitignore
93
93
  - .ruby-gemset
94
94
  - .ruby-version
95
+ - .travis.yml
95
96
  - Gemfile
96
97
  - LICENSE.txt
97
98
  - README.md
@@ -122,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
123
  version: '0'
123
124
  requirements: []
124
125
  rubyforge_project:
125
- rubygems_version: 2.0.3
126
+ rubygems_version: 2.0.14
126
127
  signing_key:
127
128
  specification_version: 4
128
129
  summary: In case you need to craft an OAuth 1.0 URL with HMAC-SHA1, this may be helpful.