Class: Savon::Request

Inherits:
Object show all
Defined in:
lib/savon/request.rb

Overview

Savon::Request

Handles both WSDL and SOAP HTTP requests.

Constant Summary collapse

ContentType =

Content-Types by SOAP version.

{ 1 => "text/xml", 2 => "application/soap+xml" }

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(endpoint) ⇒ Request

Expects an endpoint String. Raises an exception in case the given endpoint does not seem to be valid.

Raises:

  • (ArgumentError)


38
39
40
41
42
43
# File 'lib/savon/request.rb', line 38

def initialize(endpoint)
  raise ArgumentError, "Invalid endpoint: #{endpoint}" unless
    /^(http|https):\/\// === endpoint

  @endpoint = URI endpoint
end

Class Attribute Details

.log=(value) ⇒ Object (writeonly)

Sets whether to log HTTP requests.



22
23
24
# File 'lib/savon/request.rb', line 22

def log=(value)
  @log = value
end

.log_levelObject

Accessor for the default log level.



33
34
35
# File 'lib/savon/request.rb', line 33

def log_level
  @log_level
end

.loggerObject

Accessor for the default logger.



30
31
32
# File 'lib/savon/request.rb', line 30

def logger
  @logger
end

Instance Attribute Details

#endpointObject (readonly)

Returns the endpoint URI.



46
47
48
# File 'lib/savon/request.rb', line 46

def endpoint
  @endpoint
end

Class Method Details

.log?Boolean

Returns whether to log HTTP requests.

Returns:

  • (Boolean)


25
26
27
# File 'lib/savon/request.rb', line 25

def log?
  @log
end

Instance Method Details

#open_timeout=(sec) ⇒ Object

Sets the open timeout for HTTP requests.



49
50
51
# File 'lib/savon/request.rb', line 49

def open_timeout=(sec)
  http.open_timeout = sec
end

#read_timeout=(sec) ⇒ Object

Sets the read timeout for HTTP requests.



54
55
56
# File 'lib/savon/request.rb', line 54

def read_timeout=(sec)
  http.read_timeout = sec
end

#soap(soap) ⇒ Object

Executes a SOAP request using a given Savon::SOAP instance and returns the Net::HTTPResponse.



66
67
68
69
70
71
72
73
# File 'lib/savon/request.rb', line 66

def soap(soap)
  @soap = soap

  log_request
  @response = http.request_post @endpoint.path, @soap.to_xml, http_header
  log_response
  @response
end

#wsdlObject

Retrieves WSDL document and returns the Net::HTTPResponse.



59
60
61
62
# File 'lib/savon/request.rb', line 59

def wsdl
  log "Retrieving WSDL from: #{@endpoint}"
  http.get @endpoint.to_s
end