credit_gateway 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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +24 -9
  3. data/lib/credit_gateway/authenticate.rb +1 -1
  4. data/lib/credit_gateway/bank_connection.rb +21 -0
  5. data/lib/credit_gateway/bank_connection_params.rb +9 -0
  6. data/lib/credit_gateway/bank_repository.rb +48 -0
  7. data/lib/credit_gateway/bank_subject.rb +21 -0
  8. data/lib/credit_gateway/base_model.rb +2 -2
  9. data/lib/credit_gateway/base_repository.rb +4 -6
  10. data/lib/credit_gateway/camelizer_lower.rb +14 -0
  11. data/lib/credit_gateway/client.rb +12 -7
  12. data/lib/credit_gateway/{score_data_response.rb → company.rb} +2 -2
  13. data/lib/credit_gateway/company_repository.rb +16 -0
  14. data/lib/credit_gateway/configuration.rb +5 -4
  15. data/lib/credit_gateway/errors.rb +2 -0
  16. data/lib/credit_gateway/faraday_auth.rb +3 -1
  17. data/lib/credit_gateway/rating.rb +8 -2
  18. data/lib/credit_gateway/rating_component.rb +18 -0
  19. data/lib/credit_gateway/rating_metadata.rb +16 -0
  20. data/lib/credit_gateway/rating_status.rb +21 -0
  21. data/lib/credit_gateway/score.rb +22 -0
  22. data/lib/credit_gateway/{behavioral_badge.rb → score_badge.rb} +6 -1
  23. data/lib/credit_gateway/score_repository.rb +31 -0
  24. data/lib/credit_gateway/version.rb +1 -1
  25. data/lib/credit_gateway.rb +3 -4
  26. metadata +19 -15
  27. data/lib/credit_gateway/behavioral_score.rb +0 -21
  28. data/lib/credit_gateway/behavioral_score_repository.rb +0 -38
  29. data/lib/credit_gateway/financial_score_repository.rb +0 -16
  30. data/lib/credit_gateway/full_score.rb +0 -20
  31. data/lib/credit_gateway/identity.rb +0 -9
  32. data/lib/credit_gateway/score_data_repository.rb +0 -17
  33. data/lib/credit_gateway/score_data_request.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dcf55c224cd6f61d8d4564ef05ab738341518dea922f618a1dc6ee669c1fb99
4
- data.tar.gz: 32f0197981622fe82d4593acbabe70d9b6cbb2d2717f42d8dfcd277378b1200d
3
+ metadata.gz: 8be5d186d64558a4355ba31d404b309493544f9a224a356d5a0227ca3652b789
4
+ data.tar.gz: b4948de2c3a8ddf854a18635c64f6af00fb10bbd92e91837f36f9a4fe81b3b9b
5
5
  SHA512:
6
- metadata.gz: 66c31c9ab399bd9e229844770cf6ecbd12f1d73a6b2b5e93cecb03d511247c2992d5ec64e0553140872f98b81f36af3bb7ff4dbd9e96416c9339128e6cc29a25
7
- data.tar.gz: 051e11dd9e18f719c8e75e58936dd2df954036200e645780022ded24a5f22ef8cd3f09472fc224c493fb3acaf6859275501cfd80c5a27f43f93cbe7adf44705c
6
+ metadata.gz: 427b05375218dbcbbda7d21bfc93894fd10606eb14ef67c0db215d3e1e5e11033e443bab26bbcddb41a31d0fae4285f5f9baa3a1f399ba68e6bf89f2a03541be
7
+ data.tar.gz: fe361e745ad10b9f34dcd2575371dc0ce5eb81d8c240ed2f58d1a5804be1753afccf1fdbc16602bfdb8eb417fbc64da71b6a9d6ba3b0af7cdfa5619112060383
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- credit_gateway (0.1.1)
4
+ credit_gateway (0.3.0)
5
5
  faraday
6
6
  faraday_middleware
7
7
  faraday_middleware-multi_json
@@ -17,16 +17,30 @@ GEM
17
17
  rexml
18
18
  diff-lcs (1.4.4)
19
19
  dotenv (2.7.6)
20
- faraday (1.4.1)
20
+ faraday (1.10.0)
21
+ faraday-em_http (~> 1.0)
22
+ faraday-em_synchrony (~> 1.0)
21
23
  faraday-excon (~> 1.1)
24
+ faraday-httpclient (~> 1.0)
25
+ faraday-multipart (~> 1.0)
22
26
  faraday-net_http (~> 1.0)
23
- faraday-net_http_persistent (~> 1.1)
24
- multipart-post (>= 1.2, < 3)
27
+ faraday-net_http_persistent (~> 1.0)
28
+ faraday-patron (~> 1.0)
29
+ faraday-rack (~> 1.0)
30
+ faraday-retry (~> 1.0)
25
31
  ruby2_keywords (>= 0.0.4)
32
+ faraday-em_http (1.0.0)
33
+ faraday-em_synchrony (1.0.0)
26
34
  faraday-excon (1.1.0)
35
+ faraday-httpclient (1.0.1)
36
+ faraday-multipart (1.0.4)
37
+ multipart-post (~> 2)
27
38
  faraday-net_http (1.0.1)
28
- faraday-net_http_persistent (1.1.0)
29
- faraday_middleware (1.0.0)
39
+ faraday-net_http_persistent (1.2.0)
40
+ faraday-patron (1.0.0)
41
+ faraday-rack (1.0.0)
42
+ faraday-retry (1.0.3)
43
+ faraday_middleware (1.2.0)
30
44
  faraday (~> 1.0)
31
45
  faraday_middleware-multi_json (0.0.6)
32
46
  faraday_middleware
@@ -34,7 +48,7 @@ GEM
34
48
  hashdiff (1.0.1)
35
49
  method_source (1.0.0)
36
50
  multi_json (1.15.0)
37
- multipart-post (2.1.1)
51
+ multipart-post (2.2.3)
38
52
  pry (0.13.1)
39
53
  coderay (~> 1.1)
40
54
  method_source (~> 1.0)
@@ -54,7 +68,7 @@ GEM
54
68
  diff-lcs (>= 1.2.0, < 2.0)
55
69
  rspec-support (~> 3.10.0)
56
70
  rspec-support (3.10.2)
57
- ruby2_keywords (0.0.4)
71
+ ruby2_keywords (0.0.5)
58
72
  vcr (6.0.0)
59
73
  webmock (3.12.1)
60
74
  addressable (>= 2.3.6)
@@ -62,6 +76,7 @@ GEM
62
76
  hashdiff (>= 0.4.0, < 2.0.0)
63
77
 
64
78
  PLATFORMS
79
+ -darwin-21
65
80
  x86_64-darwin-19
66
81
  x86_64-linux
67
82
 
@@ -76,4 +91,4 @@ DEPENDENCIES
76
91
  webmock
77
92
 
78
93
  BUNDLED WITH
79
- 2.2.11
94
+ 2.3.10
@@ -8,7 +8,7 @@ module CreditGateway
8
8
  class Authenticate
9
9
  def call(client_id, client_secret)
10
10
  response = post(
11
- '/connect/token',
11
+ '/auth/connect/token',
12
12
  client_id: client_id,
13
13
  client_secret: client_secret,
14
14
  grant_type: 'client_credentials'
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require 'credit_gateway/base_model'
5
+
6
+ module CreditGateway
7
+ class BankConnection < BaseModel
8
+ attributes :connection_id, :provider_id, :status, :creation_date_time, :status_update_date_time
9
+
10
+ def self.build(json:)
11
+ super.tap do |record|
12
+ if record.creation_date_time
13
+ record.creation_date_time = Time.parse(record.creation_date_time)
14
+ end
15
+ if record.status_update_date_time
16
+ record.status_update_date_time = Time.parse(record.status_update_date_time)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_model'
4
+
5
+ module CreditGateway
6
+ class BankConnectionParams < BaseModel
7
+ attributes :provider_id, :subject_ip, :subject_agent, :redirect_uri
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_repository'
4
+ require 'credit_gateway/bank_subject'
5
+ require 'credit_gateway/bank_connection'
6
+ require 'credit_gateway/bank_connection_params'
7
+
8
+ module CreditGateway
9
+ class BankRepository < BaseRepository
10
+ def create_subject(company_id)
11
+ result = post('/bank/subjects', params: { companyId: company_id })
12
+
13
+ BankSubject.build(json: result.body)
14
+ end
15
+
16
+ def lookup_subjects(company_id)
17
+ result = get('/bank/subjects', params: { companyId: company_id })
18
+
19
+ result.body.fetch(:data, []).map do |subject|
20
+ BankSubject.build(json: subject)
21
+ end
22
+ end
23
+
24
+ # connection_params - CreditGateway::BankConnectionParams
25
+ def create_connection(subject_id, connection_params:)
26
+ url = format_url(
27
+ '/bank/subjects/:subject_id/connections',
28
+ subject_id: subject_id.to_s
29
+ )
30
+ result = post(url, params: connection_params.as_json)
31
+
32
+ BankConnection.build(json: result.body)
33
+ end
34
+
35
+ # Submits bank data to prepare the report
36
+ # bank_data_request - CreditGateway::BankDataRequest
37
+ def upload_bank_data(subject_id, connection_id, bank_data_request)
38
+ url = format_url(
39
+ '/bank/subjects/:subject_id/connections/:connection_id/upload',
40
+ subject_id: subject_id.to_s,
41
+ connection_id: connection_id.to_s
42
+ )
43
+ post(url, params: bank_data_request.as_json)
44
+
45
+ true
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require 'credit_gateway/base_model'
5
+
6
+ module CreditGateway
7
+ class BankSubject < BaseModel
8
+ attributes :subject_id, :company_id, :status, :creation_date_time, :status_update_date_time
9
+
10
+ def self.build(json:)
11
+ super.tap do |record|
12
+ if record.creation_date_time
13
+ record.creation_date_time = Time.parse(record.creation_date_time)
14
+ end
15
+ if record.status_update_date_time
16
+ record.status_update_date_time = Time.parse(record.status_update_date_time)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'credit_gateway/errors'
4
- require 'credit_gateway/camelizer_upper'
4
+ require 'credit_gateway/camelizer_lower'
5
5
 
6
6
  module CreditGateway
7
7
  class BaseModel
@@ -25,7 +25,7 @@ module CreditGateway
25
25
  end
26
26
 
27
27
  def key_transformer
28
- CamelizerUpper
28
+ CamelizerLower
29
29
  end
30
30
 
31
31
  # Sets all the instance variables by reading the JSON from CreditGateway and converting the keys from
@@ -13,18 +13,16 @@ module CreditGateway
13
13
 
14
14
  attr_reader :client
15
15
 
16
- def get(path, params: {}, identity: nil)
17
- headers = identity ? identity.to_headers : {}
18
- result = client.get(path.strip, headers: headers, params: params)
16
+ def get(path, params: {})
17
+ result = client.get(path.strip, params: params)
19
18
 
20
19
  raise APIKeyError, result.body[:error] if result.status == 401
21
20
 
22
21
  result
23
22
  end
24
23
 
25
- def post(path, params: {}, identity: nil)
26
- headers = identity ? identity.to_headers : {}
27
- result = client.post(path.strip, headers: headers, params: params)
24
+ def post(path, params: {})
25
+ result = client.post(path.strip, params: params)
28
26
 
29
27
  raise APIKeyError, result.body[:error] if result.status == 401
30
28
 
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CreditGateway
4
+ class CamelizerLower
5
+ # Converts this_is_my_string to thisIsMyString and returns it as a symbol.
6
+ def self.transform(underscore_string)
7
+ parts = underscore_string.to_s.split('_')
8
+
9
+ rest = parts[1..].map(&:capitalize)
10
+
11
+ rest.unshift(parts[0]).join.to_sym
12
+ end
13
+ end
14
+ end
@@ -30,7 +30,8 @@ module CreditGateway
30
30
  @connection ||= Faraday.new(url: api_url) do |conn|
31
31
  conn.request :credit_gateway_auth,
32
32
  CreditGateway.configuration.client_id,
33
- CreditGateway.configuration.client_secret
33
+ CreditGateway.configuration.client_secret,
34
+ CreditGateway.configuration.country
34
35
  conn.response :multi_json, symbolize_keys: true
35
36
  if CreditGateway.configuration.debug
36
37
  conn.response :logger, nil, { headers: true, bodies: CreditGateway.configuration.verbose }
@@ -48,18 +49,22 @@ module CreditGateway
48
49
 
49
50
  case response.status
50
51
  when 400
51
- if response.body.dig(:Errors, 0, :ErrorCode) == 'Company.NotFound'
52
- raise CompanyNotFoundError, response.body.dig(:Errors, 0, :ErrorMessage)
53
- else
54
- raise InvalidRequestError, response.body
55
- end
52
+ handle_company_not_found(response.body, InvalidRequestError)
56
53
  when 401
57
54
  raise UnauthorizedError, response.body
58
55
  when 404
59
- raise NotFoundError, response.body
56
+ handle_company_not_found(response.body, NotFoundError)
57
+ when 409
58
+ raise ConflictError, response.body
60
59
  else
61
60
  raise GenericError, "#{response.status}: #{response.body}"
62
61
  end
63
62
  end
63
+
64
+ def handle_company_not_found(body, alternative_exception)
65
+ raise CompanyNotFoundError, body.dig(0, :message) if body.dig(0, :code) == 'company_not_found'
66
+
67
+ raise alternative_exception, body
68
+ end
64
69
  end
65
70
  end
@@ -3,7 +3,7 @@
3
3
  require 'credit_gateway/base_model'
4
4
 
5
5
  module CreditGateway
6
- class ScoreDataResponse < BaseModel
7
- attributes :token, :company_id
6
+ class Company < BaseModel
7
+ attributes :id, :name, :number, :country, :type, :status
8
8
  end
9
9
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_repository'
4
+ require 'credit_gateway/company'
5
+
6
+ module CreditGateway
7
+ class CompanyRepository < BaseRepository
8
+ # Params:
9
+ # document_token - Token retrieved from ScoreDataRepository#prepare
10
+ def find(name, number)
11
+ result = post('/companies', params: { name: name, number: number })
12
+
13
+ Company.build(json: result.body)
14
+ end
15
+ end
16
+ end
@@ -4,18 +4,19 @@ module CreditGateway
4
4
  class Configuration
5
5
  BASE_URLS = {
6
6
  production: 'https://api.connector.crifrealtime.com',
7
- sandbox: 'https://apiuat.connector.crifrealtime.com'
7
+ sandbox: 'https://api-sandbox.connector.crifrealtime.com'
8
8
  }.freeze
9
9
  AUTH_URLS = {
10
- production: 'https://auth.connector.crifrealtime.com',
11
- sandbox: 'https://uatauth.connector.crifrealtime.com'
10
+ production: 'https://api.connector.crifrealtime.com',
11
+ sandbox: 'https://api-sandbox.connector.crifrealtime.com'
12
12
  }.freeze
13
13
 
14
- attr_accessor :client_id, :client_secret, :environment, :debug, :verbose
14
+ attr_accessor :client_id, :client_secret, :country, :environment, :debug, :verbose
15
15
 
16
16
  def initialize
17
17
  @client_id = ''
18
18
  @client_secret = ''
19
+ @country = nil
19
20
  @environment = :sandbox # can be either :sandbox or :production
20
21
  @debug = false
21
22
  @verbose = false
@@ -10,4 +10,6 @@ module CreditGateway
10
10
  class NotFoundError < StandardError; end
11
11
 
12
12
  class CompanyNotFoundError < InvalidRequestError; end
13
+
14
+ class ConflictError < InvalidRequestError; end
13
15
  end
@@ -6,10 +6,11 @@ require 'credit_gateway/errors'
6
6
 
7
7
  module CreditGateway
8
8
  class FaradayAuth < Faraday::Middleware
9
- def initialize(app, client_id, client_secret, options = {})
9
+ def initialize(app, client_id, client_secret, country, options = {})
10
10
  super(app)
11
11
  @client_id = client_id
12
12
  @client_secret = client_secret
13
+ @country = country
13
14
  @options = options
14
15
  @token = nil
15
16
  end
@@ -18,6 +19,7 @@ module CreditGateway
18
19
  @token ||= authenticate
19
20
 
20
21
  env[:request_headers]['Authorization'] = "Bearer #{@token}"
22
+ env[:request_headers]['X-Country'] = @country
21
23
  env[:request_headers]['Content-Type'] = 'application/json'
22
24
  env[:request_headers]['User-Agent'] = "finpoint/#{CreditGateway::VERSION}"
23
25
 
@@ -1,10 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'credit_gateway/base_model'
4
+ require 'credit_gateway/rating_metadata'
4
5
 
5
6
  module CreditGateway
6
7
  class Rating < BaseModel
7
- attributes :p_d, :type, :class, :scale, :label, :description,
8
- :implied_rating, :algorithm_version
8
+ attributes :score, :algorithm_type, :algorithm_version, :metadata
9
+
10
+ def self.build(json:)
11
+ super.tap do |record|
12
+ record.metadata = RatingMetadata.build(json: (record.metadata || {}))
13
+ end
14
+ end
9
15
  end
10
16
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_model'
4
+ require 'credit_gateway/rating'
5
+ require 'credit_gateway/rating_status'
6
+
7
+ module CreditGateway
8
+ class RatingComponent < BaseModel
9
+ attributes :type, :ids, :rating, :confidence, :algorithm, :optional, :status, :additional_data
10
+
11
+ def self.build(json:)
12
+ super.tap do |record|
13
+ record.status = RatingStatus.build(json: (record.status || {}))
14
+ record.rating = Rating.build(json: (record.rating || {}))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require 'credit_gateway/base_model'
5
+
6
+ module CreditGateway
7
+ class RatingMetadata < BaseModel
8
+ attributes :description, :class, :scale, :label, :implied_rating, :frequency, :created_at
9
+
10
+ def self.build(json:)
11
+ super.tap do |record|
12
+ record.created_at = Time.parse(record.created_at) if record.created_at
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_model'
4
+
5
+ module CreditGateway
6
+ class RatingStatus < BaseModel
7
+ attributes :status, :description
8
+
9
+ def complete?
10
+ status == 'complete'
11
+ end
12
+
13
+ def pending?
14
+ status == 'pending'
15
+ end
16
+
17
+ def unprocessable?
18
+ status == 'unprocessable'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_model'
4
+ require 'credit_gateway/rating'
5
+ require 'credit_gateway/rating_status'
6
+ require 'credit_gateway/rating_component'
7
+
8
+ module CreditGateway
9
+ class Score < BaseModel
10
+ attributes :id, :company_id, :status, :rating, :components
11
+
12
+ def self.build(json:)
13
+ super.tap do |record|
14
+ record.status = RatingStatus.build(json: (record.status || {}))
15
+ record.rating = Rating.build(json: (record.rating || {}))
16
+ record.components = (record.components || []).map do |component|
17
+ RatingComponent.build(json: component)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,9 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'credit_gateway/base_model'
4
+ require 'credit_gateway/camelizer_upper'
4
5
 
5
6
  module CreditGateway
6
- class BehavioralBadge < BaseModel
7
+ class ScoreBadge < BaseModel
7
8
  attributes :badge_url, :badge_tiny_url, :badge_long_url, :upgrade_url
9
+
10
+ def self.key_transformer
11
+ CamelizerUpper
12
+ end
8
13
  end
9
14
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'credit_gateway/base_repository'
4
+ require 'credit_gateway/score'
5
+ require 'credit_gateway/score_badge'
6
+
7
+ module CreditGateway
8
+ class ScoreRepository < BaseRepository
9
+ def fetch(company_id)
10
+ res = post('/score', params: { companyId: company_id })
11
+
12
+ Score.build(json: res.body)
13
+ end
14
+
15
+ def find(score_id)
16
+ res = get(format_url('/score/:id', { id: score_id }))
17
+
18
+ Score.build(json: res.body)
19
+ end
20
+
21
+ def badge(company_id)
22
+ url = format_url(
23
+ '/insights/data/badge/:company_id',
24
+ company_id: company_id.to_s
25
+ )
26
+ result = get(url)
27
+
28
+ ScoreBadge.build(json: result.body)
29
+ end
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CreditGateway
4
- VERSION = '0.1.1'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -2,10 +2,9 @@
2
2
 
3
3
  require 'credit_gateway/version'
4
4
  require 'credit_gateway/configuration'
5
- require 'credit_gateway/identity'
6
- require 'credit_gateway/behavioral_score_repository'
7
- require 'credit_gateway/financial_score_repository'
8
- require 'credit_gateway/score_data_repository'
5
+ require 'credit_gateway/company_repository'
6
+ require 'credit_gateway/bank_repository'
7
+ require 'credit_gateway/score_repository'
9
8
  require 'credit_gateway/bank_data_request'
10
9
  require 'credit_gateway/balance'
11
10
  require 'credit_gateway/bank_account'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: credit_gateway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Finpoint
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-17 00:00:00.000000000 Z
11
+ date: 2022-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -187,31 +187,35 @@ files:
187
187
  - lib/credit_gateway/balance.rb
188
188
  - lib/credit_gateway/bank_account.rb
189
189
  - lib/credit_gateway/bank_account_scheme.rb
190
+ - lib/credit_gateway/bank_connection.rb
191
+ - lib/credit_gateway/bank_connection_params.rb
190
192
  - lib/credit_gateway/bank_data.rb
191
193
  - lib/credit_gateway/bank_data_request.rb
194
+ - lib/credit_gateway/bank_repository.rb
195
+ - lib/credit_gateway/bank_subject.rb
192
196
  - lib/credit_gateway/base_model.rb
193
197
  - lib/credit_gateway/base_repository.rb
194
- - lib/credit_gateway/behavioral_badge.rb
195
- - lib/credit_gateway/behavioral_score.rb
196
- - lib/credit_gateway/behavioral_score_repository.rb
198
+ - lib/credit_gateway/camelizer_lower.rb
197
199
  - lib/credit_gateway/camelizer_upper.rb
198
200
  - lib/credit_gateway/client.rb
201
+ - lib/credit_gateway/company.rb
202
+ - lib/credit_gateway/company_repository.rb
199
203
  - lib/credit_gateway/configuration.rb
200
204
  - lib/credit_gateway/errors.rb
201
205
  - lib/credit_gateway/faraday_auth.rb
202
- - lib/credit_gateway/financial_score_repository.rb
203
- - lib/credit_gateway/full_score.rb
204
- - lib/credit_gateway/identity.rb
205
206
  - lib/credit_gateway/rating.rb
206
- - lib/credit_gateway/score_data_repository.rb
207
- - lib/credit_gateway/score_data_request.rb
208
- - lib/credit_gateway/score_data_response.rb
207
+ - lib/credit_gateway/rating_component.rb
208
+ - lib/credit_gateway/rating_metadata.rb
209
+ - lib/credit_gateway/rating_status.rb
210
+ - lib/credit_gateway/score.rb
211
+ - lib/credit_gateway/score_badge.rb
212
+ - lib/credit_gateway/score_repository.rb
209
213
  - lib/credit_gateway/transaction.rb
210
214
  - lib/credit_gateway/version.rb
211
215
  homepage: https://www.finpoint.co.uk
212
216
  licenses: []
213
217
  metadata: {}
214
- post_install_message:
218
+ post_install_message:
215
219
  rdoc_options: []
216
220
  require_paths:
217
221
  - lib
@@ -226,8 +230,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
230
  - !ruby/object:Gem::Version
227
231
  version: '0'
228
232
  requirements: []
229
- rubygems_version: 3.2.11
230
- signing_key:
233
+ rubygems_version: 3.0.3
234
+ signing_key:
231
235
  specification_version: 4
232
236
  summary: CRIF CreditGateway client
233
237
  test_files: []
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'time'
4
- require 'credit_gateway/base_model'
5
- require 'credit_gateway/rating'
6
-
7
- module CreditGateway
8
- class BehavioralScore < BaseModel
9
- attributes :frequency, :calculated, :main_rating, :component_ratings
10
-
11
- def self.build(json:)
12
- super.tap do |record|
13
- record.calculated = Time.parse(record.calculated) if record.calculated
14
- record.main_rating = Rating.build(json: (record.main_rating || {}))
15
- record.component_ratings = (record.component_ratings || []).map do |rating|
16
- Rating.build(json: rating)
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'credit_gateway/base_repository'
4
- require 'credit_gateway/behavioral_score'
5
- require 'credit_gateway/behavioral_badge'
6
- require 'credit_gateway/full_score'
7
-
8
- module CreditGateway
9
- class BehavioralScoreRepository < BaseRepository
10
- # Params:
11
- # document_token - Token retrieved from ScoreDataRepository#prepare
12
- def specific_rating(document_token)
13
- result = post('/score/behavioralscore', params: { token: document_token })
14
-
15
- FullScore.build(json: result.body)
16
- end
17
-
18
- def latest_rating(company_id)
19
- url = format_url(
20
- '/score/behavioralscore/rating/:company_id',
21
- company_id: company_id.to_s
22
- )
23
- result = get(url)
24
-
25
- BehavioralScore.build(json: result.body)
26
- end
27
-
28
- def badge(company_id)
29
- url = format_url(
30
- '/score/behavioralscore/badge/:company_id',
31
- company_id: company_id.to_s
32
- )
33
- result = get(url)
34
-
35
- BehavioralBadge.build(json: result.body)
36
- end
37
- end
38
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'credit_gateway/base_repository'
4
- require 'credit_gateway/full_score'
5
-
6
- module CreditGateway
7
- class FinancialScoreRepository < BaseRepository
8
- # Fetch financial score for given company
9
- # identity - CreditGateway::Identity
10
- def find(identity)
11
- result = get('/score/financialscore', identity: identity)
12
-
13
- FullScore.build(json: result.body)
14
- end
15
- end
16
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'time'
4
- require 'credit_gateway/base_model'
5
- require 'credit_gateway/rating'
6
-
7
- module CreditGateway
8
- class FullScore < BaseModel
9
- attributes :frequency, :calculated, :full_score, :behavioral_score, :financial_score
10
-
11
- def self.build(json:)
12
- super.tap do |record|
13
- record.full_score = Rating.build(json: (record.full_score || {}))
14
- record.behavioral_score = Rating.build(json: (record.behavioral_score || {}))
15
- record.financial_score = Rating.build(json: (record.financial_score || {}))
16
- record.calculated = Time.parse(record.calculated) if record.calculated
17
- end
18
- end
19
- end
20
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module CreditGateway
4
- Identity = Struct.new(:name, :number, keyword_init: true) do
5
- def to_headers
6
- { companyName: name, companyNumber: number }
7
- end
8
- end
9
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'credit_gateway/base_repository'
4
- require 'credit_gateway/score_data_response'
5
-
6
- module CreditGateway
7
- class ScoreDataRepository < BaseRepository
8
- # Submits bank data to prepare the report
9
- # identity - CreditGateway::Identity
10
- # bank_data_request - CreditGateway::BankDataRequest
11
- def prepare(identity, bank_data_request)
12
- res = post('/score/data/prepare', params: bank_data_request.as_json, identity: identity)
13
-
14
- ScoreDataResponse.build(json: res.body)
15
- end
16
- end
17
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'credit_gateway/base_model'
4
- require 'credit_gateway/bank_data'
5
-
6
- module CreditGateway
7
- class ScoreDataRequest < BaseModel
8
- attributes :banks_account_data
9
-
10
- def self.build(json:)
11
- super.tap do |record|
12
- record.banks_account_data = (record.banks_account_data || []).compact.map do |bad|
13
- BankData.build(json: bad)
14
- end
15
- end
16
- end
17
- end
18
- end