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

Options Hash (opts):

  • ssl_verify_mode (Fixnum)


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.



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.



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 <<-EOF.gsub(/^ {6}/, '')
    Received SOAP Response:
    ----------------
    #{Nokogiri::XML(respmsg).to_xml}
    ----------------
  EOF
  opts[:raw_response] ? respmsg : ews.parse_soap_response(respmsg, opts)
end

#getString

Send a GET to the web service



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



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