class Groupwise::PostOfficeAgent

Attributes

client[R]
endpoint[R]

Public Class Methods

new(endpoint, username, app_name, app_key) click to toggle source
# File lib/groupwise/post_office_agent.rb, line 5
def initialize(endpoint, username, app_name, app_key)
  @endpoint, @username, @app_name, @app_key = endpoint, username, app_name, app_key
  @client = Savon.client(wsdl: wsdl, endpoint: endpoint)
  login
end

Public Instance Methods

free_busy(email_addresses, wait_time = 0, start_time = nil, end_time = nil) click to toggle source
# File lib/groupwise/post_office_agent.rb, line 31
def free_busy(email_addresses, wait_time = 0, start_time = nil, end_time = nil)
  message = { free_busy_session_id: free_busy_session(email_addresses, start_time, end_time) }
  sleep wait_time
  response = authenticated_request(:get_free_busy, message)[:free_busy_info]
end
logout() click to toggle source
# File lib/groupwise/post_office_agent.rb, line 25
def logout
  response = authenticated_request(:logout)
  @session = nil if response[:status][:code] == '0'
  return response
end
version() click to toggle source
# File lib/groupwise/post_office_agent.rb, line 11
def version
  @version ||= begin
    body = HTTPI.get(HTTPI::Request.new(endpoint)).body
    version = body.match(/(?<=POA )([^\n\r]*)/).captures.first
  end
end
wsdl() click to toggle source
# File lib/groupwise/post_office_agent.rb, line 18
def wsdl
  @wsdl ||= begin
    wsdl_version = Groupwise.wsdl_version(version)
    File.expand_path("../../../contrib/novell/GW#{wsdl_version}/groupwise.wsdl", __FILE__)
  end
end

Private Instance Methods

authenticated_request(method, message = nil) click to toggle source
# File lib/groupwise/post_office_agent.rb, line 50
def authenticated_request(method, message = nil)
  response = @client.call(
    "#{method}_request".to_sym, 
    message: message, 
    soap_header: { session: @session }
  )
  response.body["#{method}_response".to_sym]
end
free_busy_session(email_addresses, start_time = nil, end_time = nil) click to toggle source
# File lib/groupwise/post_office_agent.rb, line 59
def free_busy_session(email_addresses, start_time = nil, end_time = nil)
  @free_busy_session ||= begin
    message = FreeBusySessionMessage.new(email_addresses, start_time, end_time)
    response = authenticated_request(:start_free_busy_session, message)
    response[:free_busy_session_id]
  end 
end
login() click to toggle source
# File lib/groupwise/post_office_agent.rb, line 39
def login
  message = {
    auth: { username: @username, name: @app_name, key: @app_key }, 
    version: '1.05', language: 'en',
    attributes!: { auth: { 'xsi:type' => 'q1:TrustedApplication' } }
  }
  response = @client.call(:login_request, message: message)
  @session = response.body[:login_response][:session]
  response.body[:login_response]
end