ts_json_api 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +11 -1
- data/lib/ts_json_api/requestor/private_methods.rb +46 -38
- data/lib/ts_json_api/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -24,15 +24,25 @@ This gem provides several configuration options exposed in an `ts_json_api.rb` i
|
|
24
24
|
TsJsonApi::Configure.setup do |config|
|
25
25
|
config.username = ""
|
26
26
|
config.password = ""
|
27
|
-
config.api_version = 2
|
28
27
|
config.logging_enabled = true
|
29
28
|
config.server_url = ""
|
30
29
|
config.timestamped_logs = false
|
30
|
+
|
31
|
+
config.api_version = 2
|
32
|
+
config.api_version = ->(url) do
|
33
|
+
if url =~ /livepoints/
|
34
|
+
'include_wins'
|
35
|
+
else
|
36
|
+
2
|
37
|
+
end
|
38
|
+
end
|
31
39
|
end
|
32
40
|
```
|
33
41
|
|
34
42
|
The `username`, `password`, and `server_url` fields are all requried to specify which service to connect to. The `api_version` field allows you to specify a particular version or contract you have in place with the T&S team when authenticating with the service.
|
35
43
|
|
44
|
+
You can specify a lambda for the `api_version` setting, or any instance that responds to `#call` and accepts one argument of the URL being requested, to dynamically return the version for the request.
|
45
|
+
|
36
46
|
You can disable logging by setting `logging_enabled = false`. Logging will log the raw response from the T&S service into the Rails `tmp/ts_json_api/` directory for you to review.
|
37
47
|
|
38
48
|
If you wish to keep a log file for every transaction with the API, you will want to enabled `timestamped_logs`. This feature will keep a unique file instead of overwriting the previous response from the API every time.
|
@@ -1,57 +1,65 @@
|
|
1
1
|
module TsJsonApi
|
2
|
-
|
3
|
-
|
2
|
+
class Requestor
|
3
|
+
module PrivateMethods
|
4
4
|
|
5
|
-
|
5
|
+
extend ActiveSupport::Concern
|
6
6
|
|
7
|
-
|
7
|
+
module ClassMethods
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
def send_json_request_and_deliver_response(path, partial_url)
|
10
|
+
url = "#{Configure.server_url}#{partial_url}"
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
response = perfom_request(partial_url)
|
13
|
+
json = response.to_str
|
14
|
+
json.gsub!(/[^\x20-\x7e]/,'')
|
15
|
+
json.gsub! 'NaN', '"NaN"'
|
16
16
|
|
17
|
-
|
17
|
+
log(path, url, json)
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
JSON.parse(json)
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
def api
|
23
|
+
@@api ||= RestClient::Resource.new(Configure.server_url, user: Configure.username, password: Configure.password, timeout: 20, headers: { accept: :json })
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def perfom_request(partial_url)
|
27
|
+
begin
|
28
|
+
api[partial_url].get version: api_version(partial_url)
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
rescue RestClient::Exceptions::EXCEPTIONS_MAP[400] => e
|
31
|
+
raise ApiLimitExceededException.new exception: e
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
rescue RestClient::Exceptions::EXCEPTIONS_MAP[404] => e
|
34
|
+
raise ResourceNotFound.new exception: e
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
rescue RestClient::ServerBrokeConnection, Errno::ECONNRESET => e
|
37
|
+
raise ServerBrokeConnection.new exception: e
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
rescue RestClient::Exceptions::EXCEPTIONS_MAP[401] => e
|
40
|
+
raise AccessTokenRefused.new exception: e
|
41
41
|
|
42
|
-
|
43
|
-
|
42
|
+
rescue RestClient::Exception => e
|
43
|
+
raise Exception.new exception: e
|
44
44
|
|
45
|
-
|
46
|
-
|
45
|
+
end
|
46
|
+
end
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
def log(path, url, str)
|
49
|
+
f = Logging::File.new(relative_path: path, url: url)
|
50
|
+
f.write str
|
51
|
+
end
|
52
52
|
|
53
|
-
|
53
|
+
def api_version(partial_url)
|
54
|
+
if Configure.api_version.respond_to?(:call)
|
55
|
+
Configure.api_version.call(partial_url)
|
56
|
+
else
|
57
|
+
Configure.api_version
|
58
|
+
end
|
59
|
+
end
|
54
60
|
|
55
|
-
|
56
|
-
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
57
65
|
end
|
data/lib/ts_json_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ts_json_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|