module Authenticate

Public Class Methods

included(base) click to toggle source

class methods

# File lib/Salesforce/rest/asf_rest_authenticate.rb, line 22
def self.included(base)
  class << base
    # Initializes the adapter, using username, password. A good place to invoke
    # it includes 'setup()' method in the 'test_helper' and Rails init files.
    # usage ->     bootup_rest_adapter(username, password, api_version)
    def bootup_rest_adapter(username, password, api_version)
      p "*" * 80
      p 'Set up code'

      login_svr = 'https://login.salesforce.com'
      api_version = api_version ? api_version : '21.0'

      uri = URI.parse(login_svr)
      uri.path = "/services/Soap/u/" + (api_version).to_s
      url = uri.to_s

      binding = RForce::Binding.new(url, nil, nil)
      soap_response = binding.login(username, password)
      soap_server_url = soap_response.loginResponse.result.serverUrl
      security_token = soap_response.loginResponse.result.sessionId
      user_id = soap_response.loginResponse.result.userId
      puts "binding user id is: " + user_id

      rest_svr = soap_server_url.gsub(/-api\S*/mi, "") + ".salesforce.com"
      rest_version = "v" + api_version

      self.setup(security_token, rest_svr, rest_version)
      puts "oauth token is: " + security_token

      puts 'rest_svr: ' + rest_svr

      return [security_token, rest_svr, rest_version]
    end

    # Ignite the adapter, using the config_file, This will in term invoke
    # bootup_rest_adapter(username, password, api_version) or set up with
    # consumer key/secret with omniauth
    def ignite_adapter(config_file)
      #Read the configuration file

      begin
        asf_rest_config = YAML::load(File.open(config_file))

        auth_scheme =  asf_rest_config["asf-rest-config"] ["auth_scheme"]
        puts "ASF-REST-Adapter setting:"
        puts "Auth name:" + auth_scheme

        #setup the default adapter with relevant auth schema (username/password) or (Omniauth)
        case auth_scheme
        when "username_password" then
            puts 'Setting up adapter using username/password'
          username = asf_rest_config["asf-rest-config"]["username"]
          password = asf_rest_config["asf-rest-config"]["password"]
          login_svr = asf_rest_config["asf-rest-config"]["url"].to_s
          api_version = asf_rest_config["asf-rest-config"]["api_version"].to_s

          puts "Salesforce url: " + asf_rest_config["asf-rest-config"]["url"].to_s
          puts "Username: " + username
          puts "Password: " + password
          puts "API Version " + login_svr

          security_token, rest_svr, rest_version = Salesforce::Rest::AsfRest.bootup_rest_adapter(username, password, api_version)
          puts 'Security Token: ' + security_token
          puts 'rest_svr: ' + rest_svr
          puts 'rest_version: ' + rest_version
        when"omni_auth" then
            consumer_key = asf_rest_config["asf-rest-config"]["consumer_key"]
          consumer_secret = asf_rest_config["asf-rest-config"]["consumer_secret"]

          puts "Salesforce consumer_key is:" + consumer_key.to_s
          puts "Salesforce consumser_secret is: " + consumer_secret.to_s

          Rails.application.config.middleware.use OmniAuth::Builder do
            provider :forcedotcom, consumer_key, consumer_secret
          end
        end
      rescue Exception => e
        puts e.message
      end
    end


  end
end