glimr-api-client 0.1.3 → 0.1.4
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.lock +4 -3
- data/README.md +6 -0
- data/glimr_api_client.gemspec +1 -0
- data/lib/glimr_api_client/api.rb +16 -10
- data/lib/glimr_api_client/available.rb +2 -3
- data/lib/glimr_api_client/version.rb +1 -1
- data/lib/tasks/mutant.rake +4 -44
- 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: a95379c7f68eb8bfdfa5a18fe3d28d1f540bdfd0
|
4
|
+
data.tar.gz: da42193aea4ccd8b6488f4170890a7ae63a4e273
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b883fe2a22fa59cde745fa11c8b18131b45d73fe4e2bcabf2bbcc1ffa729a3985f8115c8d36558803328093e6ba99a34b230da1c15021959c1c1160921f5708
|
7
|
+
data.tar.gz: 25564435a7cfe5f88e7dfef8e2a5e61912b2749282d66a7ab15479407ef4b17deb0752a5094d6e194c89c6c1426449e6f8943843df8b158ed4de220265fc8574
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
glimr-api-client (0.1.
|
4
|
+
glimr-api-client (0.1.4)
|
5
|
+
activesupport (~> 5.0)
|
5
6
|
excon (~> 0.51)
|
6
7
|
|
7
8
|
GEM
|
@@ -75,7 +76,7 @@ GEM
|
|
75
76
|
docile (1.1.5)
|
76
77
|
equalizer (0.0.11)
|
77
78
|
erubis (2.7.0)
|
78
|
-
excon (0.
|
79
|
+
excon (0.54.0)
|
79
80
|
fuubar (2.0.0)
|
80
81
|
rspec (~> 3.0)
|
81
82
|
ruby-progressbar (~> 1.4)
|
@@ -249,4 +250,4 @@ DEPENDENCIES
|
|
249
250
|
sqlite3 (~> 1.3)
|
250
251
|
|
251
252
|
BUNDLED WITH
|
252
|
-
1.
|
253
|
+
1.13.3
|
data/README.md
CHANGED
@@ -7,6 +7,12 @@ use in various UK tribunals.
|
|
7
7
|
|
8
8
|
## Usage
|
9
9
|
|
10
|
+
### Configuration
|
11
|
+
|
12
|
+
The gem expects a `GLIMR_API_URL` environment variable, providing the endpoint at which the API can be found. This will be something like; `https://glimr-api.taxtribunals.dsd.io`
|
13
|
+
|
14
|
+
This URL must be accessible from wherever your code is running.
|
15
|
+
|
10
16
|
### Check Availablity
|
11
17
|
|
12
18
|
```ruby
|
data/glimr_api_client.gemspec
CHANGED
data/lib/glimr_api_client/api.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'excon'
|
2
|
+
require 'active_support'
|
3
|
+
require 'active_support/core_ext/object/to_query'
|
4
|
+
|
1
5
|
module GlimrApiClient
|
2
6
|
module Api
|
3
7
|
|
@@ -7,13 +11,12 @@ module GlimrApiClient
|
|
7
11
|
# Only timeouts and network issues raise errors.
|
8
12
|
handle_response_errors(resp)
|
9
13
|
@body = resp.body
|
10
|
-
@status = resp.status
|
11
14
|
}
|
12
15
|
rescue Excon::Error => e
|
13
|
-
if endpoint
|
14
|
-
raise
|
16
|
+
if endpoint.eql?('/paymenttaken')
|
17
|
+
raise PaymentNotificationFailure, e
|
15
18
|
else
|
16
|
-
raise
|
19
|
+
raise Unavailable, e
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
@@ -24,12 +27,14 @@ module GlimrApiClient
|
|
24
27
|
private
|
25
28
|
|
26
29
|
def handle_response_errors(resp)
|
27
|
-
if resp.status
|
28
|
-
raise
|
29
|
-
elsif (400..599).cover?(resp.status) && endpoint == '/paymenttaken'
|
30
|
-
raise GlimrApiClient::PaymentNotificationFailure, resp.status
|
30
|
+
if (!endpoint.eql?('/paymenttaken') && resp.status.equal?(404))
|
31
|
+
raise CaseNotFound, resp.status
|
31
32
|
elsif (400..599).cover?(resp.status)
|
32
|
-
|
33
|
+
if endpoint.eql?('/paymenttaken')
|
34
|
+
raise PaymentNotificationFailure, resp.status
|
35
|
+
else
|
36
|
+
raise Unavailable, resp.status
|
37
|
+
end
|
33
38
|
end
|
34
39
|
end
|
35
40
|
|
@@ -40,7 +45,8 @@ module GlimrApiClient
|
|
40
45
|
'Content-Type' => 'application/json',
|
41
46
|
'Accept' => 'application/json'
|
42
47
|
},
|
43
|
-
persistent: true
|
48
|
+
persistent: true,
|
49
|
+
connect_timeout: 15
|
44
50
|
)
|
45
51
|
end
|
46
52
|
end
|
data/lib/tasks/mutant.rake
CHANGED
@@ -1,49 +1,9 @@
|
|
1
1
|
task :mutant do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
raise 'Mutation testing failed'
|
7
|
-
end
|
2
|
+
vars = 'NOCOVERAGE=true'
|
3
|
+
flags = '--include lib --use rspec --fail-fast'
|
4
|
+
unless system("#{vars} mutant #{flags} GlimrApiClient*")
|
5
|
+
raise 'Mutation testing failed'
|
8
6
|
end
|
9
7
|
end
|
10
8
|
|
11
9
|
task(:default).prerequisites << task(:mutant)
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def classes_to_mutate
|
16
|
-
files = grep_files_for_classes
|
17
|
-
klasses = extract_classes_for_mutation(files)
|
18
|
-
klasses.map { |k|
|
19
|
-
setup_class_for_run(k)
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
# This is a nasty hack because we’re using POROs; otherwise, we could just use
|
24
|
-
# ApplicationRecord.descendants...
|
25
|
-
#
|
26
|
-
# Grepping through the source code seemed to be the most pragmatic solution
|
27
|
-
# so that developers don’t need to remember to add new classes to a list for
|
28
|
-
# mutation testing, but it’s not ideal
|
29
|
-
def grep_files_for_classes
|
30
|
-
Dir.glob('lib/**/*.rb').
|
31
|
-
map { |f|
|
32
|
-
# There are some examples of `class << self` in codebase.
|
33
|
-
File.readlines(f).grep(/\bclass(?!\s<<)/)
|
34
|
-
}.flatten
|
35
|
-
end
|
36
|
-
|
37
|
-
def extract_classes_for_mutation(files)
|
38
|
-
re = /class (?<klass>\w+)/
|
39
|
-
|
40
|
-
files.map { |s|
|
41
|
-
re.match(s)[:klass]
|
42
|
-
}.compact
|
43
|
-
end
|
44
|
-
|
45
|
-
def setup_class_for_run(klass)
|
46
|
-
Object.const_get(klass)
|
47
|
-
rescue NameError
|
48
|
-
Object.const_get("GlimrApiClient::#{klass}")
|
49
|
-
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimr-api-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Tyree
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0.51'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: activesupport
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '5.0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '5.0'
|
181
195
|
description:
|
182
196
|
email:
|
183
197
|
- todd.tyree@digital.justice.gov.uk
|
@@ -225,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
239
|
version: '0'
|
226
240
|
requirements: []
|
227
241
|
rubyforge_project:
|
228
|
-
rubygems_version: 2.
|
242
|
+
rubygems_version: 2.5.1
|
229
243
|
signing_key:
|
230
244
|
specification_version: 4
|
231
245
|
summary: Easy integration with the glimr case management system
|