Commit 497165875fc1cd7744493ee82fc00917215531ed
1 parent
db76748d
refactor object structs; logon endpoint
Showing
7 changed files
with
69 additions
and
6 deletions
Show diff stats
lib/syspro.rb
lib/syspro/api_operations/get_version.rb
| ... | ... | @@ -5,9 +5,17 @@ module Syspro |
| 5 | 5 | class GetVersion |
| 6 | 6 | include ApiOperations::Request |
| 7 | 7 | |
| 8 | + def get_version | |
| 9 | + resp = self.request(:get, resource_url) | |
| 10 | + version = VersionObject.new(resp[0].http_body) | |
| 11 | + end | |
| 12 | + | |
| 8 | 13 | def resource_url |
| 9 | 14 | "/GetVersion" |
| 10 | 15 | end |
| 16 | + | |
| 17 | + VersionObject = Struct.new(:version) do | |
| 18 | + end | |
| 11 | 19 | end |
| 12 | 20 | end |
| 13 | 21 | end | ... | ... |
| 1 | +require_relative "request" | |
| 2 | + | |
| 3 | +module Syspro | |
| 4 | + module ApiOperations | |
| 5 | + class Logon | |
| 6 | + include ApiOperations::Request | |
| 7 | + | |
| 8 | + def logon(username, password, company_id, company_password = nil) | |
| 9 | + params = { | |
| 10 | + "Operator" => username, | |
| 11 | + "OperatorPassword" => password, | |
| 12 | + "CompanyId" => company_id, | |
| 13 | + "CompanyPassword" => company_password | |
| 14 | + } | |
| 15 | + resp = self.request(:get, resource_url, params) | |
| 16 | + user_id = UserIdObject.new(resp[0].http_body) | |
| 17 | + end | |
| 18 | + | |
| 19 | + def resource_url | |
| 20 | + "/Logon" | |
| 21 | + end | |
| 22 | + | |
| 23 | + UserIdObject = Struct.new(:guid) do | |
| 24 | + end | |
| 25 | + end | |
| 26 | + end | |
| 27 | +end | |
| 28 | + | ... | ... |
lib/syspro/syspro_client.rb
| ... | ... | @@ -7,6 +7,16 @@ module Syspro |
| 7 | 7 | @system_profiler = SystemProfiler.new |
| 8 | 8 | end |
| 9 | 9 | |
| 10 | + def logon(username, password, company_id, company_password) | |
| 11 | + logon_getter = Syspro::ApiOperations::Logon.new | |
| 12 | + logon_getter.logon(username, password, company_id, company_password) | |
| 13 | + end | |
| 14 | + | |
| 15 | + def get_syspro_version | |
| 16 | + version_getter = Syspro::ApiOperations::GetVersion.new | |
| 17 | + version_getter.get_version | |
| 18 | + end | |
| 19 | + | |
| 10 | 20 | def self.active_client |
| 11 | 21 | Thread.current[:syspro_client] || default_client |
| 12 | 22 | end |
| ... | ... | @@ -15,11 +25,6 @@ module Syspro |
| 15 | 25 | Thread.current[:syspro_client_default_client] ||= SysproClient.new(default_conn) |
| 16 | 26 | end |
| 17 | 27 | |
| 18 | - def get_syspro_version | |
| 19 | - version_getter = Syspro::ApiOperations::GetVersion.new | |
| 20 | - version_getter.request(:get, version_getter.resource_url) | |
| 21 | - end | |
| 22 | - | |
| 23 | 28 | # A default Faraday connection to be used when one isn't configured. This |
| 24 | 29 | # object should never be mutated, and instead instantiating your own |
| 25 | 30 | # connection and wrapping it in a SysproClient object should be preferred. | ... | ... |
lib/syspro/util.rb
| ... | ... | @@ -125,6 +125,13 @@ module Syspro |
| 125 | 125 | end |
| 126 | 126 | end |
| 127 | 127 | |
| 128 | + def self.url_encode(key) | |
| 129 | + CGI.escape(key.to_s). | |
| 130 | + # Don't use strict form encoding by changing the square bracket control | |
| 131 | + # characters back to their literals. This is fine by the server, and | |
| 132 | + # makes these parameter strings easier to read. | |
| 133 | + gsub("%5B", "[").gsub("%5D", "]") | |
| 134 | + end | |
| 128 | 135 | end |
| 129 | 136 | end |
| 130 | 137 | ... | ... |
test/client_test.rb
| ... | ... | @@ -3,6 +3,6 @@ require "test_helper" |
| 3 | 3 | class SysproClientTest < Minitest::Test |
| 4 | 4 | def test_get_syspro_version |
| 5 | 5 | client = ::Syspro::SysproClient.new |
| 6 | - assert_match /(\d+\.)?(\d+\.)?(\d+\.)?(\d+)/, client.get_syspro_version[0].http_body | |
| 6 | + assert_match /(\d+\.)?(\d+\.)?(\d+\.)?(\d+)/, client.get_syspro_version.version | |
| 7 | 7 | end |
| 8 | 8 | end | ... | ... |
| 1 | +require "test_helper" | |
| 2 | + | |
| 3 | +class LogonTest < Minitest::Test | |
| 4 | + def test_logon | |
| 5 | + username = "wland" | |
| 6 | + password = "piperita2016" | |
| 7 | + company = "L" | |
| 8 | + company_password = "" | |
| 9 | + client = ::Syspro::SysproClient.new | |
| 10 | + | |
| 11 | + assert_match /([A-Z0-9]{33})\w/, client.logon(username, password, company, company_password).guid | |
| 12 | + end | |
| 13 | +end | |
| 14 | + | ... | ... |