defra_ruby_govpay 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 985dbbc4e62af28fb16d7af3ff829f171dd570f41014b2408eb07e686d3776a3
4
- data.tar.gz: 6605967ad08002c8633f82cef44f3910dbf1c5e66546ad6a2565ec92dd2792f2
3
+ metadata.gz: 2decfa9d321b4886b2c4aa340730cc04e315318a94df1c1b31ecc4219f1efe1e
4
+ data.tar.gz: 5dc7af54e47bf042414ff1f730eb6d2f2444e35c917d68ecca24f3c251116a1a
5
5
  SHA512:
6
- metadata.gz: 24b85aa48412e7e55e33f3ed8a8c31536370f6fb8c8f34a0460c39c17b582812752f53f50328729ce09aea05c167a9e7d80b2b4f3825e844dd262530ab89b4df
7
- data.tar.gz: 22092a2f738956cec84167e3dc3d834024e69e1c7d5812049f2a40a1bf7c0409e425fa42b0abae151140c98916a1f15c7112e7586b1ca3e1f54a87a9b254de9d
6
+ metadata.gz: 7ebef882ca7c22536dd057a6b9117055d0dfee7f82208b2d65f57d142a26e7650941da1c8c3fbc8e4f91eac345ae4fa2e0d9da264d36a6c0494443e7709b4593
7
+ data.tar.gz: 126ae4b0e31d66d9ab9a206174da49bc606a84e58d67c67b71b60c0b8108d6aa02aef3bf246dce20f87e471323127fcc77d007dcf0bddc16cabd56c582622304
data/.gitignore CHANGED
@@ -6,6 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
-
9
+ *.gem
10
10
  # rspec failure tracking
11
11
  .rspec_status
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- defra_ruby_govpay (0.1.0)
4
+ defra_ruby_govpay (0.1.2)
5
5
  rest-client (~> 2.1)
6
6
 
7
7
  GEM
@@ -22,11 +22,11 @@ module DefraRubyGovpay
22
22
  end
23
23
 
24
24
  def send_request(method:, path:, params: nil, is_moto: false)
25
- puts build_log_message(method, path, params, is_moto)
25
+ Rails.logger.info build_log_message(method, path, params, is_moto)
26
26
 
27
27
  begin
28
28
  response = execute_request(method, path, params, is_moto)
29
- puts "Received response from Govpay: #{response}"
29
+ Rails.logger.info "Received response from Govpay: #{response}"
30
30
  response
31
31
  rescue StandardError => error
32
32
  handle_error(error, method, path, params)
@@ -53,7 +53,7 @@ module DefraRubyGovpay
53
53
 
54
54
  def handle_error(error, method, path, params)
55
55
  error_message = "Error sending request to govpay (#{method} #{path}, params: #{params}): #{error}"
56
- puts error_message
56
+ Rails.logger.info error_message
57
57
  raise GovpayApiError, error_message
58
58
  end
59
59
 
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Error < DefraRubyGovpay::Object
4
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+
5
+ module DefraRubyGovpay
6
+ # Generic Object. Takes the hash/Json returned from the Govpay API
7
+ # and gives us openstruct objects for easier reading/consuming
8
+ class Object < OpenStruct
9
+ def initialize(attributes)
10
+ super to_ostruct(attributes)
11
+ end
12
+
13
+ def to_ostruct(obj)
14
+ case obj
15
+ when Hash
16
+ OpenStruct.new(obj.transform_values { |v| to_ostruct(v) })
17
+ when Array
18
+ obj.map { |o| to_ostruct(o) }
19
+ when String
20
+ string_reader(obj)&.strip
21
+ else # Likely a primative value
22
+ obj
23
+ end
24
+ end
25
+
26
+ def string_reader(value)
27
+ return if nil_value?(value)
28
+
29
+ value = value.to_s
30
+ value = yield value if block_given?
31
+
32
+ value
33
+ end
34
+
35
+ def nil_value?(value)
36
+ value.nil? ||
37
+ %w[nil null].any?(
38
+ value
39
+ .to_s
40
+ .strip
41
+ .downcase
42
+ )
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DefraRubyGovpay
4
+ # The Payment class represents a payment object in the Govpay Integration.
5
+ # It contains methods to check refund status and details about the payment.
6
+ class Payment < Object
7
+ def refundable?(amount_requested = 0)
8
+ refund.status == "available" &&
9
+ refund.amount_available > refund.amount_submitted &&
10
+ amount_requested <= refund.amount_available
11
+ end
12
+
13
+ def refund
14
+ refund_summary
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DefraRubyGovpay
4
+ # The Refund class represents a refund object in the Govpay Integration.
5
+ # It provides methods to check the status of a refund.
6
+ class Refund < Object
7
+ def success?
8
+ status == "success"
9
+ end
10
+
11
+ def submitted?
12
+ status == "submitted"
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DefraRubyGovpay
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -3,6 +3,10 @@
3
3
  require "json"
4
4
  require_relative "defra_ruby_govpay/version"
5
5
  require_relative "defra_ruby_govpay/configuration"
6
+ require_relative "defra_ruby_govpay/object"
7
+ require_relative "defra_ruby_govpay/payment"
8
+ require_relative "defra_ruby_govpay/refund"
9
+ require_relative "defra_ruby_govpay/error"
6
10
  require_relative "defra_ruby_govpay/api"
7
11
 
8
12
  # The DefraRubyGovpay module facilitates integration with Govpay services.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defra_ruby_govpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerome Pratt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-18 00:00:00.000000000 Z
11
+ date: 2023-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -46,6 +46,10 @@ files:
46
46
  - lib/defra_ruby_govpay.rb
47
47
  - lib/defra_ruby_govpay/api.rb
48
48
  - lib/defra_ruby_govpay/configuration.rb
49
+ - lib/defra_ruby_govpay/error.rb
50
+ - lib/defra_ruby_govpay/object.rb
51
+ - lib/defra_ruby_govpay/payment.rb
52
+ - lib/defra_ruby_govpay/refund.rb
49
53
  - lib/defra_ruby_govpay/version.rb
50
54
  - sig/defra_ruby_govpay.rbs
51
55
  homepage: https://github.com/DEFRA/defra-ruby-govpay