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.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ews/connection.rb', line 32 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] @httpcli.ssl_config.ssl_version = opts[:ssl_version] if opts[:ssl_version] # Up the keep-alive so we don't have to do the NTLM dance as often. @httpcli.keep_alive_timeout = 60 @httpcli.receive_timeout = opts[:receive_timeout] if opts[:receive_timeout] @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.
56 57 58 |
# File 'lib/ews/connection.rb', line 56 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.
70 71 72 73 74 75 76 77 78 79 |
# File 'lib/ews/connection.rb', line 70 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 |
#get ⇒ String
Send a GET to the web service
84 85 86 |
# File 'lib/ews/connection.rb', line 84 def get check_response( @httpcli.get(@endpoint) ) end |
#post(xmldoc) ⇒ String
Send a POST to the web service
91 92 93 94 |
# File 'lib/ews/connection.rb', line 91 def post(xmldoc) headers = {'Content-Type' => 'text/xml'} check_response( @httpcli.post(@endpoint, xmldoc, headers) ) end |
#set_auth(user, pass) ⇒ Object
49 50 51 |
# File 'lib/ews/connection.rb', line 49 def set_auth(user,pass) @httpcli.set_auth(@endpoint.to_s, user, pass) end |