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)
Tue May 13 16:06:43 -0700 2008
commit  a7bd92d1e8cf39ed1831324636db742eb07df8ac
tree    b1201d72cce219687abe1f5ac548a1e4d2d5b627
parent  a7c22d4ab214e153a23cd21ec6f5ef8ebc61e776
dm-adapters / salesforce / lib / salesforce_api.rb
100644 40 lines (34 sloc) 1.073 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:partner.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)
      $:.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