ts_json_api 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +9 -0
- data/lib/generators/ts_json_api/install/install_generator.rb +1 -0
- data/lib/tasks/ts_json_api_tasks.rake +14 -4
- data/lib/ts_json_api/configure.rb +7 -1
- data/lib/ts_json_api/requestor/drivers.rb +2 -2
- data/lib/ts_json_api/requestor/live_feed.rb +3 -3
- data/lib/ts_json_api/requestor/logging.rb +15 -6
- data/lib/ts_json_api/requestor/points.rb +3 -3
- data/lib/ts_json_api/requestor/private_methods.rb +2 -2
- data/lib/ts_json_api/requestor/races.rb +3 -2
- data/lib/ts_json_api/requestor/schedule.rb +2 -2
- data/lib/ts_json_api/requestor/series.rb +1 -1
- data/lib/ts_json_api/requestor/tracks.rb +3 -3
- data/lib/ts_json_api/requestor/weekend.rb +1 -1
- data/lib/ts_json_api/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -27,6 +27,7 @@ TsJsonApi::Configure.setup do |config|
|
|
27
27
|
config.api_version = 2
|
28
28
|
config.logging_enabled = true
|
29
29
|
config.server_url = ""
|
30
|
+
config.timestamped_logs = false
|
30
31
|
end
|
31
32
|
```
|
32
33
|
|
@@ -34,6 +35,14 @@ The `username`, `password`, and `server_url` fields are all requried to specify
|
|
34
35
|
|
35
36
|
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.
|
36
37
|
|
38
|
+
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.
|
39
|
+
|
40
|
+
If you use this feature, we highly encourage you to run the included rake task:
|
41
|
+
|
42
|
+
```shell
|
43
|
+
> bundle exec rake ts_json_api:remove_old_log_files
|
44
|
+
```
|
45
|
+
|
37
46
|
## Usage
|
38
47
|
|
39
48
|
This gem exposes several methods that map directly to API calls from the T&S team.
|
@@ -1,4 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
namespace :ts_json_api do
|
2
|
+
|
3
|
+
desc "will remove timestamped log files older than 24 hours"
|
4
|
+
desc remove_old_log_files: :environment do
|
5
|
+
old_timestamp = 1.day.ago.to_i
|
6
|
+
Dir["#{TsJsonApi::Configure::LOG_FILE_DIRECTORY}/**/*.log"].each do |file|
|
7
|
+
if file =~ /_t(\d+)\.log$/
|
8
|
+
file_timestamp = Time.at($1.to_i)
|
9
|
+
File.delete file if file_timestamp < old_timestamp
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -1,10 +1,15 @@
|
|
1
1
|
module TsJsonApi
|
2
2
|
class Configure
|
3
|
+
|
4
|
+
LOG_FILE_DIRECTORY = Rails.root.join('log', 'ts_json_api')
|
5
|
+
|
3
6
|
class << self
|
4
7
|
|
5
|
-
attr_accessor :api_version, :logging_enabled
|
8
|
+
attr_accessor :api_version, :logging_enabled, :timestamped_logs
|
6
9
|
attr_writer :username, :password, :server_url
|
10
|
+
|
7
11
|
alias_method :logging_enabled?, :logging_enabled
|
12
|
+
alias_method :timestamped_logs?, :timestamped_logs
|
8
13
|
|
9
14
|
def username
|
10
15
|
raise "Must provide an username" if @username.blank?
|
@@ -29,6 +34,7 @@ module TsJsonApi
|
|
29
34
|
|
30
35
|
@api_version = 2
|
31
36
|
@logging_enabled = true
|
37
|
+
@timestamped_logs = false
|
32
38
|
|
33
39
|
end
|
34
40
|
end
|
@@ -7,13 +7,13 @@ module TsJsonApi
|
|
7
7
|
module ClassMethods
|
8
8
|
|
9
9
|
def get_drivers(race_season, series_id)
|
10
|
-
send_json_request_and_deliver_response "
|
10
|
+
send_json_request_and_deliver_response "#{race_season}/#{series_id}/drivers", "driver?race_season=#{race_season}&series_id=#{series_id}"
|
11
11
|
end
|
12
12
|
|
13
13
|
def driver_summary(race_season, series_id, driver_id=nil)
|
14
14
|
url = "driversummary?race_season=#{race_season}&series_id=#{series_id}"
|
15
15
|
url << "&driver_id=#{driver_id}" unless driver_id.blank?
|
16
|
-
send_json_request_and_deliver_response "
|
16
|
+
send_json_request_and_deliver_response "#{race_season}/#{series_id}/#{driver_id}-summary", url
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
@@ -6,15 +6,15 @@ module TsJsonApi
|
|
6
6
|
module ClassMethods
|
7
7
|
|
8
8
|
def live_feed
|
9
|
-
send_json_request_and_deliver_response
|
9
|
+
send_json_request_and_deliver_response "live/live_feed", "livefeed"
|
10
10
|
end
|
11
11
|
|
12
12
|
def live_flag
|
13
|
-
send_json_request_and_deliver_response
|
13
|
+
send_json_request_and_deliver_response "live/live_flag", "liveflag"
|
14
14
|
end
|
15
15
|
|
16
16
|
def live_points
|
17
|
-
send_json_request_and_deliver_response
|
17
|
+
send_json_request_and_deliver_response "live/live_points", "livepoints"
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
1
3
|
module TsJsonApi
|
2
4
|
class Requestor
|
3
5
|
module Logging
|
@@ -6,16 +8,23 @@ module TsJsonApi
|
|
6
8
|
|
7
9
|
module ClassMethods
|
8
10
|
|
9
|
-
def log(
|
11
|
+
def log(path, url, str)
|
10
12
|
return unless Configure.logging_enabled?
|
11
|
-
|
12
|
-
|
13
|
+
|
14
|
+
if Configure.timestamped_logs?
|
15
|
+
path << "_t#{Time.now.to_i}.log"
|
16
|
+
else
|
17
|
+
path << ".log"
|
18
|
+
end
|
19
|
+
|
20
|
+
create_dir_if_not_exists File.dirname(path)
|
21
|
+
File.open(Configure::LOG_FILE_DIRECTORY.join(path), 'w') { |f| f.write "[TIME]: #{Time.now}\n[URL]: #{url}\n\n#{str}" }
|
13
22
|
end
|
14
23
|
|
15
24
|
private
|
16
|
-
def create_dir_if_not_exists
|
17
|
-
dir =
|
18
|
-
|
25
|
+
def create_dir_if_not_exists(path="")
|
26
|
+
dir = Configure::LOG_FILE_DIRECTORY.join path
|
27
|
+
FileUtils.mkpath dir unless Dir.exists?(dir)
|
19
28
|
end
|
20
29
|
|
21
30
|
end
|
@@ -8,14 +8,14 @@ module TsJsonApi
|
|
8
8
|
def points_per_race(race_season, series_id, race_id=nil)
|
9
9
|
|
10
10
|
url = "driverpoints?race_season=#{race_season}&series_id=#{series_id}"
|
11
|
-
|
11
|
+
path = "#{race_season}/#{series_id}/points"
|
12
12
|
|
13
13
|
unless race_id.blank?
|
14
14
|
url << "&race_id=#{race_id}"
|
15
|
-
|
15
|
+
path.gsub! "points.log", "#{race_id}-points"
|
16
16
|
end
|
17
17
|
|
18
|
-
send_json_request_and_deliver_response
|
18
|
+
send_json_request_and_deliver_response path, url
|
19
19
|
|
20
20
|
end
|
21
21
|
|
@@ -6,14 +6,14 @@ module TsJsonApi
|
|
6
6
|
|
7
7
|
module ClassMethods
|
8
8
|
|
9
|
-
def send_json_request_and_deliver_response(
|
9
|
+
def send_json_request_and_deliver_response(path, partial_url)
|
10
10
|
url = "#{Configure.server_url}#{partial_url}"
|
11
11
|
|
12
12
|
response = perfom_request(partial_url)
|
13
13
|
json = response.to_str
|
14
14
|
json.gsub!(/[^\x20-\x7e]/,'')
|
15
15
|
|
16
|
-
log(
|
16
|
+
log(path, url, json)
|
17
17
|
|
18
18
|
JSON.parse(json)
|
19
19
|
end
|
@@ -7,13 +7,14 @@ module TsJsonApi
|
|
7
7
|
module ClassMethods
|
8
8
|
|
9
9
|
def get_race(race_id)
|
10
|
-
send_json_request_and_deliver_response "
|
10
|
+
send_json_request_and_deliver_response "races/#{race_id}", "races/#{race_id}"
|
11
11
|
end
|
12
12
|
|
13
13
|
def races_in_season(race_season, series_id, driver_id=nil)
|
14
14
|
url = "races?race_season=#{race_season}&series_id=#{series_id}"
|
15
15
|
url << "&driver_id=#{driver_id}" unless driver_id.blank?
|
16
|
-
|
16
|
+
path = driver_id.nil? ? "schedule" : "#{driver_id}-races"
|
17
|
+
send_json_request_and_deliver_response "#{race_season}/#{series_id}/#{path}", url
|
17
18
|
end
|
18
19
|
|
19
20
|
end
|
@@ -6,11 +6,11 @@ module TsJsonApi
|
|
6
6
|
module ClassMethods
|
7
7
|
|
8
8
|
def schedule_for_race(race_id)
|
9
|
-
send_json_request_and_deliver_response "
|
9
|
+
send_json_request_and_deliver_response "races/#{race_id}-schedule", "weekendschedule/#{race_id}"
|
10
10
|
end
|
11
11
|
|
12
12
|
def schedule_for_season(race_season, series_id)
|
13
|
-
send_json_request_and_deliver_response "
|
13
|
+
send_json_request_and_deliver_response "#{race_season}/#{series_id}/schedule", "weekendschedule/?race_season=#{race_season}&series_id=#{series_id}"
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -9,13 +9,13 @@ module TsJsonApi
|
|
9
9
|
|
10
10
|
if series_id.blank?
|
11
11
|
url = "track/#{track_id}"
|
12
|
-
|
12
|
+
path = "tracks/#{track_id}"
|
13
13
|
else
|
14
14
|
url = "track/?track_id=#{track_id}&series_id=#{series_id}"
|
15
|
-
|
15
|
+
path = "tracks/#{series_id}/#{track_id}"
|
16
16
|
end
|
17
17
|
|
18
|
-
send_json_request_and_deliver_response
|
18
|
+
send_json_request_and_deliver_response path, url
|
19
19
|
end
|
20
20
|
|
21
21
|
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.1
|
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: 2012-11-
|
12
|
+
date: 2012-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -117,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
117
|
version: '0'
|
118
118
|
segments:
|
119
119
|
- 0
|
120
|
-
hash: -
|
120
|
+
hash: -1078779843776586039
|
121
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
122
|
none: false
|
123
123
|
requirements:
|
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
version: '0'
|
127
127
|
segments:
|
128
128
|
- 0
|
129
|
-
hash: -
|
129
|
+
hash: -1078779843776586039
|
130
130
|
requirements: []
|
131
131
|
rubyforge_project:
|
132
132
|
rubygems_version: 1.8.24
|