module Lasso::Controller::InstanceMethods

Public Instance Methods

create() click to toggle source
# File lib/lasso/controller/instance.rb, line 9
def create
  @owner = oauth_settings[:through].bind(self).call
  @oauth = type.new(:service => params[:service], :owner => @owner)
  parse_response
  if @oauth.duplicate
    if @owner.nil? || @owner.new_record?
      send(oauth_settings[:login], @oauth.duplicate.owner)
    elsif @owner == @oauth.duplicate.owner
      @oauth.duplicate.destroy
      save_the_oauth
    else
      send(oauth_settings[:conflict], @oauth.duplicate.owner)
    end
  else
    save_the_oauth
  end
end
new() click to toggle source
# File lib/lasso/controller/instance.rb, line 4
def new
  @oauth = type.new(:service => params[:service])
  redirect
end

Protected Instance Methods

oauth_model_constant() click to toggle source
# File lib/lasso/controller/instance.rb, line 39
def oauth_model_constant
  oauth_model.to_s.singularize.camelcase.constantize
end
parse_response() click to toggle source
# File lib/lasso/controller/instance.rb, line 47
def parse_response
  if version_one?
    request_token = session[:request_token]
    access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
    @oauth.attributes = {:oauth_token => access_token.params[:oauth_token], :oauth_token_secret => access_token.params[:oauth_token_secret]}
  else
    access_token = @oauth.client.web_server.get_access_token(params[:code], :redirect_uri => oauth_settings[:callback].bind(self).call)
    @oauth.attributes = {:refresh_token => access_token.refresh_token, :access_token => access_token.token}
  end
end
redirect() click to toggle source
# File lib/lasso/controller/instance.rb, line 58
def redirect
  if version_one?
    @request_token = @oauth.client.get_request_token(:oauth_callback => oauth_settings[:callback].bind(self).call)
    session[:request_token] = @request_token
    redirect_to @request_token.authorize_url
  else
    redirect_to @oauth.client.web_server.authorize_url(:redirect_uri => oauth_settings[:callback].bind(self).call)
  end
end
save_the_oauth() click to toggle source
# File lib/lasso/controller/instance.rb, line 29
def save_the_oauth
  nested = {"#{oauth_model}_attributes" => [@oauth.attributes]}
  @owner.update_attributes!(nested)
  redirect_to send("#{oauth_model.to_s.singularize}_path", @owner.send(oauth_model).last)
end
type() click to toggle source
# File lib/lasso/controller/instance.rb, line 35
def type
  "OAuth#{version_one? && 'One' || 'Two'}#{oauth_model_constant}".constantize
end
version_one?() click to toggle source
# File lib/lasso/controller/instance.rb, line 43
def version_one?
  @version_one ||= oauth_model_constant.oauth_providers[params[:service]][:oauth_version] == 1
end