Skip to content

Commit

Permalink
added Gowalla support
Browse files Browse the repository at this point in the history
  • Loading branch information
kvnsmth committed Oct 7, 2010
1 parent 712f4b6 commit 67ede42
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 0 deletions.
1 change: 1 addition & 0 deletions oa-oauth/lib/omniauth/oauth.rb
Expand Up @@ -11,5 +11,6 @@ module Strategies
autoload :GitHub, 'omniauth/strategies/github'
autoload :ThirtySevenSignals, 'omniauth/strategies/thirty_seven_signals'
autoload :Foursquare, 'omniauth/strategies/foursquare'
autoload :Gowalla, 'omniauth/strategies/gowalla'
end
end
60 changes: 60 additions & 0 deletions oa-oauth/lib/omniauth/strategies/gowalla.rb
@@ -0,0 +1,60 @@
require 'omniauth/oauth'
require 'multi_json'

module OmniAuth
module Strategies
#
# Authenticate to Gowalla utilizing OAuth 2.0 and retrieve
# basic user information.
#
# Usage:
#
# use OmniAuth::Strategies::Gowalla, 'API Key', 'Secret Key'
#
# Options:
#
# <tt>:scope</tt> :: Extended permissions such as <tt>email</tt> and <tt>offline_access</tt> (which are the defaults).
class Gowalla < OAuth2
def initialize(app, api_key, secret_key, options = {})
options[:site] = 'https://api.gowalla.com/api/oauth'
options[:authorize_url] = 'https://gowalla.com/api/oauth/new'
options[:access_token_url] = 'https://api.gowalla.com/api/oauth/token'
super(app, :gowalla, api_key, secret_key, options)
end

def user_data
@data ||= MultiJson.decode(@access_token.get("/users/me.json"))
end

def request_phase(options = {})
options[:scope] ||= "email,offline_access"
super(options)
end

def user_info
{
'name' => "#{user_data['first_name']} #{user_data['last_name']}",
'nickname' => user_data["username"],
'first_name' => user_data["first_name"],
'last_name' => user_data["last_name"],
'location' => user_data["hometown"],
'description' => user_data["bio"],
'image' => user_data["image_url"],
'phone' => nil,
'urls' => {
'Gowalla' => "http://www.gowalla.com/#{user_data['url']}",
'Website' => user_data["website"]
}
}
end

def auth_hash
OmniAuth::Utils.deep_merge(super, {
'uid' => user_data["url"].split('/').last,
'user_info' => user_info,
'extra' => {'user_hash' => user_data}
})
end
end
end
end
13 changes: 13 additions & 0 deletions oa-oauth/spec/omniauth/strategies/gowalla_spec.rb
@@ -0,0 +1,13 @@
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')

describe OmniAuth::Strategies::Gowalla do

it 'should subclass OAuth2' do
OmniAuth::Strategies::Gowalla.should < OmniAuth::Strategies::OAuth2
end

it 'should initialize with just api key and secret key' do
lambda{OmniAuth::Strategies::Gowalla.new({},'api_key','secret_key')}.should_not raise_error
end

end

0 comments on commit 67ede42

Please sign in to comment.