1
0
Fork 0
mirror of https://github.com/omniauth/omniauth.git synced 2022-11-09 12:31:49 -05:00

Merging a (squashed) doit.im pull request. Closes #222.

This commit is contained in:
Michael Bleigh 2011-03-09 11:07:43 -06:00
parent a7ac509f4c
commit a29a5e6d1f
4 changed files with 67 additions and 0 deletions

View file

@ -40,6 +40,7 @@ OmniAuth currently supports the following external providers:
* Instagram (credit: [kiyoshi](https://github.com/kiyoshi)) * Instagram (credit: [kiyoshi](https://github.com/kiyoshi))
* Mixi (credit: [kiyoshi](https://github.com/kiyoshi)) * Mixi (credit: [kiyoshi](https://github.com/kiyoshi))
* Evernote (credit: [szimek](https://github.com/szimek)) * Evernote (credit: [szimek](https://github.com/szimek))
* Doit.im (credit: [chouti](https://github.com/chouti))
* Flickr (credit: [pchilton](https://github.com/pchilton)) * Flickr (credit: [pchilton](https://github.com/pchilton))
* OpenID * OpenID
* Google Apps (via OpenID) * Google Apps (via OpenID)

View file

@ -32,5 +32,6 @@ module OmniAuth
autoload :Instagram, 'omniauth/strategies/instagram' autoload :Instagram, 'omniauth/strategies/instagram'
autoload :Mixi, 'omniauth/strategies/mixi' autoload :Mixi, 'omniauth/strategies/mixi'
autoload :Evernote, 'omniauth/strategies/evernote' autoload :Evernote, 'omniauth/strategies/evernote'
autoload :Doit, 'omniauth/strategies/doit'
end end
end end

View file

@ -0,0 +1,60 @@
require 'omniauth/oauth'
require 'multi_json'
module OmniAuth
module Strategies
class Doit < OAuth2
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
client_options = {
:site => 'https://openapi.doit.im',
:authorize_url => 'https://openapi.doit.im/oauth/authorize',
:access_token_url => 'https://openapi.doit.im/oauth/access_token'
}
super(app, :doit, consumer_key, consumer_secret, client_options, options, &block)
end
protected
def user_data
@data ||= MultiJson.decode(@access_token.get(client.site+"/v1/settings"),{'Authorization'=> 'OAuth'+@access_token.token})
end
def request_phase
options[:response_type] ||= "code"
super
end
def callback_phase
options[:grant_type] ||= 'authorization_code'
super
end
def user_info
{
'account' => user_data['account'],
'username'=> user_data['username'],
'nickname'=> user_data['nickname'],
'gender'=> user_data['gender'],
'week_start'=> user_data['week_start'],
'birthday_day'=> user_data['birthday_day'],
'birthday_month'=> user_data['birthday_month'],
'birthday_year'=> user_data['birthday_year'],
'language'=> user_data['language'],
'user_timezone'=> user_data['user_timezone'],
'remind_email'=> user_data['remind_email'],
'created'=> user_data['created'],
'updated'=> user_data['updated']
}
end
def auth_hash
OmniAuth::Utils.deep_merge(super, {
'uid' => user_data['id'],
'user_info' => user_info,
'extra' => {'user_hash' => user_data}
})
end
end
end
end

View file

@ -0,0 +1,5 @@
require 'spec_helper'
describe OmniAuth::Strategies::Doit do
it_should_behave_like "an oauth2 strategy"
end