GitHub Sale: sign up for any paid plan this week and pay nothing until January 1, 2009!  [ hide ]

public
Description: DataMapper Adapters
Homepage: http://www.yehudakatz.com
Clone URL: git://github.com/wycats/dm-adapters.git
wycats (author)
Mon Jun 30 17:04:51 -0700 2008
commit  a50cafa40686ffb6731acbea11157dda5965eddc
tree    60c8eded601bdcf11edeff50246c25a3a0d5477a
parent  92aab06d532b8ea638e3eab2ae3c1a883a8c451f
dm-adapters / salesforce / lib / salesforce_api.rb
100644 40 lines (34 sloc) 1.081 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
gem "soap4r", ">= 1.5.8"
require 'soap/wsdlDriver'
require 'soap/header/simplehandler'
 
module SalesforceAPI
 
  class HeaderHandler < SOAP::Header::SimpleHandler
    def initialize(tag, value)
      super(XSD::QName.new('urn:enterprise.soap.sforce.com', tag))
      @tag = tag
      @value = value
    end
    def on_simple_outbound
      @value
    end
  end
  
  class Connection
    @@pushed = false
    
    attr_accessor :driver
    def initialize(username, password, drivers = nil)
      $:.push drivers unless @@pushed
      @@pushed = true
      require "SalesforceAPIDriver"
      
      @driver = SalesforceAPI::Soap.new
      begin
        result = driver.login(:username => username, :password => password).result
      rescue SOAP::FaultError => e
        return nil
      end
      driver.endpoint_url = result.serverUrl
      driver.headerhandler << HeaderHandler.new("SessionHeader", "sessionId" => result.sessionId)
      driver.headerhandler << HeaderHandler.new("CallOptions", "client" => "client")
      @user_details = result.userInfo
    end
  end
end