omniauth-nk 1.1

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.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.rbc
2
+ *.sassc
3
+ .sass-cache
4
+ capybara-*.html
5
+ .rspec
6
+ /.bundle
7
+ /vendor/bundle
8
+ /log/*
9
+ /tmp/*
10
+ /db/*.sqlite3
11
+ /public/system/*
12
+ /coverage/
13
+ /spec/tmp/*
14
+ **.orig
15
+ rerun.txt
16
+ pickle-email-*.html
17
+ .idea
18
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2012 Nasza Klasa Spółka z ograniczoną odpowiedzialnością
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ ## nk.pl OAuth2 Strategy for OmniAuth 1.0
2
+
3
+ Supports the OAuth 2.0 server-side authentication, and OAuth user data endpoint. To get application key/secret please go to http://developers.nk.pl
4
+
5
+ ## Installing
6
+ Add to your `Gemfile`:
7
+
8
+ ```ruby
9
+ gem 'omniauth-nk'
10
+ ```
11
+ Then `bundle install`.
12
+
13
+ ## Usage
14
+
15
+ Put into your config/initializers/omniauth.rb
16
+
17
+ ```ruby
18
+ Rails.application.config.middleware.use OmniAuth::Builder do
19
+ provider :nk, ENV['NK_KEY'], ENV['NK_SECRET']
20
+ end
21
+
22
+ OmniAuth.config.on_failure do |env|
23
+ [302, {'Location' => "#{env['SCRIPT_NAME']}#{OmniAuth.config.path_prefix}/failure?message=#{env['omniauth.error.type']}", 'Content-Type'=> 'text/html'}, []]
24
+ end
25
+ ```
26
+
27
+ Get own application key/secret from http://developers.nk.pl
28
+
29
+ ## Auth Hash
30
+
31
+ Here's an example *Auth Hash* available in request
32
+
33
+ ```ruby
34
+ {
35
+ :provider => 'nk',
36
+ :uid => 'person.acbdefgh',
37
+ :info => {
38
+ :name => 'Jan Kowalski',
39
+ :email => 'jan@kowalski.pl',
40
+ :age => 33,
41
+ :gender => 'male'
42
+ :location => 'Wrocław',
43
+ :image => 'http://photos.nasza-klasa.pl/125/10/thumb/6646b702e7.jpeg',
44
+ },
45
+ :credentials => {
46
+ :token => 'ABCDEF...',
47
+ :expires_at => 1321747205,
48
+ :expires => true
49
+ },
50
+ :extra => {
51
+ :raw_info => {
52
+ :entry => {
53
+ [see http://developers.nk.pl/wiki/Rest_Service_Profile_Information]
54
+ }
55
+ }
56
+ }
57
+ }
58
+ ```
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
@@ -0,0 +1,2 @@
1
+ require "omniauth-nk/version"
2
+ require 'omniauth/strategies/nk'
@@ -0,0 +1,5 @@
1
+ module Omniauth
2
+ module Nk
3
+ VERSION = "1.1"
4
+ end
5
+ end
@@ -0,0 +1,78 @@
1
+ require 'omniauth-oauth2'
2
+ require 'multi_json'
3
+ require 'oauth'
4
+
5
+ module OmniAuth
6
+ module Strategies
7
+ class Nk < OmniAuth::Strategies::OAuth2
8
+
9
+ DEFAULT_RESPONSE_TYPE = 'code'
10
+ DEFAULT_GRANT = 'authorization_code'
11
+ DEFAULT_SCOPE = 'BASIC_PROFILE_ROLE,EMAIL_PROFILE_ROLE'
12
+
13
+ option :name, "nk"
14
+
15
+ option :client_options, {
16
+ :site => 'https://nk.pl',
17
+ :authorize_url => '/oauth2/login',
18
+ :token_url => '/oauth2/token'
19
+ }
20
+
21
+ def callback_phase
22
+ if request.params['error'] || request.params['error_description']
23
+ fail!(request.params['error'], CallbackError.new(request.params['error'], request.params['error_description'], request.params['error_uri']))
24
+ end
25
+ super
26
+ end
27
+
28
+ def authorize_params
29
+ super.tap do |params|
30
+ params[:scope] ||= DEFAULT_SCOPE
31
+ params[:response_type] ||= DEFAULT_RESPONSE_TYPE
32
+ params[:client_id] = client.id
33
+ end
34
+ end
35
+
36
+ def token_params
37
+ super.tap do |params|
38
+ params[:scope] ||= DEFAULT_SCOPE
39
+ params[:grant_type] ||= DEFAULT_GRANT
40
+ params[:client_id] = client.id
41
+ params[:client_secret] = client.secret
42
+ end
43
+ end
44
+
45
+ uid do
46
+ raw_info['entry']['id']
47
+ end
48
+
49
+ info do
50
+ row = raw_info['entry']
51
+ {
52
+ :name => row['name']['formatted'],
53
+ :email => row['emails'].instance_of?(Array) ? row['emails'].last['value'] : nil,
54
+ :age => row['age'].to_i,
55
+ :gender => row['gender'],
56
+ :location => row['currentLocation']['region'],
57
+ :image => row['thumbnailUrl'],
58
+ }
59
+ end
60
+
61
+ extra do
62
+ { :raw_info => raw_info }
63
+ end
64
+
65
+ def raw_info
66
+ if @raw_info.nil?
67
+ # OAuth is used to get user data
68
+ fields = %w(id name emails age gender currentLocation thumbnailUrl)
69
+ request_url = "http://opensocial.nk-net.pl/v09/social/rest/people/@me?fields=#{fields.join(',')}&nk_token=#{credentials['token']}"
70
+
71
+ consumer = OAuth::Consumer.new(options.client_id, options.client_secret, {:site => 'http://opensocial.nk-net.pl'})
72
+ @raw_info = MultiJson.decode(OAuth::AccessToken.new(consumer, credentials['token']).get(request_url).body.to_s)
73
+ end
74
+ @raw_info
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'omniauth-nk/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "omniauth-nk"
7
+ gem.version = Omniauth::Nk::VERSION
8
+ gem.authors = ["Arkadiusz Kurylowicz, Nasza Klasa Spolka z ograniczona odpowiedzialnoscia"]
9
+ gem.date = '2012-05-25'
10
+ gem.email = ["arkadiusz.kurylowicz@nasza-klasa.pl"]
11
+ gem.description = %q{OmniAuth Strategy for nk.pl using OAuth2}
12
+ gem.summary = %q{OmniAuth Strategy for nk.pl using OAuth2}
13
+ gem.homepage = "https://github.com/naszaklasa/omniauth-nk"
14
+
15
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ gem.files = `git ls-files`.split("\n")
17
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'omniauth', '~> 1.0'
21
+ gem.add_dependency 'omniauth-oauth2', '~> 1.0'
22
+ gem.add_dependency 'multi_json', '~> 1.0'
23
+ gem.add_dependency 'oauth', '~> 0.4.6'
24
+
25
+ gem.add_development_dependency 'rake'
26
+ gem.add_development_dependency 'rspec', '~> 2.8'
27
+ end
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: omniauth-nk
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 1
8
+ version: "1.1"
9
+ platform: ruby
10
+ authors:
11
+ - Arkadiusz Kurylowicz, Nasza Klasa Spolka z ograniczona odpowiedzialnoscia
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2012-05-25 00:00:00 +02:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: omniauth
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 0
30
+ version: "1.0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: omniauth-oauth2
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 0
44
+ version: "1.0"
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: multi_json
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 0
58
+ version: "1.0"
59
+ type: :runtime
60
+ version_requirements: *id003
61
+ - !ruby/object:Gem::Dependency
62
+ name: oauth
63
+ prerelease: false
64
+ requirement: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ - 4
72
+ - 6
73
+ version: 0.4.6
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: rake
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ type: :development
88
+ version_requirements: *id005
89
+ - !ruby/object:Gem::Dependency
90
+ name: rspec
91
+ prerelease: false
92
+ requirement: &id006 !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ segments:
98
+ - 2
99
+ - 8
100
+ version: "2.8"
101
+ type: :development
102
+ version_requirements: *id006
103
+ description: OmniAuth Strategy for nk.pl using OAuth2
104
+ email:
105
+ - arkadiusz.kurylowicz@nasza-klasa.pl
106
+ executables: []
107
+
108
+ extensions: []
109
+
110
+ extra_rdoc_files: []
111
+
112
+ files:
113
+ - .gitignore
114
+ - Gemfile
115
+ - LICENSE
116
+ - README.md
117
+ - Rakefile
118
+ - lib/omniauth-nk.rb
119
+ - lib/omniauth-nk/version.rb
120
+ - lib/omniauth/strategies/nk.rb
121
+ - omniauth-nk.gemspec
122
+ has_rdoc: true
123
+ homepage: https://github.com/naszaklasa/omniauth-nk
124
+ licenses: []
125
+
126
+ post_install_message:
127
+ rdoc_options: []
128
+
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ segments:
145
+ - 0
146
+ version: "0"
147
+ requirements: []
148
+
149
+ rubyforge_project:
150
+ rubygems_version: 1.3.7
151
+ signing_key:
152
+ specification_version: 3
153
+ summary: OmniAuth Strategy for nk.pl using OAuth2
154
+ test_files: []
155
+