Commit a61f2fc89a349337a849e4065a387d6d5045a340
1 parent
3d0157a5
parse logon profile
Showing
3 changed files
with
62 additions
and
2 deletions
Show diff stats
lib/syspro.rb
| @@ -5,6 +5,7 @@ require "logger" | @@ -5,6 +5,7 @@ require "logger" | ||
| 5 | require "openssl" | 5 | require "openssl" |
| 6 | 6 | ||
| 7 | require "syspro/api_resource" | 7 | require "syspro/api_resource" |
| 8 | +require "syspro/get_logon_profile" | ||
| 8 | require "syspro/get_version" | 9 | require "syspro/get_version" |
| 9 | require "syspro/logoff" | 10 | require "syspro/logoff" |
| 10 | require "syspro/logon" | 11 | require "syspro/logon" |
| 1 | +module Syspro | ||
| 2 | + class GetLogonProfile < ApiResource | ||
| 3 | + def self.get_logon_profile(user_id) | ||
| 4 | + params = { "UserId" => user_id } | ||
| 5 | + resp = self.request(:get, resource_url, params) | ||
| 6 | + parse_response(resp[0]) | ||
| 7 | + end | ||
| 8 | + | ||
| 9 | + def resource_url | ||
| 10 | + "/GetLogonProfile" | ||
| 11 | + end | ||
| 12 | + | ||
| 13 | + def self.parse_response(resp) | ||
| 14 | + doc = resp.data | ||
| 15 | + | ||
| 16 | + user_profile = UserProfile.new( | ||
| 17 | + doc.xpath("//CompanyName").text, | ||
| 18 | + doc.xpath("//OperatorCode").text, | ||
| 19 | + doc.xpath("//OperatorGroup").text, | ||
| 20 | + doc.xpath("//OperatorEmailAddress").text, | ||
| 21 | + doc.xpath("//OperatorLocation").text, | ||
| 22 | + doc.xpath("//OperatorLanguageCode").text, | ||
| 23 | + doc.xpath("//SystemLanguage").text, | ||
| 24 | + doc.xpath("//AccountingDate").text, | ||
| 25 | + doc.xpath("//CompanyDate").text, | ||
| 26 | + doc.xpath("//DefaultArBranch").text, | ||
| 27 | + doc.xpath("//DefaultApBranch").text, | ||
| 28 | + doc.xpath("//DefaultBank").text, | ||
| 29 | + doc.xpath("//DefaultWarehouse").text, | ||
| 30 | + doc.xpath("//DefaultCustomer").text, | ||
| 31 | + doc.xpath("//SystemSiteId").text, | ||
| 32 | + doc.xpath("//SystemNationalityCode").text, | ||
| 33 | + doc.xpath("//LocalCurrencyCode").text, | ||
| 34 | + doc.xpath("//CurrencyDescription").text, | ||
| 35 | + doc.xpath("//DefaultRequisitionUser").text, | ||
| 36 | + doc.xpath("//XMLToHTMLTransform").text, | ||
| 37 | + doc.xpath("//CssStyle").text, | ||
| 38 | + doc.xpath("//CssSuffix").text, | ||
| 39 | + doc.xpath("//DecimalFormat").text, | ||
| 40 | + doc.xpath("//DateFormat").text, | ||
| 41 | + doc.xpath("//FunctionalRole").text, | ||
| 42 | + doc.xpath("//DatabaseType").text, | ||
| 43 | + doc.xpath("//SysproVersion").text, | ||
| 44 | + doc.xpath("//EnetVersion").text, | ||
| 45 | + doc.xpath("//SysproServerBitWidth").text, | ||
| 46 | + ) | ||
| 47 | + end | ||
| 48 | + private_class_method :parse_response | ||
| 49 | + | ||
| 50 | + UserProfile = Struct.new(:company_name, :operator_code, :operator_group, :operator_email_address, | ||
| 51 | + :operator_location, :operator_language_code, :system_language, :accounting_date, | ||
| 52 | + :company_date, :default_ar_branch, :default_ap_branch, :default_bank, :default_warehouse, | ||
| 53 | + :default_customer, :system_site_id, :system_nationality_code, :local_currency_code, | ||
| 54 | + :currency_description, :default_requisition_user, :xml_to_html_transform, :css_style, | ||
| 55 | + :css_suffix, :decimal_format, :date_format, :functional_role, :database_type, :syspro_version, | ||
| 56 | + :enet_version, :syspro_server_bit_width) | ||
| 57 | + end | ||
| 58 | +end | ||
| 59 | + |
lib/syspro/syspro_response.rb
| @@ -26,8 +26,8 @@ module Syspro | @@ -26,8 +26,8 @@ module Syspro | ||
| 26 | # This may throw JSON::ParserError if the response body is not valid JSON. | 26 | # This may throw JSON::ParserError if the response body is not valid JSON. |
| 27 | def self.from_faraday_hash(http_resp) | 27 | def self.from_faraday_hash(http_resp) |
| 28 | resp = SysproResponse.new | 28 | resp = SysproResponse.new |
| 29 | - resp.data = Nokogiri::XML(http_resp[:body]) | ||
| 30 | resp.http_body = http_resp[:body] | 29 | resp.http_body = http_resp[:body] |
| 30 | + resp.data = Nokogiri::XML(resp.http_body) | ||
| 31 | resp.http_headers = http_resp[:headers] | 31 | resp.http_headers = http_resp[:headers] |
| 32 | resp.http_status = http_resp[:status] | 32 | resp.http_status = http_resp[:status] |
| 33 | resp.request_id = http_resp[:headers]["Request-Id"] | 33 | resp.request_id = http_resp[:headers]["Request-Id"] |
| @@ -39,8 +39,8 @@ module Syspro | @@ -39,8 +39,8 @@ module Syspro | ||
| 39 | # This may throw JSON::ParserError if the response body is not valid JSON. | 39 | # This may throw JSON::ParserError if the response body is not valid JSON. |
| 40 | def self.from_faraday_response(http_resp) | 40 | def self.from_faraday_response(http_resp) |
| 41 | resp = SysproResponse.new | 41 | resp = SysproResponse.new |
| 42 | - resp.data = Nokogiri::XML(http_resp[:body]) | ||
| 43 | resp.http_body = http_resp.body | 42 | resp.http_body = http_resp.body |
| 43 | + resp.data = Nokogiri::XML(resp.http_body) | ||
| 44 | resp.http_headers = http_resp.headers | 44 | resp.http_headers = http_resp.headers |
| 45 | resp.http_status = http_resp.status | 45 | resp.http_status = http_resp.status |
| 46 | resp.request_id = http_resp.headers["Request-Id"] | 46 | resp.request_id = http_resp.headers["Request-Id"] |