class Contacts::OAuthConsumer

Attributes

access_token[RW]
request_token[RW]

Public Class Methods

new(consumer_options, request_token_params) click to toggle source
# File lib/contacts/oauth_consumer.rb, line 9
def initialize(consumer_options, request_token_params)
  @consumer_options = consumer_options
  @request_token_params = request_token_params
end

Public Instance Methods

authentication_url(target = self.return_url) click to toggle source
# File lib/contacts/oauth_consumer.rb, line 31
def authentication_url(target = self.return_url)
  @request_token = consumer.get_request_token({:oauth_callback => target}, @request_token_params)
  @request_token.authorize_url
end
authorize(params) click to toggle source
# File lib/contacts/oauth_consumer.rb, line 36
def authorize(params)
  begin
    @access_token = @request_token.get_access_token(:oauth_verifier => params['oauth_verifier'])
  rescue OAuth::Unauthorized => error
    @error = error.message
  end
end
initialize_serialized(data) click to toggle source
# File lib/contacts/oauth_consumer.rb, line 14
def initialize_serialized(data)
  value = data['request_token'] and
    @request_token = deserialize_oauth_token(consumer, value)
  value = data['access_token'] and
    @access_token = deserialize_oauth_token(consumer, value)
end
serializable_data() click to toggle source
# File lib/contacts/oauth_consumer.rb, line 21
def serializable_data
  data = {}
  data['access_token'] = serialize_oauth_token(@access_token) if @access_token
  data['request_token'] = serialize_oauth_token(@request_token) if @request_token
  data
end

Private Instance Methods

consumer() click to toggle source
# File lib/contacts/oauth_consumer.rb, line 46
def consumer
  @consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret, @consumer_options)
end
deserialize_oauth_token(consumer, data) click to toggle source
# File lib/contacts/oauth_consumer.rb, line 64
def deserialize_oauth_token(consumer, data)
  params = query_to_params(data)
  klass = params['type'] == 'access' ? OAuth::AccessToken : OAuth::RequestToken
  token = klass.new(consumer, params.delete('oauth_token'), params.delete('oauth_token_secret'))
  token
end
serialize_oauth_token(token) click to toggle source

Marshal sucks for persistence. This provides a prettier, more future-proof persistable representation of a token.

# File lib/contacts/oauth_consumer.rb, line 54
def serialize_oauth_token(token)
  params = {
    'version' => '1',  # serialization format
    'type' => token.is_a?(OAuth::AccessToken) ? 'access' : 'request',
    'oauth_token' => token.token,
    'oauth_token_secret' => token.secret,
  }
  params_to_query(params)
end