creditario-client 0.0.4.alpha → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +38 -0
  3. data/.gitignore +0 -1
  4. data/CHANGELOG +6 -0
  5. data/Gemfile.lock +64 -0
  6. data/README.md +7 -2
  7. data/creditario-client.gemspec +2 -0
  8. data/lib/creditario/api/create.rb +1 -1
  9. data/lib/creditario/api/exists.rb +31 -0
  10. data/lib/creditario/api/multipart.rb +1 -1
  11. data/lib/creditario/api/request.rb +33 -3
  12. data/lib/creditario/api/retrieve.rb +1 -0
  13. data/lib/creditario/client/version.rb +1 -1
  14. data/lib/creditario/client.rb +22 -0
  15. data/lib/creditario/repositories/convert_application_to_credits.rb +29 -0
  16. data/lib/creditario/repositories/customers.rb +6 -0
  17. data/lib/creditario/repositories/investors.rb +45 -0
  18. data/lib/creditario/repositories/qualify_score_flows.rb +29 -0
  19. data/lib/creditario/resources/application.rb +1 -15
  20. data/lib/creditario/resources/attachment.rb +1 -13
  21. data/lib/creditario/resources/catalog.rb +2 -26
  22. data/lib/creditario/resources/contract.rb +1 -15
  23. data/lib/creditario/resources/credit.rb +1 -13
  24. data/lib/creditario/resources/credit_estimate.rb +1 -13
  25. data/lib/creditario/resources/customer.rb +1 -17
  26. data/lib/creditario/resources/expense.rb +2 -14
  27. data/lib/creditario/resources/income.rb +1 -13
  28. data/lib/creditario/resources/investor.rb +7 -0
  29. data/lib/creditario/resources/movement.rb +1 -23
  30. data/lib/creditario/resources/payment.rb +1 -15
  31. data/lib/creditario/resources/product.rb +1 -15
  32. data/lib/creditario/resources/qualify_score_flow.rb +7 -0
  33. data/lib/creditario/resources/reference.rb +2 -14
  34. data/lib/creditario/resources/resource.rb +12 -1
  35. data/rakelib/fixture_api_response.rb +9 -3
  36. metadata +15 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f75aef1866d399c7b582383326c35576f34fb9d15d7f8e474c0ec3fc3ac33142
4
- data.tar.gz: 83a21b7fdc44729a90894e3d38ef7a7e94f4f25ef6d73decd51d4e8f17a2d3a9
3
+ metadata.gz: f41e9c8e79d01bc247e637f4b823859cc5382b2eb7b3dad905a575cb6a110101
4
+ data.tar.gz: 4ce09eb658e9c4e5dc0a77f95eb5b7dcb4a484c973dbb18b886766cb88285844
5
5
  SHA512:
6
- metadata.gz: 98036c72710fc19d48099519a6b3b85af5cc8867141e0fc5107cc02da17743e183626c874f09841fd3e932c578fd87bbc9861d98f36207ad13a3c97ec82b1370
7
- data.tar.gz: 6ddd34bdd05e50e6b24a28f0d389a4a1680469cfa7cb59c31bbac64c979017986b6580e221d532533196acee191721dad3b8cae283cbdfcbbf71ab0636b4f428
6
+ metadata.gz: 7f5dba2eb7858828e57765506245bf239ab61c9c86fa0e145f13ba66fac6dc11ff8e3db70f3317ab4f11d97b0503553eb1f813690fc08de742c77d53647ad577
7
+ data.tar.gz: 63d6c1e04f8c78c8525791318828a031362ee34fa3e3f7ca17ce373a8cb4f0bec8317440b6de2eaad87d0b1da09a16ba3602d0a5d146951eca3fd3b3edd6ca48
@@ -0,0 +1,38 @@
1
+ name: "Release"
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '*.*.*'
7
+
8
+ jobs:
9
+ build:
10
+ name: Release
11
+ runs-on: ubuntu-18.04
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ with:
15
+ fetch-depth: 3
16
+
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: 2.7.2
21
+ bundler-cache: true
22
+ cache-version: 1
23
+
24
+ - name: Get tag version
25
+ id: tag_version
26
+ run: |
27
+ echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/}
28
+
29
+ - name: Print tag version
30
+ run: echo ${{ steps.tag_version.outputs.VERSION }}
31
+
32
+ - name: Build gem
33
+ run: gem build creditario-client.gemspec
34
+
35
+ - name: Push gem
36
+ env:
37
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_API_KEY}}"
38
+ run: gem push creditario-client-${{ steps.tag_version.outputs.VERSION}}.gem
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/CHANGELOG ADDED
@@ -0,0 +1,6 @@
1
+ Version 0.0.7.alpha
2
+
3
+ Release notes:
4
+
5
+ - New repository "ConvertApplicationToCredits" for create applications to credits from API of creditar.io
6
+ - Updating documentation removing description for resources that it hasn't makes sense
data/Gemfile.lock ADDED
@@ -0,0 +1,64 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ creditario-client (1.0.0)
5
+ multipart-post (= 2.0.0)
6
+ oj (~> 3.0.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.8.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
13
+ ast (2.4.2)
14
+ crack (0.4.5)
15
+ rexml
16
+ hashdiff (1.0.1)
17
+ jaro_winkler (1.5.4)
18
+ minitest (5.15.0)
19
+ multipart-post (2.0.0)
20
+ oj (3.0.11)
21
+ parallel (1.21.0)
22
+ parser (3.1.0.0)
23
+ ast (~> 2.4.1)
24
+ powerpack (0.1.3)
25
+ psych (4.0.3)
26
+ stringio
27
+ public_suffix (4.0.6)
28
+ rainbow (3.1.1)
29
+ rake (10.5.0)
30
+ rdoc (6.4.0)
31
+ psych (>= 4.0.0)
32
+ rexml (3.2.5)
33
+ rubocop (0.57.2)
34
+ jaro_winkler (~> 1.5.1)
35
+ parallel (~> 1.10)
36
+ parser (>= 2.5)
37
+ powerpack (~> 0.1)
38
+ rainbow (>= 2.2.2, < 4.0)
39
+ ruby-progressbar (~> 1.7)
40
+ unicode-display_width (~> 1.0, >= 1.0.1)
41
+ ruby-progressbar (1.11.0)
42
+ sdoc (1.1.0)
43
+ rdoc (>= 5.0)
44
+ stringio (3.0.1)
45
+ unicode-display_width (1.8.0)
46
+ webmock (3.4.2)
47
+ addressable (>= 2.3.6)
48
+ crack (>= 0.3.2)
49
+ hashdiff
50
+
51
+ PLATFORMS
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ bundler (~> 2.1.4)
56
+ creditario-client!
57
+ minitest (~> 5.0)
58
+ rake (~> 10.0)
59
+ rubocop (~> 0.57.2)
60
+ sdoc (~> 1.0)
61
+ webmock (~> 3.4.2)
62
+
63
+ BUNDLED WITH
64
+ 2.2.16
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Solo añade a tu Gemfile:
6
6
 
7
- gem "creditario-client", git: "git@git.michelada.io:financial/creditario-client.git"
7
+ gem "creditario-client", git: "git@github.com:creditario/creditario-client.git"
8
8
 
9
9
  ## Uso
10
10
 
@@ -88,7 +88,7 @@ Las operaciones que puedes realizar sobre Productos son: listar y obtener.
88
88
 
89
89
  ### Clientes
90
90
 
91
- Las operaciones que puedes realizar sobre Clientes son: listar, obtener, crear y actualizar.
91
+ Las operaciones que puedes realizar sobre Clientes son: listar, obtener, verificar, crear y actualizar.
92
92
 
93
93
  #### Listar todos los Clientes
94
94
 
@@ -103,6 +103,11 @@ Las operaciones que puedes realizar sobre Clientes son: listar, obtener, crear y
103
103
  Creditario::Customers.retrieve("2e9d05b8-2180-4779-bab6-bdfd41d1569f")
104
104
  => Creditario::Customer
105
105
 
106
+ #### Verificar un Cliente
107
+
108
+ Creditario::Customers.exists(email: "usuario@needsmoney.com")
109
+ => Hash
110
+
106
111
  #### Crear un Cliente
107
112
 
108
113
  result = Creditario::Customers.create(email: "karla@quieredinero.com", product_id: "c005b7f7-a44a-4ec0-bf7f-73d15d806fd9")
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
+ spec.required_ruby_version = ">= 2.7.0"
27
+
26
28
  spec.add_dependency "oj", "~> 3.0.0"
27
29
  spec.add_dependency "multipart-post", "2.0.0"
28
30
 
@@ -14,7 +14,7 @@ module Creditario # :nodoc:
14
14
  # Si todo sale bien devuelve una instancia del Recurso específico que el
15
15
  # Repositorio maneja.
16
16
  # De lo contrario, regresa un Hash con los errores arrojados por el servidor de creditar.io
17
- def create(**params)
17
+ def create(*params)
18
18
  response = API.request(:post, self.resource_path, params)
19
19
 
20
20
  attributes = response.dig("data").first
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+ require "base64"
3
+
4
+ module Creditario # :nodoc:
5
+ module API
6
+ ###
7
+ # == Creditario::API::Exists
8
+ #
9
+ # Modulo encargado de obtener si un recurso existe en la API de creditar.io
10
+ module Exists
11
+ ###
12
+ # Realiza una llamada GET al path del Repositorio que este haciendo uso
13
+ # de este modulo.
14
+ #
15
+ # Si todo sale bien devuelve una instancia del Recurso específico que el Repositorio maneja.
16
+ # De lo contrario, regresa un Hash con los errores arrojados por el servidor de creditar.io
17
+ def exists(query_params = {})
18
+ parts = [self.exists_resource_path]
19
+ path = parts.compact.join("/")
20
+ query_params[:cache] = true
21
+ query_params[:email] = Base64.encode64(query_params[:email])[0..-2]
22
+ response = API.request(:get, path, query_params)
23
+
24
+ rescue Creditario::Exceptions::ResourceNotFoundError => exception
25
+ exception.server_response
26
+ rescue Creditario::Exceptions::UnprocessableEntityError => exception
27
+ exception.server_response
28
+ end
29
+ end
30
+ end
31
+ end
@@ -14,7 +14,7 @@ module Creditario # :nodoc:
14
14
  # Si todo sale bien devuelve una instancia del Recurso específico que el
15
15
  # Repositorio maneja.
16
16
  # De lo contrario, regresa un Hash con los errores arrojados por el servidor de creditar.io
17
- def create(**params)
17
+ def create(*params)
18
18
  response = API.request(:multipart, self.resource_path, params)
19
19
 
20
20
  attributes = response.dig("data").first
@@ -38,8 +38,10 @@ module Creditario # :nodoc:
38
38
 
39
39
  handle_errored_responses(response)
40
40
 
41
- return response if response.body.nil?
42
- Oj.load(response.body)
41
+ return response if response.code == "204" && response.body.nil?
42
+ response_body = handle_responses(response)
43
+
44
+ Oj.load(response_body)
43
45
  rescue Oj::ParseError => ex
44
46
  raise Exceptions::InvalidResponseBodyError, ex.message
45
47
  rescue Net::OpenTimeout => ex
@@ -53,8 +55,12 @@ module Creditario # :nodoc:
53
55
  def request_from_method(method, uri, params)
54
56
  case method
55
57
  when :get
58
+ cache_enabled = params.delete(:cache)
56
59
  uri.query = URI.encode_www_form(params)
57
- set_request_headers(Net::HTTP::Get.new(uri))
60
+
61
+ request = set_request_headers(Net::HTTP::Get.new(uri))
62
+ request = set_request_cache_headers(request) if defined?(Rails) && cache_enabled
63
+ request
58
64
  when :post
59
65
  set_request_body(set_request_headers(Net::HTTP::Post.new(uri)), params)
60
66
  when :multipart
@@ -69,12 +75,24 @@ module Creditario # :nodoc:
69
75
  def set_request_headers(request)
70
76
  request = set_authorization_headers(request)
71
77
 
78
+ request["User-Agent"] = "creditario-client gem v#{Creditario::Client::VERSION}"
72
79
  request["Accept"] = "application/vnd.creditar.v#{Creditario::Client.api_version}+json"
73
80
  request["Content-Type"] = "application/json"
74
81
 
75
82
  request
76
83
  end
77
84
 
85
+ def set_request_cache_headers(request)
86
+ @@cached_request = Rails.cache.fetch(request.uri.to_s)
87
+
88
+ if @@cached_request
89
+ request["If-None-Match"] = @@cached_request[:etag]
90
+ request["If-Modified-Since"] = @@cached_request[:last_modified]
91
+ end
92
+
93
+ request
94
+ end
95
+
78
96
  def set_authorization_headers(request)
79
97
  raise Creditario::Exceptions::MissingAPIKeyError.new if Creditario::Client.api_key.nil?
80
98
 
@@ -101,6 +119,18 @@ module Creditario # :nodoc:
101
119
  raise Exceptions::ResourceNotFoundError.new(response) if response.code == "404"
102
120
  raise Exceptions::UnprocessableEntityError.new(response) if response.code == "422"
103
121
  end
122
+
123
+ def handle_responses(response)
124
+ return @@cached_request[:payload] if response.code == "304" && @@cached_request
125
+
126
+ if defined?(Rails) && response.code == "200" && response["Last-Modified"]
127
+ cache_response = { etag: response["Etag"], last_modified: response["Last-Modified"], payload: response.body }
128
+
129
+ Rails.cache.write(response.uri.to_s, cache_response, expires_in: 10.minutes)
130
+ end
131
+
132
+ response.body
133
+ end
104
134
  end
105
135
  end
106
136
  end
@@ -16,6 +16,7 @@ module Creditario # :nodoc:
16
16
  def retrieve(id, query_params = {})
17
17
  parts = [self.resource_path, id]
18
18
  path = parts.compact.join("/")
19
+ query_params[:cache] = true
19
20
  response = API.request(:get, path, query_params)
20
21
 
21
22
  attributes = response.dig("data").first
@@ -4,6 +4,6 @@ module Creditario
4
4
  module Client
5
5
  ###
6
6
  # Versión actual de la gema *creditario-client*
7
- VERSION = "0.0.4.alpha"
7
+ VERSION = "1.0.0"
8
8
  end
9
9
  end
@@ -13,6 +13,7 @@ require "creditario/api/multipart"
13
13
  require "creditario/api/delete"
14
14
  require "creditario/api/list"
15
15
  require "creditario/api/retrieve"
16
+ require "creditario/api/exists"
16
17
  require "creditario/api/update"
17
18
 
18
19
  require "creditario/utils/paginated_collection"
@@ -32,6 +33,8 @@ require "creditario/resources/attachment"
32
33
  require "creditario/resources/credit"
33
34
  require "creditario/resources/payment"
34
35
  require "creditario/resources/movement"
36
+ require "creditario/resources/qualify_score_flow"
37
+ require "creditario/resources/investor"
35
38
 
36
39
  require "creditario/repositories/applications"
37
40
  require "creditario/repositories/customers"
@@ -46,6 +49,9 @@ require "creditario/repositories/attachments"
46
49
  require "creditario/repositories/credits"
47
50
  require "creditario/repositories/payments"
48
51
  require "creditario/repositories/movements"
52
+ require "creditario/repositories/qualify_score_flows"
53
+ require "creditario/repositories/convert_application_to_credits"
54
+ require "creditario/repositories/investors"
49
55
 
50
56
  module Creditario # :nodoc:
51
57
  ###
@@ -200,6 +206,22 @@ module Creditario # :nodoc:
200
206
  def payments
201
207
  Creditario::Movements
202
208
  end
209
+
210
+ ###
211
+ # Método de acceso al repositorio de Calificaciones de flujos de calificación
212
+ #
213
+ # Para más información, puede consultar la documentación de Creditario::QualifyScoreFlows
214
+ def qualify_score_flows
215
+ Creditario::QualifyScoreFlows
216
+ end
217
+
218
+ ###
219
+ # Método de acceso al repositorio de Convertir una Solicitud en Crédito
220
+ #
221
+ # Para más información, puede consultar la documentación de Creditario::ConvertApplicationToCredits
222
+ def convert_application_to_credits
223
+ Creditario::ConvertApplicationToCredits
224
+ end
203
225
  end
204
226
  end
205
227
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::ConvertApplicationToCredits
6
+ #
7
+ # Repositorio para Convertir Solicitud a Crédito, permite convertir una Solicitud a Crédito.
8
+ #
9
+ # - Crea para Convertir una Solicitud a Crédito:
10
+ #
11
+ # Creditario::ConvertApplicationToCredits.create(credit_application_id: "2e9d05b8-2180-4779-bab6-bdfd41d1569f", accepted_at: "2020-05-01", first_payment_date: "2020-05-02", closing_date_at: "2020-05-04", payment_days: 20)
12
+ # => Creditario::Credit
13
+ #
14
+ module ConvertApplicationToCredits
15
+ extend Creditario::API::Create
16
+
17
+ ###
18
+ # Path de la API donde se ejecutan las peticiones para Convertir Solicitud a Crédito.
19
+ def self.resource_path
20
+ "/convert_application_to_credits"
21
+ end
22
+
23
+ ###
24
+ # Clase a utilizar para transformar las respuestas de la API
25
+ def self.resource_class
26
+ Creditario::Credit
27
+ end
28
+ end
29
+ end
@@ -32,6 +32,7 @@ module Creditario # :nodoc:
32
32
  module Customers
33
33
  extend Creditario::API::List
34
34
  extend Creditario::API::Retrieve
35
+ extend Creditario::API::Exists
35
36
  extend Creditario::API::Create
36
37
  extend Creditario::API::Update
37
38
 
@@ -41,6 +42,11 @@ module Creditario # :nodoc:
41
42
  "/customers"
42
43
  end
43
44
 
45
+ # Path de la API donde se ejecutan las peticiones para Clientes, especificamente para existss.
46
+ def self.exists_resource_path
47
+ "/exists/customer"
48
+ end
49
+
44
50
  ###
45
51
  # Clase a utilizar para transformar las respuestas de la API
46
52
  def self.resource_class
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::Investors
6
+ #
7
+ # Repositorio de Inversionistas, permite realizar las siguientes operaciones
8
+ # sobre Inversionistas de creditar.io
9
+ #
10
+ # - Obtener todos los Inversionistas:
11
+ #
12
+ # result = Creditario::Investors.list
13
+ # => Creditario::PaginatedCollection
14
+ #
15
+ # result.items
16
+ # => [Creditario::Investor, Creditario::Investor, ...]
17
+ #
18
+ # - Obtener un Inversionista en especifico:
19
+ #
20
+ # Creditario::Investors.retrieve("2e9d05b8-2180-4779-bab6-bdfd41d1569f")
21
+ # => Creditario::Investor
22
+ #
23
+ # - Crear un Inversionista:
24
+ #
25
+ # result = Creditario::Investors.create(email: "karla@quiereinvertir.com")
26
+ # => Creditario::Investor
27
+ #
28
+ module Investors
29
+ extend Creditario::API::List
30
+ extend Creditario::API::Retrieve
31
+ extend Creditario::API::Create
32
+
33
+ ###
34
+ # Path de la API donde se ejecutan las peticiones para Inversionistas.
35
+ def self.resource_path
36
+ "/crowdfunding/investors"
37
+ end
38
+
39
+ ###
40
+ # Clase a utilizar para transformar las respuestas de la API
41
+ def self.resource_class
42
+ Creditario::Investor
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::QualifyScoreFlows
6
+ #
7
+ # Repositorio de Calificaciones de flujos de calificación, permite obtener una Calificación de un flujo de calificación
8
+ # en base a una Solicitud de creditar.io:
9
+ #
10
+ # - Obtener una Calificación:
11
+ #
12
+ # Creditario::QualifyScoreFlows.create(credit_application_id: "c005b7f7-a44a-4ec0-bf7f-73d15d806fd9")
13
+ # => Creditario::QualifyScoreFlow
14
+ module QualifyScoreFlows
15
+ extend Creditario::API::Create
16
+
17
+ ###
18
+ # Path de la API donde se ejecutan las peticiones para Calificaciones de flujos de calificación.
19
+ def self.resource_path
20
+ "/qualify_score_flows"
21
+ end
22
+
23
+ ###
24
+ # Clase a utilizar para transformar las respuestas de la API.
25
+ def self.resource_class
26
+ Creditario::QualifyScoreFlow
27
+ end
28
+ end
29
+ end
@@ -1,21 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Application
6
- #
7
- # Representa una Aplicación de Credito del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => credit_application = Creditario::Application.new({"id": "636264b1-77a2-45ef-b643-e44cfbc84d40", "application_number": "UENDSND-1", "flow": "inicio"})
12
- # => credit_application.id
13
- # => "636264b1-77a2-45ef-b643-e44cfbc84d40"
14
- # => credit_application.flow = "referencias"
15
- # => "referencias"
16
- # => credit_application[:application_number]
17
- # => "UENDSND-1"
18
- class Application
4
+ class Application # :nodoc:
19
5
  include Resource
20
6
 
21
7
  has_one :product, class: Creditario::Product
@@ -1,19 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc
4
- ###
5
- # == Creditario::Attachment
6
- #
7
- # Representa un Archivo del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => attachment = Creditario::Attachment.new({"id": "aabfd43d-6f63-44dd-b7d9-9352a101d11e", "attachment_type": "INE", "url": "http://creditar.io/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBGUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--4f40e5eabc39d2215d0ce08a1ad735df3bcf74b4/image.jpg"})
12
- # => attachment.id
13
- # => "aabfd43d-6f63-44dd-b7d9-9352a101d11e"
14
- # => attachment[:url]
15
- # => "http://creditario.io/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBGUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--4f40e5eabc39d2215d0ce08a1ad735df3bcf74b4/image.jpg"
16
- class Attachment
4
+ class Attachment # :nodoc:
17
5
  include Resource
18
6
  end
19
7
  end
@@ -1,35 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Catalog
6
- #
7
- # Representa un Catálogo del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => catalog = Creditario::Catalog.new({resource: "customer", field: "source"})
12
- # => catalog.resource
13
- # => "customer"
14
- # => catalog[:field]
15
- # => "source"
16
- class Catalog
4
+ class Catalog # :nodoc:
17
5
  include Resource
18
6
  end
19
7
 
20
- ###
21
- # == Creditario::CatalogValue
22
- #
23
- # Representa un Valor de Catálogo del sistema creditar.io
24
- #
25
- # === Ejemplo
26
- #
27
- # => catalog = Creditario::CatalogValue.new({name: "Revista", value: "revista"})
28
- # => catalog.name
29
- # => "Revista"
30
- # => catalog[:value]
31
- # => "revista"
32
- class CatalogValue
8
+ class CatalogValue # :nodoc:
33
9
  include Resource
34
10
  end
35
11
  end
@@ -1,21 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Contract
6
- #
7
- # Representa un Contrato del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => contract = Creditario::Contract.new({"id": "c005b7f7-a44a-4ec0-bf7f-73d15d806fd9", body: "Contrato del Crédito..."})
12
- # => contract.id
13
- # => "c005b7f7-a44a-4ec0-bf7f-73d15d806fd9"
14
- # => contract.body
15
- # => "Contrato del Crédito..."
16
- # => contract[:body]
17
- # => "Contrato del Crédito..."
18
- class Contract
4
+ class Contract # :nodoc:
19
5
  include Resource
20
6
  end
21
7
  end
@@ -1,19 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Credit
6
- #
7
- # Representa un Crédito del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => credit = Creditario::Credit.new({"id": "636264b1-dc0d-453e-8804-4ac451e1dbd5", "credit_application_id": "636264b1-77a2-45ef-b643-e44cfbc84d40", "customer_id": "6313ac69-dc0d-45a8-8804-4ac451e1db5c", "contract_id": "0b19e3b6-9fae-40e1-a7c2-f2db1cae8a5a", "installment_plan": [] })
12
- # => credit.id
13
- # => "636264b1-dc0d-453e-8804-4ac451e1dbd5"
14
- # => credit[:customer_id]
15
- # => "6313ac69-dc0d-45a8-8804-4ac451e1db5c"
16
- class Credit
4
+ class Credit # :nodoc:
17
5
  include Resource
18
6
  end
19
7
  end
@@ -1,19 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::CreditEstimate
6
- #
7
- # Representa una Estimación de Crédito del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => credit_estimate = Creditario::CreditEstimate.new({ "total_interest_amount_cents": 100000, "total_credit_amount_cents": 1100000 })
12
- # => credit_estimate.total_interest_amount_cents
13
- # => 100000
14
- # => credit_estimate[:total_credit_amount_cents]
15
- # => 1100000
16
- class CreditEstimate
4
+ class CreditEstimate # :nodoc:
17
5
  include Resource
18
6
  end
19
7
  end
@@ -1,23 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Customer
6
- #
7
- # Representa un Cliente del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => customer = Creditario::Customer.new({first_name: "Juan", last_name: "Carlos", credit_applications: [{"id": "636264b1-77a2-45ef-b643-e44cfbc84d40"}]})
12
- # => customer.first_name
13
- # => "Juan"
14
- # => customer.first_name = "Pepé"
15
- # => "Pepé"
16
- # => customer[:first_name]
17
- # => "Pepé"
18
- # => customer[:first_name] = "Juan"
19
- # => "Juan"
20
- class Customer
4
+ class Customer # :nodoc:
21
5
  include Resource
22
6
 
23
7
  has_many :credit_applications, class: Creditario::Application
@@ -1,19 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Creditario
4
- ###
5
- # == Creditario::Expense
6
- #
7
- # Representa un Egreso del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => expense = Creditario::Expense.new({"id": "aff581fc-ba6e-49f2-9be7-73ef20043d1c", "classification": "Renta", "amount_cents": 30000})
12
- # => expense.id
13
- # => aff581fc-ba6e-49f2-9be7-73ef20043d1c
14
- # => expense[:amount_cents]
15
- # => 30000
16
- class Expense
3
+ module Creditario # :nodoc:
4
+ class Expense # :nodoc:
17
5
  include Resource
18
6
  end
19
7
  end
@@ -1,19 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Income
6
- #
7
- # Representa un Ingreso del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => income = Creditario::Income.new({"id": "2ff8779b-ba6e-49f2-9be7-73ef20043d1c", "classification": "Trabajo", "amount_cents": 500000})
12
- # => income.id
13
- # => 2ff8779b-ba6e-49f2-9be7-73ef20043d1c
14
- # => income[:amount_cents]
15
- # => 500000
16
- class Income
4
+ class Income # :nodoc:
17
5
  include Resource
18
6
  end
19
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ class Investor # :nodoc:
5
+ include Resource
6
+ end
7
+ end
@@ -1,29 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Movement
6
- #
7
- # Representa un Movimiento del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => movement = Creditario::Movement.new({"id": "5c9d3d7b-3f64-4a6e-82e2-18acc95870c9","reference": "Compra a comercio","amount_cents": 100000,"credit_id": "97a03292-c521-4495-813d-173d7f371c62","movement_type": "cargo","interest": false,"folio_number": "DWJDHQY"})
12
- # => movement.id
13
- # => "5c9d3d7b-3f64-4a6e-82e2-18acc95870c9"
14
- # => movement.reference
15
- # => "Compra a comercio"
16
- # => movement.amount_cents
17
- # => 100000
18
- # => movement.credit_id
19
- # => "97a03292-c521-4495-813d-173d7f371c62"
20
- # => movement.movement_type
21
- # => "cargo"
22
- # => movement.interest
23
- # => false
24
- # => movement.folio_number
25
- # => "DWJDHQY"
26
- class Movement
4
+ class Movement # :nodoc:
27
5
  include Resource
28
6
  end
29
7
  end
@@ -1,21 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Payment
6
- #
7
- # Representa un Pago del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => payment = Creditario::Payment.new({"id": "6313ac69-dc0d-45a8-8804-4ac451e1db5c", "payment_type": "annuity", "amount_cents": 100000})
12
- # => payment.id
13
- # => "6313ac69-dc0d-45a8-8804-4ac451e1db5c"
14
- # => payment.payment_type = "annuity"
15
- # => "annuity"
16
- # => payment[:amount_cents]
17
- # => 100000
18
- class Payment
4
+ class Payment # :nodoc:
19
5
  include Resource
20
6
  end
21
7
  end
@@ -1,21 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Creditario # :nodoc:
4
- ###
5
- # == Creditario::Product
6
- #
7
- # Representa un Producto del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => product = Creditario::Product.new({"id": "6313ac69-dc0d-45a8-8804-4ac451e1db5c", "short_name": "un-pago", "name": "Crédito a un sólo pago"})
12
- # => product.id
13
- # => "6313ac69-dc0d-45a8-8804-4ac451e1db5c"
14
- # => product.short_name = "dos-pagos"
15
- # => "dos-pagos"
16
- # => product[:name]
17
- # => "Crédito a un sólo pago"
18
- class Product
4
+ class Product # :nodoc:
19
5
  include Resource
20
6
  end
21
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ class QualifyScoreFlow # :nodoc:
5
+ include Resource
6
+ end
7
+ end
@@ -1,19 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Creditario
4
- ###
5
- # == Creditario::Reference
6
- #
7
- # Representa una Referencia del sistema creditar.io
8
- #
9
- # === Ejemplo
10
- #
11
- # => reference = Creditario::Reference.new({"id": "1b38ab7d-4c3e-4f39-99e8-57b099c86d45", "classification": "Familiar", "name": "Diane Nguyen", "phone": "3123100045"})
12
- # => reference.id
13
- # => 1b38ab7d-4c3e-4f39-99e8-57b099c86d45
14
- # => reference[:phone]
15
- # => 312100045
16
- class Reference
3
+ module Creditario # :nodoc:
4
+ class Reference # :nodoc:
17
5
  include Resource
18
6
  end
19
7
  end
@@ -6,9 +6,20 @@ module Creditario # :nodoc:
6
6
  #
7
7
  # Modulo que se encarga de establecer el mecanismo de inicialización de las siguientes clases:
8
8
  #
9
+ # - Creditario::Product
9
10
  # - Creditario::Customer
10
11
  # - Creditario::Application
11
- # - Creditario::Product
12
+ # - Creditario::Credit
13
+ # - Creditario::Contract
14
+ # - Creditario::Expense
15
+ # - Creditario::Income
16
+ # - Creditario::Reference
17
+ # - Creditario::Attachment
18
+ # - Creditario::CreditEstimate
19
+ # - Creditario::Catalog
20
+ # - Creditario::Payment
21
+ # - Creditario::Movement
22
+ # - Creditario::QualifyScoreFlow
12
23
  #
13
24
  module Resource
14
25
  def self.included(klass) # :nodoc:
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class FixtureAPIResponse # :nodoc:
4
- attr_reader :method, :port, :path, :params, :api_token, :name
4
+ attr_reader :method, :port, :path, :params, :api_token, :name, :api_version
5
5
 
6
6
  REQUESTS = %w(get post patch delete multipart)
7
7
 
8
8
  def initialize
9
- @method, @port, @path, @params, @api_token, @name = ""
9
+ @method, @port, @path, @params, @api_token, @name, @api_version = ""
10
10
  build_request_and_save_fixture
11
11
  end
12
12
 
@@ -16,6 +16,7 @@ class FixtureAPIResponse # :nodoc:
16
16
  path_gets
17
17
  params_gets
18
18
  api_token_gets
19
+ api_version_gets
19
20
  name_gets
20
21
  execute_request
21
22
  end
@@ -69,6 +70,11 @@ class FixtureAPIResponse # :nodoc:
69
70
  @name = STDIN.gets.chomp
70
71
  end
71
72
 
73
+ def api_version_gets
74
+ puts "Qué versión desea especificar?"
75
+ @api_version = STDIN.gets.chomp
76
+ end
77
+
72
78
  def request_url
73
79
  "'localhost:#{port}#{path}'"
74
80
  end
@@ -76,7 +82,7 @@ class FixtureAPIResponse # :nodoc:
76
82
  def headers
77
83
  "-H 'Content-Type: application/json' " \
78
84
  "#{header_api_token}" \
79
- "-H 'Accept: application/vnd.creditar.v1+json'"
85
+ "-H 'Accept: application/vnd.creditar.#{api_version}+json'"
80
86
  end
81
87
 
82
88
  def header_api_token
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: creditario-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.alpha
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - michelada.io
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-02 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -130,13 +130,16 @@ extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
132
  - ".DS_Store"
133
+ - ".github/workflows/release.yml"
133
134
  - ".gitignore"
134
135
  - ".gitlab-ci.yml"
135
136
  - ".rubocop.yml"
136
137
  - ".travis.yml"
138
+ - CHANGELOG
137
139
  - CODE_OF_CONDUCT.md
138
140
  - Dockerfile
139
141
  - Gemfile
142
+ - Gemfile.lock
140
143
  - LICENSE.txt
141
144
  - README.md
142
145
  - Rakefile
@@ -145,6 +148,7 @@ files:
145
148
  - creditario-client.gemspec
146
149
  - lib/creditario/api/create.rb
147
150
  - lib/creditario/api/delete.rb
151
+ - lib/creditario/api/exists.rb
148
152
  - lib/creditario/api/list.rb
149
153
  - lib/creditario/api/multipart.rb
150
154
  - lib/creditario/api/request.rb
@@ -158,14 +162,17 @@ files:
158
162
  - lib/creditario/repositories/attachments.rb
159
163
  - lib/creditario/repositories/catalogs.rb
160
164
  - lib/creditario/repositories/contracts.rb
165
+ - lib/creditario/repositories/convert_application_to_credits.rb
161
166
  - lib/creditario/repositories/credit_estimates.rb
162
167
  - lib/creditario/repositories/credits.rb
163
168
  - lib/creditario/repositories/customers.rb
164
169
  - lib/creditario/repositories/expenses.rb
165
170
  - lib/creditario/repositories/incomes.rb
171
+ - lib/creditario/repositories/investors.rb
166
172
  - lib/creditario/repositories/movements.rb
167
173
  - lib/creditario/repositories/payments.rb
168
174
  - lib/creditario/repositories/products.rb
175
+ - lib/creditario/repositories/qualify_score_flows.rb
169
176
  - lib/creditario/repositories/references.rb
170
177
  - lib/creditario/resources/application.rb
171
178
  - lib/creditario/resources/attachment.rb
@@ -176,9 +183,11 @@ files:
176
183
  - lib/creditario/resources/customer.rb
177
184
  - lib/creditario/resources/expense.rb
178
185
  - lib/creditario/resources/income.rb
186
+ - lib/creditario/resources/investor.rb
179
187
  - lib/creditario/resources/movement.rb
180
188
  - lib/creditario/resources/payment.rb
181
189
  - lib/creditario/resources/product.rb
190
+ - lib/creditario/resources/qualify_score_flow.rb
182
191
  - lib/creditario/resources/reference.rb
183
192
  - lib/creditario/resources/resource.rb
184
193
  - lib/creditario/utils/paginated_collection.rb
@@ -201,14 +210,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
210
  requirements:
202
211
  - - ">="
203
212
  - !ruby/object:Gem::Version
204
- version: '0'
213
+ version: 2.7.0
205
214
  required_rubygems_version: !ruby/object:Gem::Requirement
206
215
  requirements:
207
- - - ">"
216
+ - - ">="
208
217
  - !ruby/object:Gem::Version
209
- version: 1.3.1
218
+ version: '0'
210
219
  requirements: []
211
- rubygems_version: 3.0.6
220
+ rubygems_version: 3.1.4
212
221
  signing_key:
213
222
  specification_version: 4
214
223
  summary: Ruby Client for the creditar.io API