ievkit 0.1.1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +9 -4
- data/README.md +1 -0
- data/config/application.example.yml +1 -0
- data/ievkit.gemspec +1 -0
- data/lib/ievkit.rb +2 -0
- data/lib/ievkit/cache.rb +12 -0
- data/lib/ievkit/client.rb +71 -3
- data/lib/ievkit/job.rb +35 -1
- data/lib/ievkit/version.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a498bb62a5338a534689cc343f876155328c8e0
|
4
|
+
data.tar.gz: 7dbabc5103d76f7fdd66132930cf0c4537f971e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67ef1d6ab0ae5573b4eaeb8b48d479b28c4f48f40fe3a9ed5f2355ee2f4860e22e9f7bfd9722654785245753c8c9c4042a60b9cf7cc660ad2435c193df083373
|
7
|
+
data.tar.gz: 815428b6331e312bf5c8191bee959e9027b994ea24ecdedde44824a30e65d46d091be2c8f8dc5b2d2c2f817ebe2e7aed2ae4899a8292b85ffacc5923021f8316
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ievkit (0.
|
4
|
+
ievkit (0.2.0)
|
5
5
|
faraday_middleware (~> 0.10.0)
|
6
6
|
figaro (~> 1.1.1)
|
7
|
+
redis (~> 3.2)
|
7
8
|
rest-client (~> 1.8.0)
|
8
9
|
|
9
10
|
GEM
|
10
11
|
remote: https://rubygems.org/
|
11
12
|
specs:
|
12
13
|
diff-lcs (1.2.5)
|
13
|
-
domain_name (0.5.
|
14
|
+
domain_name (0.5.20160615)
|
14
15
|
unf (>= 0.0.5, < 1.0.0)
|
15
16
|
faraday (0.9.2)
|
16
17
|
multipart-post (>= 1.2, < 3)
|
@@ -20,10 +21,11 @@ GEM
|
|
20
21
|
thor (~> 0.14)
|
21
22
|
http-cookie (1.0.2)
|
22
23
|
domain_name (~> 0.5)
|
23
|
-
mime-types (2.99.
|
24
|
+
mime-types (2.99.2)
|
24
25
|
multipart-post (2.0.0)
|
25
26
|
netrc (0.11.0)
|
26
27
|
rake (11.1.2)
|
28
|
+
redis (3.3.1)
|
27
29
|
rest-client (1.8.0)
|
28
30
|
http-cookie (>= 1.0.2, < 2.0)
|
29
31
|
mime-types (>= 1.16, < 3.0)
|
@@ -55,5 +57,8 @@ DEPENDENCIES
|
|
55
57
|
rake (~> 11.1)
|
56
58
|
rspec
|
57
59
|
|
60
|
+
RUBY VERSION
|
61
|
+
ruby 2.3.1p112
|
62
|
+
|
58
63
|
BUNDLED WITH
|
59
|
-
1.
|
64
|
+
1.12.5
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Ievkit
|
2
2
|
|
3
3
|
[](https://codeclimate.com/github/afimb/ievkit)
|
4
|
+
[](https://gemnasium.com/afimb/ievkit)
|
4
5
|
[](https://badge.fury.io/rb/ievkit)
|
5
6
|
|
6
7
|
## Installation
|
data/ievkit.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency 'figaro', '~> 1.1.1'
|
31
31
|
spec.add_dependency 'faraday_middleware', '~> 0.10.0'
|
32
32
|
spec.add_dependency 'rest-client', '~> 1.8.0'
|
33
|
+
spec.add_dependency 'redis', '~>3.2'
|
33
34
|
|
34
35
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
35
36
|
spec.add_development_dependency 'rake', '~> 11.1'
|
data/lib/ievkit.rb
CHANGED
data/lib/ievkit/cache.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
class Redis
|
2
|
+
def cache(key, expire = nil)
|
3
|
+
value = get(key)
|
4
|
+
return JSON.parse(value) if value
|
5
|
+
return nil unless block_given?
|
6
|
+
value = yield(self)
|
7
|
+
return nil unless value
|
8
|
+
set(key, value.to_json)
|
9
|
+
expire(key, expire) if expire.to_i > 0
|
10
|
+
value
|
11
|
+
end
|
12
|
+
end
|
data/lib/ievkit/client.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
module Ievkit
|
2
2
|
class Client
|
3
|
-
attr_reader :iev_url_prefix, :iev_url_suffix, :iev_url_jobs, :referential
|
3
|
+
attr_reader :iev_url_prefix, :iev_url_prefix_admin, :iev_url_list_tests, :iev_url_suffix, :iev_url_jobs, :referential, :redis
|
4
4
|
|
5
5
|
def initialize(referential)
|
6
6
|
@payload = {}
|
7
7
|
@referential = referential
|
8
8
|
@iev_url_prefix = init_iev_url_prefix
|
9
|
+
@iev_url_prefix_admin = init_iev_url_prefix_admin
|
10
|
+
@iev_url_list_tests = init_iev_url_list_tests
|
9
11
|
@iev_url_jobs = init_iev_url_jobs
|
12
|
+
@redis = Redis.new
|
10
13
|
end
|
11
14
|
|
12
15
|
def prepare_post_request(type, options)
|
@@ -22,11 +25,34 @@ module Ievkit
|
|
22
25
|
end
|
23
26
|
end
|
24
27
|
|
25
|
-
def prepare_request(url, http_method)
|
28
|
+
def prepare_request(url, http_method, disable_cache = false)
|
29
|
+
unless disable_cache
|
30
|
+
cache_key = [url, http_method.to_s].join('_')
|
31
|
+
begin
|
32
|
+
response_cached = @redis.cache(cache_key)
|
33
|
+
return response_cached if response_cached
|
34
|
+
rescue => e
|
35
|
+
Ievkit::Log.logger.fatal("Unable to contact Redis server: #{e.message}")
|
36
|
+
end
|
37
|
+
end
|
26
38
|
init_connection(url)
|
27
39
|
begin
|
28
40
|
response = @connection.send(http_method)
|
29
|
-
|
41
|
+
unless disable_cache
|
42
|
+
cache_control = response.headers['cache-control']
|
43
|
+
max_age = 0
|
44
|
+
no_cache = true
|
45
|
+
if cache_control
|
46
|
+
max_age = cache_control[/max-age=(.*)/, 1].to_i
|
47
|
+
no_cache = false if max_age > 0 && cache_control[/no-transform/]
|
48
|
+
end
|
49
|
+
return parse_response(response) if no_cache
|
50
|
+
@redis.cache(cache_key, max_age) {
|
51
|
+
parse_response(response)
|
52
|
+
}
|
53
|
+
else
|
54
|
+
return parse_response(response)
|
55
|
+
end
|
30
56
|
rescue => e
|
31
57
|
Ievkit::Log.logger.fatal("Unable to contact IEV server: #{e.message}")
|
32
58
|
return false
|
@@ -53,6 +79,29 @@ module Ievkit
|
|
53
79
|
@payload[:file[1]] = Faraday::UploadIO.new(iev_file, 'application/zip', filename)
|
54
80
|
end
|
55
81
|
|
82
|
+
def get_stats
|
83
|
+
@payload = { key: ENV['iev_admin_key'] }
|
84
|
+
init_connection(@iev_url_prefix_admin)
|
85
|
+
begin
|
86
|
+
response = @connection.get('get_monthly_stats', @payload)
|
87
|
+
parse_response(response)
|
88
|
+
rescue => e
|
89
|
+
Ievkit::Log.logger.fatal("Unable to contact IEV server: #{e.message}")
|
90
|
+
return false
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def list_tests(action, format)
|
95
|
+
init_connection(@iev_url_list_tests)
|
96
|
+
begin
|
97
|
+
response = @connection.get("#{action}/#{format}", @payload)
|
98
|
+
parse_response(response)
|
99
|
+
rescue => e
|
100
|
+
Ievkit::Log.logger.fatal("Unable to contact IEV server: #{e.message}")
|
101
|
+
return false
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
56
105
|
protected
|
57
106
|
|
58
107
|
def headers
|
@@ -100,6 +149,25 @@ module Ievkit
|
|
100
149
|
].compact * '/'
|
101
150
|
end
|
102
151
|
|
152
|
+
def init_iev_url_prefix_admin
|
153
|
+
[
|
154
|
+
"#{ENV['IEV_HOST']}:#{ENV['IEV_PORT']}",
|
155
|
+
ENV['IEV_PATH'],
|
156
|
+
'admin',
|
157
|
+
''
|
158
|
+
].compact * '/'
|
159
|
+
end
|
160
|
+
|
161
|
+
def init_iev_url_list_tests
|
162
|
+
[
|
163
|
+
"#{ENV['IEV_HOST']}:#{ENV['IEV_PORT']}",
|
164
|
+
ENV['IEV_PATH'],
|
165
|
+
'admin',
|
166
|
+
'test_list',
|
167
|
+
''
|
168
|
+
].compact * '/'
|
169
|
+
end
|
170
|
+
|
103
171
|
def init_iev_url_suffix(type = nil)
|
104
172
|
[
|
105
173
|
caller_locations(2, 2)[0].label,
|
data/lib/ievkit/job.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Ievkit
|
2
2
|
class Job
|
3
3
|
attr_reader :client, :response
|
4
|
+
attr_accessor :disable_cache
|
4
5
|
|
5
6
|
def initialize(referential_id)
|
6
7
|
@client = Ievkit::Client.new(referential_id)
|
@@ -26,10 +27,43 @@ module Ievkit
|
|
26
27
|
get_job(url).to_s.include?('terminated_jobs')
|
27
28
|
end
|
28
29
|
|
30
|
+
def get_stats
|
31
|
+
@client.get_stats
|
32
|
+
end
|
33
|
+
|
34
|
+
def list_tests(action, format)
|
35
|
+
@client.list_tests(action, format)
|
36
|
+
end
|
37
|
+
|
38
|
+
def download_validation_report(data, errors)
|
39
|
+
csv = []
|
40
|
+
csv << "\uFEFF;Statut/Information;Nombre d'erreurs;Nombre d'avertissements"
|
41
|
+
data.each do |el|
|
42
|
+
t = [el[:name], I18n.t("compliance_check_results.severities.#{el[:status]}"), el[:count_error], el[:count_warning]]
|
43
|
+
csv << t.join(';')
|
44
|
+
next unless el[:check_point_errors]
|
45
|
+
el[:check_point_errors].each do |index|
|
46
|
+
error = errors[index]
|
47
|
+
next unless error
|
48
|
+
t = []
|
49
|
+
esf = error[:source][:file]
|
50
|
+
if esf && esf[:filename]
|
51
|
+
filename = []
|
52
|
+
filename << "#{I18n.t('report.file.line')} #{esf[:line_number]}" if esf[:line_number].to_i > 0
|
53
|
+
filename << "#{I18n.t('report.file.column')} #{esf[:column_number]}" if esf[:column_number].to_i > 0
|
54
|
+
t << filename.join(' ') if filename.present?
|
55
|
+
end
|
56
|
+
t << error[:error_name]
|
57
|
+
csv << ';'+t.join(' ')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
csv.join("\n")
|
61
|
+
end
|
62
|
+
|
29
63
|
protected
|
30
64
|
|
31
65
|
def do_job(url, http_method)
|
32
|
-
@client.prepare_request(url, http_method)
|
66
|
+
@client.prepare_request(url, http_method, @disable_cache)
|
33
67
|
end
|
34
68
|
|
35
69
|
def importer(type, options)
|
data/lib/ievkit/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ievkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno Perles
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: figaro
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.8.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: redis
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.2'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,6 +131,7 @@ files:
|
|
117
131
|
- config/initializers/figaro.rb
|
118
132
|
- ievkit.gemspec
|
119
133
|
- lib/ievkit.rb
|
134
|
+
- lib/ievkit/cache.rb
|
120
135
|
- lib/ievkit/client.rb
|
121
136
|
- lib/ievkit/job.rb
|
122
137
|
- lib/ievkit/railtie.rb
|
@@ -147,4 +162,3 @@ signing_key:
|
|
147
162
|
specification_version: 4
|
148
163
|
summary: ''
|
149
164
|
test_files: []
|
150
|
-
has_rdoc:
|