Class: Viewpoint::EWS::Connection

Inherits:
Object
  • Object
show all
Includes:
Viewpoint::EWS, ConnectionHelper
Defined in:
lib/ews/connection.rb

Constant Summary

Constants included from Viewpoint::EWS

ConnectingSID

Instance Attribute Summary collapse

Attributes included from Viewpoint::EWS

#logger

Instance Method Summary collapse

Methods included from Viewpoint::EWS

#remove_impersonation, root_logger, #set_impersonation

Methods included from ConnectionHelper

#init_logging!

Constructor Details

#initialize(endpoint, opts = {}) ⇒ Connection

Returns a new instance of Connection



29
30
31
32
33
34
35
36
# File 'lib/ews/connection.rb', line 29

def initialize(endpoint, opts = {})
  @log = Logging.logger[self.class.name.to_s.to_sym]
  @httpcli = HTTPClient.new
  @httpcli.ssl_config.verify_mode = opts[:ssl_verify_mode] if opts[:ssl_verify_mode]
  # Up the keep-alive so we don't have to do the NTLM dance as often.
  @httpcli.keep_alive_timeout = 60
  @endpoint = endpoint
end

Instance Attribute Details

#endpointObject (readonly)

Returns the value of attribute endpoint



24
25
26
# File 'lib/ews/connection.rb', line 24

def endpoint
  @endpoint
end

Instance Method Details

#authenticateBoolean

Authenticate to the web service. You don't have to do this because authentication will happen on the first request if you don't do it here.

Returns:

  • (Boolean)

    true if authentication is successful, false otherwise



45
46
47
# File 'lib/ews/connection.rb', line 45

def authenticate
  self.get && true
end

#dispatch(ews, soapmsg, opts) ⇒ Object

Every Connection class must have the dispatch method. It is what sends the SOAP request to the server and calls the parser method on the EWS instance.

This was originally in the ExchangeWebService class but it was added here to make the processing chain easier to modify. For example, it allows the reactor pattern to handle the request with a callback.

Parameters:



59
60
61
62
63
64
65
66
67
68
# File 'lib/ews/connection.rb', line 59

def dispatch(ews, soapmsg, opts)
  respmsg = post(soapmsg)
  @log.debug "Received SOAP Response:\n----------------\n\#{Nokogiri::XML(respmsg).to_xml}\n----------------\n".gsub(/^ {6}/, '')
  opts[:raw_response] ? respmsg : ews.parse_soap_response(respmsg, opts)
end

#getString

Send a GET to the web service

Returns:

  • (String)

    If the request is successful (200) it returns the body of the response.



73
74
75
# File 'lib/ews/connection.rb', line 73

def get
  check_response( @httpcli.get(@endpoint) )
end

#post(xmldoc) ⇒ String

Send a POST to the web service

Returns:

  • (String)

    If the request is successful (200) it returns the body of the response.



80
81
82
83
# File 'lib/ews/connection.rb', line 80

def post(xmldoc)
  headers = {'Content-Type' => 'text/xml'}
  check_response( @httpcli.post(@endpoint, xmldoc, headers) )
end

#set_auth(user, pass) ⇒ Object



38
39
40
# File 'lib/ews/connection.rb', line 38

def set_auth(user,pass)
  @httpcli.set_auth(@endpoint.to_s, user, pass)
end