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 | + | ... | ... |