creditario-client 0.0.5.alpha → 0.0.6.alpha

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f4165fe66908a1514bc418f2b90042a1f5c138a60904ceb6e80923ed0ec48b0
4
- data.tar.gz: 791a3dd18989bcb936bab78ecab9795e0bed81ae7f32af5904cbae43d8c5f1d5
3
+ metadata.gz: 54a4334502f35b6d2befa8cf6ce2ba4cd0440c2b008f1080df753742a1c3b2ea
4
+ data.tar.gz: '0608409622203f0cfb3a29a9af6e73a9dee3dfb62f3ee25938a52a9ab23cdcef'
5
5
  SHA512:
6
- metadata.gz: 6bdf3162575c9dacb056c4781147451171cd29b3b09be5ab8c39de1f5092ddc709981c98c2af7c0b433583b6f40f1db39cb494ddfaadd5483997aebb38819a00
7
- data.tar.gz: 03d68bfdb38c8298aa71df43fad7d20049deaae796d64f6e7e59d5246ff6896d0dce7d08eb377a390796808d14fa58594b1311ea6acf3b4898d6e4fc8f0f9a7e
6
+ metadata.gz: 54d5728536d0e2de222077f7978ebb720c1d35f9443318eb9b5722156be4cdb87cc8925d647812ec09c69b21cddddd292d988d47cd553ffd31556ad383555379
7
+ data.tar.gz: 0f479a8dbf1fff59a814f8a8ec84cf8d6c38d61312164a7b6d2143e8c4642a1a78f647c5d4a1cc94beb1ec91f0afe1e1489e1de8dee4f7e6f120e664ac27ab9e
@@ -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,8 +75,19 @@ 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
- request["Content-Type"] = "application/json"
80
+
81
+ request
82
+ end
83
+
84
+ def set_request_cache_headers(request)
85
+ @@cached_request = Rails.cache.fetch(request.uri.to_s)
86
+
87
+ if @@cached_request
88
+ request["If-None-Match"] = @@cached_request[:etag]
89
+ request["If-Modified-Since"] = @@cached_request[:last_modified]
90
+ end
74
91
 
75
92
  request
76
93
  end
@@ -101,6 +118,18 @@ module Creditario # :nodoc:
101
118
  raise Exceptions::ResourceNotFoundError.new(response) if response.code == "404"
102
119
  raise Exceptions::UnprocessableEntityError.new(response) if response.code == "422"
103
120
  end
121
+
122
+ def handle_responses(response)
123
+ return @@cached_request[:payload] if response.code == "304" && @@cached_request
124
+
125
+ if defined?(Rails) && response.code == "200" && response["Last-Modified"]
126
+ cache_response = { etag: response["Etag"], last_modified: response["Last-Modified"], payload: response.body }
127
+
128
+ Rails.cache.write(response.uri.to_s, cache_response, expires_in: 10.minutes)
129
+ end
130
+
131
+ response.body
132
+ end
104
133
  end
105
134
  end
106
135
  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.5.alpha"
7
+ VERSION = "0.0.6.alpha"
8
8
  end
9
9
  end
@@ -9,7 +9,7 @@ module Creditario # :nodoc:
9
9
  #
10
10
  # - Obtener una Calificación:
11
11
  #
12
- # Creditario::QualifyScoreFlow.create(credit_application_id: "c005b7f7-a44a-4ec0-bf7f-73d15d806fd9")
12
+ # Creditario::QualifyScoreFlows.create(credit_application_id: "c005b7f7-a44a-4ec0-bf7f-73d15d806fd9")
13
13
  # => Creditario::QualifyScoreFlow
14
14
  module QualifyScoreFlows
15
15
  extend Creditario::API::Create
@@ -8,7 +8,7 @@ module Creditario # :nodoc:
8
8
  #
9
9
  # === Ejemplo
10
10
  #
11
- # => score_flow_calification = Creditario::QualifyScoreFlow.new({"credit_application_id": "5c9d3d7b-3f64-4a6e-82e2-18acc95870c9"})
11
+ # => score_flow_calification = Creditario::QualifyScoreFlow.new({"value": "100", "passed": "true", "notes": "Resultado sastifactorio"})
12
12
  # => score_flow_calification.value
13
13
  # => 100
14
14
  # => score_flow_calification.passed
@@ -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:
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.5.alpha
4
+ version: 0.0.6.alpha
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-05-06 00:00:00.000000000 Z
11
+ date: 2020-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj