Class: Eloqua::Api
- Inherits:
-
Object
- Object
- Eloqua::Api
- Defined in:
- lib/eloqua/api.rb,
lib/eloqua/api/action.rb,
lib/eloqua/api/service.rb
Defined Under Namespace
Constant Summary collapse
- XML_NS_ARRAY =
The namespace for Eloqua Array objects
'http://schemas.microsoft.com/2003/10/Serialization/Arrays'
- WSDL =
WSDLs are from 7-16-2012
{ :service => File.dirname(__FILE__) + '/wsdl/service.wsdl', :data => File.dirname(__FILE__) + '/wsdl/data.wsdl', :email => File.dirname(__FILE__) + '/wsdl/email.wsdl', :action => File.dirname(__FILE__) + '/wsdl/action.wsdl' }
- @@clients =
{}
Class Attribute Summary collapse
-
.http_error ⇒ Object
Returns the value of attribute http_error.
-
.last_request ⇒ Object
Returns the value of attribute last_request.
-
.last_response ⇒ Object
Returns the value of attribute last_response.
-
.soap_error ⇒ Object
Returns the value of attribute soap_error.
Class Method Summary collapse
- .builder(&block) ⇒ Object
-
.client(type) ⇒ Object
There are four currently supported wsdl types for eloqua 1.
- .clients ⇒ Object
- .remote_type(name, type = 'Base', id = 0) ⇒ Object
- .request(type, name, soap_body = nil, &block) ⇒ Object
- .reset_clients ⇒ Object
- .response_errors(response) ⇒ Object
-
.send_remote_request(type, name, soap_body = nil, &block) ⇒ Object
Sends remote request and returns a response object.
Class Attribute Details
.http_error ⇒ Object
Returns the value of attribute http_error.
34 35 36 |
# File 'lib/eloqua/api.rb', line 34 def http_error @http_error end |
.last_request ⇒ Object
Returns the value of attribute last_request.
34 35 36 |
# File 'lib/eloqua/api.rb', line 34 def last_request @last_request end |
.last_response ⇒ Object
Returns the value of attribute last_response.
34 35 36 |
# File 'lib/eloqua/api.rb', line 34 def last_response @last_response end |
.soap_error ⇒ Object
Returns the value of attribute soap_error.
34 35 36 |
# File 'lib/eloqua/api.rb', line 34 def soap_error @soap_error end |
Class Method Details
.builder(&block) ⇒ Object
61 62 63 |
# File 'lib/eloqua/api.rb', line 61 def builder(&block) Eloqua::Builder::Xml.create(:namespace => :wsdl, &block) end |
.client(type) ⇒ Object
There are four currently supported wsdl types for eloqua
- Service
- Data
- External Action
51 52 53 54 55 56 57 58 59 |
# File 'lib/eloqua/api.rb', line 51 def client(type) if(!Eloqua.user || !Eloqua.password) raise('Eloqua.user or Eloqua.password is not set see Eloqua.authenticate') end clients[type] = Savon::Client.new do wsdl.document = WSDL[type] wsse.credentials Eloqua.user, Eloqua.password end end |
.clients ⇒ Object
42 43 44 |
# File 'lib/eloqua/api.rb', line 42 def clients @@clients end |
.remote_type(name, type = 'Base', id = 0) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/eloqua/api.rb', line 65 def remote_type(name, type = 'Base', id = 0) { :name => name, :type => type, :id => id } end |
.request(type, name, soap_body = nil, &block) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/eloqua/api.rb', line 73 def request(type, name, soap_body = nil, &block) result = send_remote_request(type, name, soap_body, &block) self.last_request = client(type).soap.to_xml if client(type).soap self.last_response = result.to_xml if result.respond_to?(:to_xml) if(result) result = result.to_hash response_key = "#{name}_response".to_sym result_key = "#{name}_result".to_sym if(result.has_key?(response_key)) result = result[response_key] end if(result.has_key?(result_key)) result = result[result_key] end end result end |
.reset_clients ⇒ Object
38 39 40 |
# File 'lib/eloqua/api.rb', line 38 def reset_clients @@clients = {} end |
.response_errors(response) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/eloqua/api.rb', line 108 def response_errors(response) @soap_error = Eloqua::SoapError.new(response.http) @http_error = Eloqua::HTTPError.new(response.http) raise @soap_error if @soap_error.present? raise @http_error if @http_error.present? end |
.send_remote_request(type, name, soap_body = nil, &block) ⇒ Object
Sends remote request and returns a response object
94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/eloqua/api.rb', line 94 def send_remote_request(type, name, soap_body = nil, &block) @soap_error = nil @http_error = nil request = client(type).request(:wsdl, name) do soap.namespaces["xmlns:arr"] = XML_NS_ARRAY soap.element_form_default = :qualified soap.body = soap_body if soap_body instance_eval(&block) if block_given? end response_errors(request) request end |