omniauth-linkedin 0.0.8 → 0.1.0
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/example/config.ru +4 -1
- data/lib/omniauth-linkedin/version.rb +1 -1
- data/lib/omniauth/strategies/linkedin.rb +34 -2
- data/spec/omniauth/strategies/linkedin_spec.rb +20 -0
- data/todo.txt +1 -0
- metadata +11 -6
data/example/config.ru
CHANGED
@@ -2,6 +2,9 @@ require 'bundler/setup'
|
|
2
2
|
require 'sinatra/base'
|
3
3
|
require 'omniauth-linkedin'
|
4
4
|
|
5
|
+
ENV['LINKEDIN_CONSUMER_KEY'] = "eumx4m8w39qb"
|
6
|
+
ENV['LINKEDIN_CONSUMER_SECRET'] = "PczJNDDLYic6kQOL"
|
7
|
+
|
5
8
|
class App < Sinatra::Base
|
6
9
|
get '/' do
|
7
10
|
redirect '/auth/linkedin'
|
@@ -18,7 +21,7 @@ class App < Sinatra::Base
|
|
18
21
|
end
|
19
22
|
end
|
20
23
|
|
21
|
-
use Rack::Session::Cookie
|
24
|
+
use Rack::Session::Cookie, :secret => "change_me"
|
22
25
|
|
23
26
|
use OmniAuth::Builder do
|
24
27
|
#note that the scope is different from the default
|
@@ -19,14 +19,19 @@ module OmniAuth
|
|
19
19
|
uid{ raw_info['id'] }
|
20
20
|
|
21
21
|
info do
|
22
|
+
name = [raw_info['firstName'], raw_info['lastName']].compact.join(' ').strip || nil
|
23
|
+
name = nil_if_empty(name)
|
22
24
|
{
|
25
|
+
:name => name,
|
23
26
|
:email => raw_info['emailAddress'],
|
27
|
+
:nickname => name,
|
24
28
|
:first_name => raw_info['firstName'],
|
25
29
|
:last_name => raw_info['lastName'],
|
26
|
-
:
|
27
|
-
:headline => raw_info['headline'],
|
30
|
+
:location => parse_location(raw_info['location']),
|
28
31
|
:description => raw_info['headline'],
|
29
32
|
:image => raw_info['pictureUrl'],
|
33
|
+
:phone => nil,
|
34
|
+
:headline => raw_info['headline'],
|
30
35
|
:industry => raw_info['industry'],
|
31
36
|
:urls => {
|
32
37
|
'public_profile' => raw_info['publicProfileUrl']
|
@@ -47,6 +52,33 @@ module OmniAuth
|
|
47
52
|
options.request_params[:scope] = options.scope.gsub("+", " ")
|
48
53
|
super
|
49
54
|
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def parse_location(location_hash = {})
|
59
|
+
location_hash ||= {}
|
60
|
+
location_name = extract_location_name(location_hash)
|
61
|
+
country_code = extract_country_code(location_hash)
|
62
|
+
build_location_value(location_name, country_code)
|
63
|
+
end
|
64
|
+
|
65
|
+
def extract_location_name(location_hash = {})
|
66
|
+
nil_if_empty(location_hash["name"])
|
67
|
+
end
|
68
|
+
|
69
|
+
def extract_country_code(location_hash = {})
|
70
|
+
country_hash = location_hash["country"] || {}
|
71
|
+
country_code = nil_if_empty(country_hash["code"])
|
72
|
+
country_code = (country_code ? country_code.upcase : nil)
|
73
|
+
end
|
74
|
+
|
75
|
+
def build_location_value(location_name, country_code)
|
76
|
+
nil_if_empty([location_name, country_code].compact.join(', '))
|
77
|
+
end
|
78
|
+
|
79
|
+
def nil_if_empty(value)
|
80
|
+
(value.nil? || value.empty?) ? nil : value
|
81
|
+
end
|
50
82
|
end
|
51
83
|
end
|
52
84
|
end
|
@@ -36,4 +36,24 @@ describe "OmniAuth::Strategies::LinkedIn" do
|
|
36
36
|
subject.uid.should eq('123')
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
40
|
+
context 'returns info hash conformant with omniauth auth hash schema' do
|
41
|
+
before :each do
|
42
|
+
subject.stub(:raw_info) { {} }
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'and therefore has all the necessary fields' do
|
46
|
+
it {subject.info.should have_key :name}
|
47
|
+
it {subject.info.should have_key :name}
|
48
|
+
it {subject.info.should have_key :email}
|
49
|
+
it {subject.info.should have_key :nickname}
|
50
|
+
it {subject.info.should have_key :first_name}
|
51
|
+
it {subject.info.should have_key :last_name}
|
52
|
+
it {subject.info.should have_key :location}
|
53
|
+
it {subject.info.should have_key :description}
|
54
|
+
it {subject.info.should have_key :image}
|
55
|
+
it {subject.info.should have_key :phone}
|
56
|
+
it {subject.info.should have_key :urls}
|
57
|
+
end
|
58
|
+
end
|
39
59
|
end
|
data/todo.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
- need some more tests to make sure location can be parsed correctly
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-linkedin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: omniauth-oauth
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- omniauth-linkedin.gemspec
|
114
114
|
- spec/omniauth/strategies/linkedin_spec.rb
|
115
115
|
- spec/spec_helper.rb
|
116
|
+
- todo.txt
|
116
117
|
homepage: https://github.com/skorks/omniauth-linkedin
|
117
118
|
licenses: []
|
118
119
|
post_install_message:
|
@@ -125,18 +126,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
126
|
- - ! '>='
|
126
127
|
- !ruby/object:Gem::Version
|
127
128
|
version: '0'
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
hash: 2699125881048178184
|
128
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
133
|
none: false
|
130
134
|
requirements:
|
131
135
|
- - ! '>='
|
132
136
|
- !ruby/object:Gem::Version
|
133
137
|
version: '0'
|
138
|
+
segments:
|
139
|
+
- 0
|
140
|
+
hash: 2699125881048178184
|
134
141
|
requirements: []
|
135
142
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.8.
|
143
|
+
rubygems_version: 1.8.24
|
137
144
|
signing_key:
|
138
145
|
specification_version: 3
|
139
146
|
summary: LinkedIn strategy for OmniAuth.
|
140
|
-
test_files:
|
141
|
-
- spec/omniauth/strategies/linkedin_spec.rb
|
142
|
-
- spec/spec_helper.rb
|
147
|
+
test_files: []
|