Class: Viewpoint::EWS::Connection
- Inherits:
-
Object
- Object
- Viewpoint::EWS::Connection
- Includes:
- Viewpoint::EWS, ConnectionHelper
- Defined in:
- lib/ews/connection.rb
Constant Summary
Constants included from Viewpoint::EWS
Instance Attribute Summary collapse
-
#endpoint ⇒ Object
readonly
Returns the value of attribute endpoint.
Attributes included from Viewpoint::EWS
Instance Method Summary collapse
-
#authenticate ⇒ Boolean
Authenticate to the web service.
-
#dispatch(ews, soapmsg, opts) ⇒ Object
Every Connection class must have the dispatch method.
-
#get ⇒ String
Send a GET to the web service.
-
#initialize(endpoint, opts = {}) ⇒ Connection
constructor
A new instance of Connection.
-
#post(xmldoc) ⇒ String
Send a POST to the web service.
- #set_auth(user, pass) ⇒ Object
Methods included from Viewpoint::EWS
#remove_impersonation, root_logger, #set_impersonation
Methods included from ConnectionHelper
Constructor Details
#initialize(endpoint, opts = {}) ⇒ Connection
Returns a new instance of Connection.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ews/connection.rb', line 30 def initialize(endpoint, opts = {}) @log = Logging.logger[self.class.name.to_s.to_sym] @httpcli = HTTPClient.new if opts[:trust_ca] @httpcli.ssl_config.clear_cert_store opts[:trust_ca].each do |ca| @httpcli.ssl_config.add_trust_ca ca end end @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
#endpoint ⇒ Object (readonly)
Returns the value of attribute endpoint.
24 25 26 |
# File 'lib/ews/connection.rb', line 24 def endpoint @endpoint end |
Instance Method Details
#authenticate ⇒ Boolean
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.
52 53 54 |
# File 'lib/ews/connection.rb', line 52 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.
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/ews/connection.rb', line 66 def dispatch(ews, soapmsg, opts) respmsg = post(soapmsg) @log.debug " Received SOAP Response:\n ----------------\n \#{Nokogiri::XML(respmsg).to_xml}\n ----------------\n EOF\n opts[:raw_response] ? respmsg : ews.parse_soap_response(respmsg, opts)\nend\n".gsub(/^ {6}/, '') |
#get ⇒ String
Send a GET to the web service
80 81 82 |
# File 'lib/ews/connection.rb', line 80 def get check_response( @httpcli.get(@endpoint) ) end |
#post(xmldoc) ⇒ String
Send a POST to the web service
87 88 89 90 |
# File 'lib/ews/connection.rb', line 87 def post(xmldoc) headers = {'Content-Type' => 'text/xml'} check_response( @httpcli.post(@endpoint, xmldoc, headers) ) end |
#set_auth(user, pass) ⇒ Object
45 46 47 |
# File 'lib/ews/connection.rb', line 45 def set_auth(user,pass) @httpcli.set_auth(@endpoint.to_s, user, pass) end |