creditario-client 0.0.1.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +14 -0
  4. data/.gitlab-ci.yml +23 -0
  5. data/.rubocop.yml +155 -0
  6. data/.travis.yml +5 -0
  7. data/CODE_OF_CONDUCT.md +74 -0
  8. data/Dockerfile +3 -0
  9. data/Gemfile +8 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +241 -0
  12. data/Rakefile +21 -0
  13. data/bin/console +15 -0
  14. data/bin/setup +8 -0
  15. data/creditario-client.gemspec +35 -0
  16. data/lib/creditario/api/create.rb +29 -0
  17. data/lib/creditario/api/delete.rb +25 -0
  18. data/lib/creditario/api/list.rb +27 -0
  19. data/lib/creditario/api/multipart.rb +29 -0
  20. data/lib/creditario/api/request.rb +101 -0
  21. data/lib/creditario/api/retrieve.rb +32 -0
  22. data/lib/creditario/api/update.rb +32 -0
  23. data/lib/creditario/client.rb +183 -0
  24. data/lib/creditario/client/railtie.rb +14 -0
  25. data/lib/creditario/client/version.rb +9 -0
  26. data/lib/creditario/exceptions.rb +121 -0
  27. data/lib/creditario/repositories/applications.rb +50 -0
  28. data/lib/creditario/repositories/attachments.rb +50 -0
  29. data/lib/creditario/repositories/catalogs.rb +59 -0
  30. data/lib/creditario/repositories/contracts.rb +29 -0
  31. data/lib/creditario/repositories/credit_estimates.rb +29 -0
  32. data/lib/creditario/repositories/credits.rb +35 -0
  33. data/lib/creditario/repositories/customers.rb +50 -0
  34. data/lib/creditario/repositories/expenses.rb +41 -0
  35. data/lib/creditario/repositories/incomes.rb +41 -0
  36. data/lib/creditario/repositories/payments.rb +34 -0
  37. data/lib/creditario/repositories/products.rb +38 -0
  38. data/lib/creditario/repositories/references.rb +41 -0
  39. data/lib/creditario/resources/application.rb +27 -0
  40. data/lib/creditario/resources/attachment.rb +19 -0
  41. data/lib/creditario/resources/catalog.rb +35 -0
  42. data/lib/creditario/resources/contract.rb +21 -0
  43. data/lib/creditario/resources/credit.rb +19 -0
  44. data/lib/creditario/resources/credit_estimate.rb +19 -0
  45. data/lib/creditario/resources/customer.rb +25 -0
  46. data/lib/creditario/resources/expense.rb +19 -0
  47. data/lib/creditario/resources/income.rb +19 -0
  48. data/lib/creditario/resources/payment.rb +21 -0
  49. data/lib/creditario/resources/product.rb +21 -0
  50. data/lib/creditario/resources/reference.rb +19 -0
  51. data/lib/creditario/resources/resource.rb +96 -0
  52. data/lib/creditario/utils/paginated_collection.rb +45 -0
  53. data/lib/creditario/utils/resources_collection.rb +35 -0
  54. data/lib/generators/creditario/USAGE +13 -0
  55. data/lib/generators/creditario/install_generator.rb +17 -0
  56. data/lib/generators/creditario/templates/creditario.yml +12 -0
  57. data/lib/generators/creditario/templates/initializer.rb +4 -0
  58. data/rakelib/fixture_api_response.rake +10 -0
  59. data/rakelib/fixture_api_response.rb +114 -0
  60. metadata +214 -0
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::Expenses
6
+ #
7
+ # Repositorio de Egresos, permite realizar las siguientes operaciones
8
+ # sobre Egresos para Solicitudes de Crédito de creditar.io
9
+ #
10
+ # - Obtener un Egreso en especifico:
11
+ #
12
+ # Creditario::Expenses.retrieve("eeedba2e-fc96-4f96-bd2e-bd046b256f96")
13
+ # => Creditario::Expense
14
+ #
15
+ # - Crear un Egreso:
16
+ #
17
+ # result = Creditario::Expenses.create(classification: "Renta", amount_cents: 25000, credit_application_id: "636264b1-77a2-45ef-b643-e44cfbc84d40")
18
+ # => Creditario::Expense
19
+ #
20
+ # - Eliminar un Egreso:
21
+ #
22
+ # result = Creditario::Expenses.delete("eeedba2e-fc96-4f96-bd2e-bd046b256f96")
23
+ # => true
24
+ module Expenses
25
+ extend Creditario::API::Retrieve
26
+ extend Creditario::API::Create
27
+ extend Creditario::API::Delete
28
+
29
+ ###
30
+ # Path de la API donde se ejecutan las peticiones para Egresos.
31
+ def self.resource_path
32
+ "/expenses"
33
+ end
34
+
35
+ ###
36
+ # Clase a utilizar para transformar las respuestas de la API.
37
+ def self.resource_class
38
+ Creditario::Expense
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::Incomes
6
+ #
7
+ # Repositorio de Ingresos, permite realizar las siguientes operaciones
8
+ # sobre Ingresos para Solicitudes de Crédito de creditar.io
9
+ #
10
+ # - Obtener un Ingreso en especifico:
11
+ #
12
+ # Creditario::Incomes.retrieve("0b19e3b6-9fae-40e1-a7c2-f2db1cae8a5a")
13
+ # => Creditario::Income
14
+ #
15
+ # - Crear un Ingreso:
16
+ #
17
+ # result = Creditario::Incomes.create(classification: "Trabajo", amount_cents: 45000, credit_application_id: "636264b1-77a2-45ef-b643-e44cfbc84d40")
18
+ # => Creditario::Income
19
+ #
20
+ # - Eliminar un Ingreso:
21
+ #
22
+ # result = Creditario::Incomes.delete("0b19e3b6-9fae-40e1-a7c2-f2db1cae8a5a")
23
+ # => true
24
+ module Incomes
25
+ extend Creditario::API::Retrieve
26
+ extend Creditario::API::Create
27
+ extend Creditario::API::Delete
28
+
29
+ ###
30
+ # Path de la API donde se ejecutan las peticiones para Ingresos.
31
+ def self.resource_path
32
+ "/incomes"
33
+ end
34
+
35
+ ###
36
+ # Clase a utilizar para transformar las respuestas de la API.
37
+ def self.resource_class
38
+ Creditario::Income
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::Payments
6
+ #
7
+ # Repositorio de Pagos, permite obtener la lista de Pagos a partir de un Crédito.
8
+ #
9
+ # - Listar Pagos por Crédito:
10
+ #
11
+ # Creditario::Payments.list(credit_id: "2e9d05b8-2180-4779-bab6-bdfd41d1569f")
12
+ # => Creditario::ResourcesCollection
13
+ #
14
+ # - Crear un Pago:
15
+ #
16
+ # Creditario::Payments.create(installment_id: "9270cc36-5f90-448a-8fd8-cff7c7bd1f75", amount_cents: 100000, payment_type: "annuity", prepaid_type: "not_reduce", payment_method: "SPEI", forgive_penalty_interest: "false")
17
+ # => Creditario::Payment
18
+ module Payments
19
+ extend Creditario::API::List
20
+ extend Creditario::API::Create
21
+
22
+ ###
23
+ # Path de la API donde se ejecutan las peticiones para Pagos.
24
+ def self.resource_path
25
+ "/payments"
26
+ end
27
+
28
+ ###
29
+ # Clase a utilizar para transformar las respuestas de la API
30
+ def self.resource_class
31
+ Creditario::Payment
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::Products
6
+ #
7
+ # Repositorio de Productos, permite realizar las siguientes operaciones
8
+ # sobre Productos de creditar.io:
9
+ #
10
+ # - Obtener todos los Productos Activos:
11
+ #
12
+ # result = Creditario::Products.list
13
+ # => Creditario::PaginatedCollection
14
+ #
15
+ # result.items
16
+ # => [Creditario::Product, Creditario::Product, ...]
17
+ #
18
+ # - Obtener un Producto en especifico:
19
+ #
20
+ # Creditario::Products.retrieve("c005b7f7-a44a-4ec0-bf7f-73d15d806fd9")
21
+ # => Creditario::Product
22
+ module Products
23
+ extend Creditario::API::List
24
+ extend Creditario::API::Retrieve
25
+
26
+ ###
27
+ # Path de la API donde se ejecutan las peticiones para Productos.
28
+ def self.resource_path
29
+ "/products"
30
+ end
31
+
32
+ ###
33
+ # Clase a utilizar para transformar las respuestas de la API.
34
+ def self.resource_class
35
+ Creditario::Product
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Creditario # :nodoc:
4
+ ###
5
+ # == Creditario::References
6
+ #
7
+ # Repositorio de Referencias, permite realizar las siguientes operaciones
8
+ # sobre Referencias para Solicitudes de Crédito de creditar.io
9
+ #
10
+ # - Obtener una Referencia en especifico:
11
+ #
12
+ # Creditario::References.retrieve("0b19e3b6-9fae-40e1-a7c2-f2db1cae8a5a")
13
+ # => Creditario::Referencia
14
+ #
15
+ # - Crear una Referencia:
16
+ #
17
+ # result = Creditario::References.create(classification: "Amistad", name: "Diane Nguyen", phone: "3129743789", credit_application_id: "636264b1-77a2-45ef-b643-e44cfbc84d40")
18
+ # => Creditario::Referencia
19
+ #
20
+ # - Eliminar una Referencia:
21
+ #
22
+ # result = Creditario::References.delete("0b19e3b6-9fae-40e1-a7c2-f2db1cae8a5a")
23
+ # => true
24
+ module References
25
+ extend Creditario::API::Retrieve
26
+ extend Creditario::API::Create
27
+ extend Creditario::API::Delete
28
+
29
+ ###
30
+ # Path de la API donde se ejecutan las peticiones para Referencias.
31
+ def self.resource_path
32
+ "/references"
33
+ end
34
+
35
+ ###
36
+ # Clase a utilizar para transformar las respuestas de la API.
37
+ def self.resource_class
38
+ Creditario::Reference
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
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
19
+ include Resource
20
+
21
+ has_one :product, class: Creditario::Product
22
+ has_one :contract, class: Creditario::Contract
23
+ has_many :incomes, class: Creditario::Income
24
+ has_many :expenses, class: Creditario::Expense
25
+ has_many :references, class: Creditario::Reference
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
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
17
+ include Resource
18
+ end
19
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
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
17
+ include Resource
18
+ end
19
+
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
33
+ include Resource
34
+ end
35
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
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
19
+ include Resource
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
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
17
+ include Resource
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
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
17
+ include Resource
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
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
21
+ include Resource
22
+
23
+ has_many :credit_applications, class: Creditario::Application
24
+ end
25
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
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
17
+ include Resource
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
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
17
+ include Resource
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
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
19
+ include Resource
20
+ end
21
+ end