laa-fee-calculator-client 0.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f8449f4bcfb343e3c9afab992dbfd671dfe11f955d94dd7e773d09130d3778d2
4
+ data.tar.gz: 1c09eb9194ad77223bf7ca4ec9ceab46cad12a65feb56b670ac9cb7d6bfc3c2a
5
+ SHA512:
6
+ metadata.gz: 4485644c9c9e46548968488f787a04cb4339d31d1819ef749a6bbe9dc8a499913f6a8fcda3edbfa15b599bc4ca9bf8d54e88f897b34caf98abbc428a47e277ab
7
+ data.tar.gz: 7eba04cf618951f3812953fe3f5fb4f06e19d8620a91fdbf35777c44bbec8f44f41037db33baea9fde216cd4b9b6ed6c5093f7bc24999b0fcdfbb3526883b917
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
+
7
+ # Specify your gem's dependencies in laa-fee-calculator-client.gemspec
8
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Ministry of Justice
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,195 @@
1
+ [![Build Status](https://travis-ci.org/ministryofjustice/laa-fee-calculator-client.svg?branch=master)](https://travis-ci.org/ministryofjustice/laa-fee-calculator-client)
2
+
3
+ # Legal Aid Agency Fee Calculator Client
4
+
5
+ Ruby client for the [ministryofjustice/laa-fee-calculator](https://github.com/ministryofjustice/laa-fee-calculator). It enables transparent calling of this API's
6
+ endpoints, providing a simple interface for querying data, in particular, the primary function of the API, the `#calculate` endpoint.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'laa-fee-calculator-client'
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install laa-fee-calculator-client
23
+
24
+ ## Usage
25
+
26
+ <a name="quick-start"></a>
27
+ ##### Quick start
28
+
29
+ ```ruby
30
+ # retrieve a calculated value for AGFS scheme 9
31
+ client = LAA::FeeCalculator.client
32
+ fee_scheme = client.fee_schemes(1)
33
+
34
+ # using a hash of options
35
+ fee_scheme.calculate(
36
+ scenario: 5,
37
+ advocate_type: 'JRALONE',
38
+ offence_class: 'E',
39
+ fee_type_code: 'AGFS_APPEAL_CON',
40
+ day: 1,
41
+ number_of_defendants: 1,
42
+ number_of_cases: 1
43
+ )
44
+ # => 130.0
45
+
46
+ # using a block to supply options
47
+ fee_scheme.calculate do |options|
48
+ options[:scenario] = 5
49
+ options[:offence_class] = 'E'
50
+ options[:advocate_type] = 'JRALONE'
51
+ options[:fee_type_code] = 'AGFS_APPEAL_CON'
52
+ options[:day] = 1
53
+ options[:number_of_defendants] = 1
54
+ options[:number_of_cases] = 1
55
+ end
56
+ # => 130.0
57
+ ```
58
+
59
+ ##### Lookup endpoints
60
+
61
+ Lookup endpoints (`advocate_types`, `offence_classes`, `scenarios`, `fee_types`, `modifier_types`, `units`) respond to a single argument for the id, or options hashes (where id can also be specified explicitly). Any option key specified, except `id:`, will be converted to a URI param in the resulting request. `id`s will become part of the URI path itself. Options specified should therefore be available on the [ministryofjustice/laa-fee-caclulator](https://github.com/ministryofjustice/laa-fee-calculator)
62
+
63
+ ```ruby
64
+ # instantiate a client
65
+ client = LAA::FeeCalculator.client
66
+ ```
67
+
68
+ ###### Fee schemes
69
+
70
+ All other endpoints are queried based on fee scheme so you will need one of these first
71
+
72
+ ```ruby
73
+ # by id
74
+ fee_scheme = client.fee_schemes(1)
75
+ # or
76
+ fee_scheme = client.fee_schemes(id: 1)
77
+
78
+
79
+ # by type and/or date came into force
80
+ fee_scheme = client.fee_schemes(type: 'AGFS', case_date: '2018-01-01')
81
+ # => AGFS scheme 9 object
82
+
83
+ fee_scheme = client.fee_schemes(type: 'AGFS', case_date: '2018-04-01')
84
+ # => AGFS scheme 10 object
85
+
86
+ ```
87
+ note: supplier type and its args are to be changed (20/06/2018) in API
88
+
89
+ ###### Lookup data
90
+
91
+ ```
92
+ # all
93
+ fee_scheme.advocate_types
94
+ fee_scheme.scenarios
95
+ fee_scheme.offence_classes
96
+ fee_scheme.fee_types
97
+ fee_scheme.modifier_types
98
+ fee_scheme.units
99
+
100
+ # filtered
101
+ # by id
102
+ fee_scheme.advocate_types('JRALONE')
103
+ fee_scheme.modifier_types(1)
104
+
105
+ # by options
106
+ fee_scheme.modifier_types(fee_type_code: 'AGFS_APPEAL_CON')
107
+ ```
108
+
109
+ ###### Calculate
110
+ see the [Quick start](#quick-start)
111
+
112
+
113
+ ## Development
114
+
115
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake` to run the tests.
116
+
117
+
118
+ To experiment with the code:
119
+
120
+ - clone the API's repo
121
+ ```bash
122
+ git clone git@github.com:ministryofjustice/laa-fee-calculator.git
123
+ ```
124
+
125
+ - setup and run the [API locally](https://github.com/ministryofjustice/laa-fee-calculator/blob/develop/docs/DEVELOPMENT.md)
126
+ - run `bin/console` for an interactive prompt in this repo's directory.
127
+
128
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
129
+
130
+ ## Testing
131
+
132
+ The test suite makes extensive use of the [VCR](https://github.com/vcr/vcr) gem to stub requests to the external API. Any examples within a `describe` block with a `:vcr` tag will automatically use (or generate) VCR cassettes via an `around` block - see `spec_helper.rb`. All cassettes are stored in the `spec/vcr` directory and automatically named after the spec that produced them. Only new episodes/requests are created.
133
+
134
+ To recreate all cassettes:
135
+
136
+ - run the [laa-fee-calculator](https://github.com/ministryofjustice/laa-fee-calculator) API locally
137
+ - delete all files in `spec/vcr`
138
+ - `$ rspec`
139
+
140
+ Alternatively you can run tests against the local version of the API:
141
+
142
+ ```bash
143
+ # run tests against local API
144
+ $ VCR_OFF=true rspec
145
+ ```
146
+
147
+ You can also test against a hosted API by modifying the following in the `spec_helper.rb`
148
+
149
+ ```ruby
150
+ # run tests against a remote host
151
+ LAA::FeeCalculator.configure do |config|
152
+ config.host = LAA::FeeCalculator::Configuration::DEV_LAA_FEE_CALCULATOR_API_V1
153
+ end
154
+
155
+ ```
156
+
157
+ ## Contributing
158
+
159
+ Bug reports and pull requests are welcome on GitHub at [ministryofjustice/laa-fee-calculator-client](https://github.com/ministryofjustice/laa-fee-calculator-client)
160
+
161
+ ## Publishing
162
+
163
+ 1. Make required changes, run specs (rerecord vcr cassettes if necessary)
164
+
165
+ 2. Run `bin/ruby_version_test` to test against ruby versions (2.4+ supported at present)
166
+
167
+ 3. Update the version in `lib/laa/fee_calculator/version` using [semantic versioning](https://guides.rubygems.org/patterns/#semantic-versioning).
168
+
169
+ 4. PR the change, code-review, merge etc.
170
+
171
+ 5. Pull master and tag it with the new version number:
172
+
173
+ ```
174
+ $ git tag -a v0.1.1 -m "version 0.1.1 - description"
175
+ ```
176
+
177
+ ```
178
+ $ git push origin v0.1.1
179
+ ```
180
+
181
+ 6. Build the gem
182
+
183
+ ```
184
+ $ gem build laa-fee-calculator-client.gemspec
185
+ ```
186
+
187
+ 7. Publish to [Rubygems](https://rubygems.org)
188
+
189
+ ```
190
+ $ gem push laa-fee-calculator-client-[VERSION].gem
191
+ ```
192
+
193
+ ## License
194
+
195
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+ require 'rubocop/rake_task'
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ RuboCop::RakeTask.new
9
+
10
+ task default: %i[rubocop spec]
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "pry-byebug"
6
+ require "laa/fee_calculator"
7
+
8
+ # You can add fixtures and/or initialization code here to make experimenting
9
+ # with your gem easier. You can also use a different console, if you like.
10
+
11
+ # (If you use this, don't forget to add pry to your Gemfile!)
12
+
13
+ # Pry.start
14
+
15
+ # configure for local development use
16
+ LAA::FeeCalculator.configure do |config|
17
+ config.host = 'http://localhost:8000/api/v1'
18
+ end
19
+
20
+ require "irb"
21
+ IRB.start(__FILE__)
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ rubies=("ruby-2.4.4" "ruby-2.5.0" "ruby-2.5.1")
6
+ for i in "${rubies[@]}"
7
+ do
8
+ echo "====================================================="
9
+ echo "$i: Start Test"
10
+ echo "====================================================="
11
+ if [[ $(rvm list | grep $i) ]]; then echo "$i already installed!"; else rvm install $i; fi
12
+ rvm $i exec gem install bundler
13
+ rvm $i exec bundle install
14
+ rvm $i exec bundle exec rspec spec
15
+ echo "====================================================="
16
+ echo "$i: End Test"
17
+ echo "====================================================="
18
+ done
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'laa/fee_calculator/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'laa-fee-calculator-client'
9
+ spec.version = LAA::FeeCalculator::VERSION
10
+ spec.authors = ['Joel Sugarman', 'Ministry of Justice']
11
+ spec.email = ['joel.sugarman@digital.justice.gov.uk', 'tools@digital.justice.gov.uk']
12
+ spec.date = '2018-06-29'
13
+ spec.summary = 'Ruby client for the Legal Aid Agency fee calculator API'
14
+ spec.description = "Ruby client for the Ministry of Justices LAA fee calculator API. A simple interface for transparent calling of the API endpoints to query data and return calculated fee amounts."
15
+ spec.homepage = 'https://github.com/ministryofjustice/laa-fee-calculator-client'
16
+ spec.license = 'MIT'
17
+ spec.extra_rdoc_files = ["LICENSE", "README.md"]
18
+
19
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
+ f.match(%r{^(test/|spec/|features/|\..*)})
21
+ end
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ # see bin/ruby_version_test
27
+ spec.required_ruby_version = '>= 2.4.0'
28
+
29
+ spec.add_runtime_dependency 'addressable', '~> 2.3', '>= 2.3.7'
30
+ spec.add_runtime_dependency 'faraday', '~> 0.9.2'
31
+
32
+ spec.add_development_dependency "awesome_print"
33
+ spec.add_development_dependency "bundler", "~> 1.16"
34
+ spec.add_development_dependency "pry-byebug"
35
+ spec.add_development_dependency "rake", "~> 10.0"
36
+ spec.add_development_dependency "rspec", "~> 3.0"
37
+ spec.add_development_dependency "rubocop", '~> 0.50'
38
+ spec.add_development_dependency "vcr"
39
+ spec.add_development_dependency "webmock"
40
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../fee_calculator'
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'laa/fee_calculator/version'
4
+ require 'laa/fee_calculator/configuration'
5
+ require 'laa/fee_calculator/raise_error'
6
+ require 'laa/fee_calculator/connection'
7
+ require 'laa/fee_calculator/fee_scheme'
8
+ require 'laa/fee_calculator/calculator'
9
+ require 'laa/fee_calculator/client'
10
+
11
+ module LAA
12
+ module FeeCalculator
13
+ class << self
14
+ def root
15
+ spec = Gem::Specification.find_by_name("laa-fee-calculator-client")
16
+ spec.gem_dir
17
+ end
18
+
19
+ def client
20
+ Client.new
21
+ end
22
+
23
+ attr_writer :configuration
24
+ def configuration
25
+ @configuration ||= Configuration.new
26
+ end
27
+ alias config configuration
28
+
29
+ def configure
30
+ yield(configuration) if block_given?
31
+ configuration
32
+ end
33
+
34
+ def reset
35
+ @configuration = Configuration.new
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LAA
4
+ module FeeCalculator
5
+ class Calculator
6
+ extend Forwardable
7
+ def_delegators :connection, :get
8
+
9
+ attr_reader :scheme_pk, :options
10
+
11
+ def initialize(scheme_pk, options)
12
+ @scheme_pk = scheme_pk
13
+ @options = options
14
+ end
15
+
16
+ def call
17
+ uri.query_values = options.reject { |k, _v| k.eql?(:id) }
18
+ json = get(uri).body
19
+ JSON.parse(json)['amount']
20
+ end
21
+
22
+ private
23
+
24
+ def uri
25
+ @uri ||= Addressable::URI.parse("fee-schemes/#{scheme_pk}/calculate/")
26
+ end
27
+
28
+ def connection
29
+ @connection ||= Connection.instance
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ require "addressable/uri"
2
+
3
+ module LAA
4
+ module FeeCalculator
5
+ class Client
6
+ extend Forwardable
7
+
8
+ attr_reader :connection
9
+ alias conn connection
10
+
11
+ attr_accessor :fee_scheme
12
+
13
+ def_delegators :connection, :host, :url_prefix, :port, :get, :ping
14
+
15
+ def initialize
16
+ @connection = Connection.instance
17
+ end
18
+
19
+ def fee_schemes(id = nil, **options)
20
+ uri = 'fee-schemes/'
21
+ id ||= options.fetch(:id, nil)
22
+ uri.concat(id.to_s, "/") if id
23
+ uri = Addressable::URI.parse(uri)
24
+ uri.query_values = options.reject { |k, _v| k.eql?(:id) }
25
+
26
+ json = get(uri).body
27
+
28
+ fstruct = JSON.parse(json, object_class: FeeScheme)
29
+ return fstruct unless fstruct.respond_to?(:results)
30
+ return fstruct.results.first if fstruct.results.size.eql?(1)
31
+ fstruct.results
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LAA
4
+ module FeeCalculator
5
+ class Configuration
6
+ DEV_LAA_FEE_CALCULATOR_API_V1 = 'https://laa-fee-calculator-dev.apps.non-production.k8s.integration.dsd.io/api/v1'
7
+ HEADERS = { 'Accept' => 'application/json', 'User-Agent' => USER_AGENT }.freeze
8
+
9
+ attr_accessor :host, :headers
10
+
11
+ def initialize
12
+ @host ||= host || DEV_LAA_FEE_CALCULATOR_API_V1
13
+ @headers ||= headers || HEADERS
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'singleton'
4
+ require 'faraday'
5
+
6
+ module LAA
7
+ module FeeCalculator
8
+ class Connection
9
+ include Singleton
10
+ extend Forwardable
11
+
12
+ attr_reader :conn
13
+ def_delegators :conn, :port, :headers, :url_prefix, :options, :ssl, :get
14
+
15
+ def initialize
16
+ @conn = Faraday.new(url: LAA::FeeCalculator.configuration.host, headers: default_headers) do |conn|
17
+ conn.use LAA::FeeCalculator::RaiseError
18
+ conn.use Faraday::Adapter::NetHttp
19
+ end
20
+ end
21
+
22
+ class << self
23
+ def host
24
+ LAA::FeeCalculator.configuration.host
25
+ end
26
+ end
27
+
28
+ def host
29
+ self.class.host
30
+ end
31
+
32
+ def ping
33
+ get('/ping.json')
34
+ end
35
+
36
+ private
37
+
38
+ def default_headers
39
+ LAA::FeeCalculator.configuration.headers
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LAA
4
+ module FeeCalculator
5
+ # see: laa/fee_calculator/raise_error
6
+
7
+ # raised for failed response status between 400 and 599 and not handled
8
+ # by classes below
9
+ class ClientError < Faraday::Error::ClientError
10
+ # overide the e.message attribute
11
+ # e.g. raise LAA::FeeCalculator::ResponseError.new(response)
12
+ # => #<LAA::FeeCalculator::ResponseError: "`case_date` should be in the format YYYY-MM-DD">
13
+ def to_s
14
+ response[:body]
15
+ end
16
+ end
17
+
18
+ # raised when API response is bad request: 400
19
+ # e.g. body ["`case_date` should be in the format YYYY-MM-DD"]
20
+ class ResponseError < ClientError
21
+ end
22
+
23
+ # raised when API response is not found: 404:
24
+ # e.g. body { "detail": "Not found." }
25
+ # TODO: consider raising for empty results i.e. results: [] ??
26
+ class ResourceNotFound < ResponseError
27
+ def to_s
28
+ h = JSON.parse(response[:body])
29
+ h.each_with_object(+'') do |(k, v), message|
30
+ message.concat("#{k} #{v}")
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'laa/fee_calculator/has_manyable'
4
+
5
+ module LAA
6
+ module FeeCalculator
7
+ class FeeScheme < OpenStruct
8
+ include HasManyable
9
+ extend Forwardable
10
+ def_delegators :connection, :get
11
+
12
+ has_many :advocate_types
13
+ has_many :scenarios
14
+ has_many :offence_classes
15
+ has_many :fee_types
16
+ has_many :units
17
+ has_many :modifier_types
18
+
19
+ def calculate(**options)
20
+ yield options if block_given?
21
+ LAA::FeeCalculator::Calculator.new(id, options).call
22
+ end
23
+
24
+ private
25
+
26
+ def connection
27
+ @connection ||= Connection.instance
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+
3
+ module LAA
4
+ module FeeCalculator
5
+ module HasManyable
6
+ def self.included(base)
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def has_many(association)
12
+ define_method("#{association}_uri".to_sym) do |scheme_pk = nil, id = nil|
13
+ uri = scheme_pk.nil? ? "#{association.to_s.tr('_', '-')}/" : "fee-schemes/#{scheme_pk}/#{association.to_s.tr('_', '-')}/"
14
+ uri = uri.concat(id.to_s, '/') unless id.nil?
15
+ Addressable::URI.parse(uri)
16
+ end
17
+
18
+ define_method(association) do |id = nil, **options|
19
+ id ||= options&.fetch(:id, nil)
20
+ uri = self.send("#{association}_uri", self.id, id)
21
+ uri.query_values = options.reject { |k, _v| k.eql?(:id) }
22
+
23
+ json = get(uri).body
24
+
25
+ ostruct = JSON.parse(json, object_class: OpenStruct)
26
+ return ostruct unless ostruct.respond_to?(:results)
27
+ ostruct.results
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'laa/fee_calculator/errors'
5
+
6
+ module LAA
7
+ module FeeCalculator
8
+ # Wrap Faraday adapter error handling with
9
+ # gem specific handlers.
10
+ #
11
+ class RaiseError < Faraday::Response::Middleware
12
+ CLIENT_ERROR_STATUSES = 400...600
13
+
14
+ def on_complete(env)
15
+ case env[:status]
16
+ when 400
17
+ raise LAA::FeeCalculator::ResponseError.new(response_values(env))
18
+ when 404
19
+ raise LAA::FeeCalculator::ResourceNotFound.new(response_values(env))
20
+ when CLIENT_ERROR_STATUSES
21
+ raise LAA::FeeCalculator::ClientError.new(response_values(env))
22
+ end
23
+ end
24
+
25
+ def response_values(env)
26
+ { status: env.status, headers: env.response_headers, body: env.body }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LAA
4
+ module FeeCalculator
5
+ VERSION = "0.1.1"
6
+ USER_AGENT = "laa-fee-calculator-client/#{VERSION}"
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,215 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: laa-fee-calculator-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Joel Sugarman
8
+ - Ministry of Justice
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2018-06-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: addressable
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.3'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.7
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '2.3'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.7
34
+ - !ruby/object:Gem::Dependency
35
+ name: faraday
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.2
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.2
48
+ - !ruby/object:Gem::Dependency
49
+ name: awesome_print
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.16'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.16'
76
+ - !ruby/object:Gem::Dependency
77
+ name: pry-byebug
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: rake
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rspec
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: rubocop
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.50'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.50'
132
+ - !ruby/object:Gem::Dependency
133
+ name: vcr
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ type: :development
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: webmock
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ description: Ruby client for the Ministry of Justices LAA fee calculator API. A simple
161
+ interface for transparent calling of the API endpoints to query data and return
162
+ calculated fee amounts.
163
+ email:
164
+ - joel.sugarman@digital.justice.gov.uk
165
+ - tools@digital.justice.gov.uk
166
+ executables: []
167
+ extensions: []
168
+ extra_rdoc_files:
169
+ - LICENSE
170
+ - README.md
171
+ files:
172
+ - Gemfile
173
+ - LICENSE
174
+ - README.md
175
+ - Rakefile
176
+ - bin/console
177
+ - bin/ruby_version_test
178
+ - bin/setup
179
+ - laa-fee-calculator-client.gemspec
180
+ - lib/laa/fee/calculator/client.rb
181
+ - lib/laa/fee_calculator.rb
182
+ - lib/laa/fee_calculator/calculator.rb
183
+ - lib/laa/fee_calculator/client.rb
184
+ - lib/laa/fee_calculator/configuration.rb
185
+ - lib/laa/fee_calculator/connection.rb
186
+ - lib/laa/fee_calculator/errors.rb
187
+ - lib/laa/fee_calculator/fee_scheme.rb
188
+ - lib/laa/fee_calculator/has_manyable.rb
189
+ - lib/laa/fee_calculator/raise_error.rb
190
+ - lib/laa/fee_calculator/version.rb
191
+ homepage: https://github.com/ministryofjustice/laa-fee-calculator-client
192
+ licenses:
193
+ - MIT
194
+ metadata: {}
195
+ post_install_message:
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: 2.4.0
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ requirements: []
210
+ rubyforge_project:
211
+ rubygems_version: 2.7.6
212
+ signing_key:
213
+ specification_version: 4
214
+ summary: Ruby client for the Legal Aid Agency fee calculator API
215
+ test_files: []