Module: ProjectorPWS::Legacy

Defined in:
lib/projector_pws/legacy.rb

Overview

Legacy Module: Provides access to Legacy Web Services

Constant Summary collapse

WSDL =

Service Definition

'https://secure.projectorpsa.com/OpsProjectorWebSvc/OpsProjectorSvc.asmx?wsdl'
URL_PATH =

URL Path

'OpsProjectorWebSvc/OpsProjectorSvc.asmx'
BASE_URL =

Base URL

'https://secure.projectorpsa.com'

Class Method Summary collapse

Class Method Details

.export_cost_cards(url, username, password, account_code = nil, min_date = nil, max_date = nil, max_rows = nil) ⇒ Object

Export Cost Cards



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/projector_pws/legacy.rb', line 65

def self.export_cost_cards url, username, password,  = nil, min_date = nil, max_date = nil, max_rows = nil

  # Prepare Params
  rparams = {}
  rparams['tns:MinIncurredDate'] = min_date.strftime '%Y-%m-%dz' if min_date
  rparams['tns:MaxIncurredDate'] = max_date.strftime '%Y-%m-%dz' if max_date
  rparams['tns:MaxRowsToReturn'] = max_rows if max_rows

  # Make the call
  with_auth(username, password, , url) { |c, params| c.call(:export_cost_cards, params.merge(message: { request: { 'Parameters' => rparams } })).body[:export_cost_cards_response][:export_cost_cards_result][:data][:cost_cards][:cost_card] }
end

.export_expense_reports(url, username, password, account_code = nil, numbers_after = nil, max_rows = nil) ⇒ Object

Export Expense Reports



78
79
80
81
82
83
84
85
86
87
# File 'lib/projector_pws/legacy.rb', line 78

def self.export_expense_reports url, username, password,  = nil, numbers_after = nil, max_rows = nil

  # Prepare Params
  rparams = {}
  rparams['tns:MaxRowsToReturn'] = max_rows if max_rows
  rparams['tns:ExpenseReportNumbersAfter'] = numbers_after if numbers_after

  # Make the call
  with_auth(username, password, , url) { |c, params| c.call(:export_expense_reports, params.merge(message: { request: { 'Parameters' => rparams } })).body[:export_expense_reports_response][:export_expense_reports_result][:data][:expense_reports][:expense_report] }
end

.export_resources(url, username, password, account_code = nil, max_rows = nil, include_inactive = false) ⇒ Object

Export Resources



54
55
56
57
58
59
60
61
62
# File 'lib/projector_pws/legacy.rb', line 54

def self.export_resources url, username, password,  = nil, max_rows = nil, include_inactive = false

  # Prepare Params
  rparams = {}
  rparams['tns:MaxRowsToReturn'] = max_rows if max_rows
  rparams['tns:IncludeInactiveFlag'] = include_inactive

  with_auth(username, password, , url) { |c, params| c.call(:export_resources, params.merge(message: { request: { 'Parameters' => rparams } })).body[:export_resources_response][:export_resources_result][:data][:resources][:resource] }
end

.get_url(username, password, account_code = nil) ⇒ Object

Get URL for Account



49
50
51
# File 'lib/projector_pws/legacy.rb', line 49

def self.get_url username, password,  = nil
  with_auth(username, password, ) { |c, params| c.call(:get_web_service_url, params).body[:get_web_service_url_response][:get_web_service_url_result][:web_service_url] }
end

.open(url = BASE_URL) ⇒ Object

Open Client



29
30
31
32
33
# File 'lib/projector_pws/legacy.rb', line 29

def self.open url = BASE_URL
  c = Savon.client soap_version: 2, wsdl: WSDL, endpoint: service_url(url), env_namespace: :soap
  return yield c if block_given?
  c
end

.service_url(base_url) ⇒ Object

Generate Service URL



90
91
92
# File 'lib/projector_pws/legacy.rb', line 90

def self.service_url base_url
  "#{base_url}/#{URL_PATH}"
end

.with_auth(username, password, account_code = nil, url = BASE_URL) ⇒ Object

Pass with Authenticate



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/projector_pws/legacy.rb', line 36

def self.with_auth username, password,  = nil, url = BASE_URL

  # Prepare Creds
  creds = {}
  creds['tns:AccountName'] =  if 
  creds['tns:EmailAddress'] = username
  creds['tns:Password'] = password

  # Open API
  open(url) { |c| yield c, { message: {}, soap_header: { 'tns:OpsAuthenticationHeader' => creds } } }
end