omniauth-etsy 0.0.2.alpha → 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/README.md +61 -8
- data/lib/omniauth-etsy/version.rb +1 -1
- data/lib/omniauth/strategies/etsy.rb +23 -15
- metadata +9 -12
data/README.md
CHANGED
@@ -1,30 +1,81 @@
|
|
1
1
|
# OmniAuth Etsy
|
2
2
|
|
3
|
-
|
3
|
+
An unofficial [OmniAuth](https://github.com/intridea/omniauth) strategy for Etsy. To use it, you'll need OmniAuth and a registered application on [Etsy](https://www.etsy.com/developers/register).
|
4
4
|
|
5
|
-
##
|
5
|
+
## Usage
|
6
6
|
|
7
|
-
|
7
|
+
`OmniAuth::Etsy` is Rack middleware. Below are examples written specifically for Rails 3.1+, however it can be used in other frameworks based off of Rack (Sinatra, etc). See the [OmniAuth docs](https://github.com/intridea/omniauth) for detailed usage examples.
|
8
|
+
|
9
|
+
Create an initializer file, and tell OmniAuth you'd like to register Etsy as a provider:
|
10
|
+
|
11
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
12
|
+
provider :etsy, ENV['ETSY_TOKEN'], ENV['ETSY_SECRET']
|
13
|
+
end
|
14
|
+
|
15
|
+
Etsy allows for sandbox API requests; to utilize it add sandbox to your config:
|
8
16
|
|
9
17
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
10
|
-
provider :etsy, '
|
18
|
+
provider :etsy, ENV['ETSY_TOKEN'], ENV['ETSY_SECRET'], :sandbox => true
|
11
19
|
end
|
12
20
|
|
13
|
-
|
21
|
+
Note: Etsy's sandbox API may return rather _unusual_ results. I advise when making read-only requests to simply forgo the sandbox.
|
22
|
+
|
23
|
+
Optionally, you may also pass in comma-separated [Permission Scopes](http://www.etsy.com/developers/documentation/getting_started/oauth#section_permission_scopes):
|
14
24
|
|
15
25
|
|
16
26
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
17
|
-
provider :etsy, '
|
27
|
+
provider :etsy, ENV['ETSY_TOKEN'], ENV['ETSY_SECRET'], :scope => 'email_r,profile_r,listings_r'
|
18
28
|
end
|
19
29
|
|
20
30
|
Note: If for some reason you receive a 400 error, it's probably your scopes.
|
21
31
|
|
32
|
+
## Auth hash
|
33
|
+
|
34
|
+
On callback this is what you can expect in your `request.env['omniauth.auth']` info hash:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
provider: etsy
|
38
|
+
uid: 12341241
|
39
|
+
info:
|
40
|
+
nickname: 'nickname'
|
41
|
+
email: 'you@email.com'
|
42
|
+
user_id: 12341241
|
43
|
+
first_name: 'Bill'
|
44
|
+
last_name: 'Clinton'
|
45
|
+
name: 'Bill Clinton'
|
46
|
+
image: 'http://www.etsy.com/images/avatars/default_avatar_75px.png'
|
47
|
+
profile:
|
48
|
+
user_profile_id: 12341241
|
49
|
+
user_id: 12341241
|
50
|
+
login_name: 'nickname'
|
51
|
+
bio: ''
|
52
|
+
gender: private
|
53
|
+
birth_month: '0'
|
54
|
+
birth_day: '0'
|
55
|
+
birth_year: '0'
|
56
|
+
join_tsz: 1337366290
|
57
|
+
materials: ''
|
58
|
+
country_id: ''
|
59
|
+
region: ''
|
60
|
+
city: ''
|
61
|
+
location: ''
|
62
|
+
avatar_id: ''
|
63
|
+
lat: ''
|
64
|
+
lon: ''
|
65
|
+
transaction_buy_count: 0
|
66
|
+
transaction_sold_count: 0
|
67
|
+
is_seller: false
|
68
|
+
image_url_75x75: 'http://www.etsy.com/images/avatars/default_avatar_75px.png'
|
69
|
+
first_name: 'Bill'
|
70
|
+
last_name: 'Clinton'
|
71
|
+
```
|
72
|
+
|
22
73
|
## Installation
|
23
74
|
|
24
75
|
Add OmniAuth and OmniAuth::Etsy to your application's Gemfile:
|
25
76
|
|
26
77
|
gem 'omniauth', '~>1.0'
|
27
|
-
gem 'omniauth-etsy', '0.0
|
78
|
+
gem 'omniauth-etsy', '~>0.1.0'
|
28
79
|
|
29
80
|
And then execute:
|
30
81
|
|
@@ -32,9 +83,11 @@ And then execute:
|
|
32
83
|
|
33
84
|
Or install it yourself as:
|
34
85
|
|
35
|
-
|
86
|
+
$ gem install omniauth
|
36
87
|
$ gem install omniauth-etsy
|
37
88
|
|
89
|
+
`OmniAuth::Etsy` has been used on both Ruby 1.9.2 and REE 1.8.7.
|
90
|
+
|
38
91
|
## Contributing
|
39
92
|
|
40
93
|
1. Fork it
|
@@ -3,8 +3,9 @@ require 'omniauth-oauth'
|
|
3
3
|
module OmniAuth
|
4
4
|
module Strategies
|
5
5
|
class Etsy < OmniAuth::Strategies::OAuth
|
6
|
+
|
6
7
|
option :client_options, {
|
7
|
-
:site => "http://
|
8
|
+
:site => "http://openapi.etsy.com/v2",
|
8
9
|
:request_token_path => "/oauth/request_token",
|
9
10
|
:access_token_path => "/oauth/access_token",
|
10
11
|
:authorize_url => "https://www.etsy.com/oauth/signin"
|
@@ -17,31 +18,38 @@ module OmniAuth
|
|
17
18
|
'nickname' => raw_info['login_name'],
|
18
19
|
'email' => raw_info['primary_email'],
|
19
20
|
'user_id' => raw_info['user_id'],
|
20
|
-
|
21
|
+
'name' => "#{profile_info['first_name']} #{profile_info['last_name']}",
|
22
|
+
'first_name' => profile_info['first_name'],
|
23
|
+
'last_name' => profile_info['last_name'],
|
24
|
+
'image' => profile_info['image_url_75x75'],
|
25
|
+
'profile' => profile_info
|
26
|
+
}
|
21
27
|
end
|
22
28
|
|
23
29
|
def request_phase
|
24
30
|
if options.scope
|
25
|
-
options.request_params.merge!(:scope =>
|
31
|
+
options.request_params.merge!(:scope => options.scope.gsub(',', ' '))
|
26
32
|
end
|
33
|
+
prep_sandbox
|
27
34
|
super
|
28
35
|
end
|
29
36
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
'name' => "#{profile['first_name']} #{profile['last_name']}"
|
39
|
-
}
|
40
|
-
else
|
41
|
-
{}
|
37
|
+
def callback_phase
|
38
|
+
prep_sandbox
|
39
|
+
super
|
40
|
+
end
|
41
|
+
|
42
|
+
def prep_sandbox
|
43
|
+
if options.sandbox
|
44
|
+
options.client_options.merge!(:site => "http://sandbox.openapi.etsy.com/v2")
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
48
|
+
def profile_info
|
49
|
+
@profile_info ||= user_hash['Profile']
|
50
|
+
@profile_info.each { |k,v| @profile_info[k] = '' if v == nil }
|
51
|
+
end
|
52
|
+
|
45
53
|
def raw_info
|
46
54
|
@data ||= user_hash
|
47
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-etsy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
- alpha
|
11
|
-
version: 0.0.2.alpha
|
10
|
+
version: 0.1.0
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- Jeff Mehlhoff
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2012-05-
|
18
|
+
date: 2012-05-28 00:00:00 -07:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -103,14 +102,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
103
|
none: false
|
105
104
|
requirements:
|
106
|
-
- - "
|
105
|
+
- - ">="
|
107
106
|
- !ruby/object:Gem::Version
|
108
|
-
hash:
|
107
|
+
hash: 3
|
109
108
|
segments:
|
110
|
-
-
|
111
|
-
|
112
|
-
- 1
|
113
|
-
version: 1.3.1
|
109
|
+
- 0
|
110
|
+
version: "0"
|
114
111
|
requirements: []
|
115
112
|
|
116
113
|
rubyforge_project:
|