creditario-client 0.0.5.alpha → 0.0.6.alpha

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: 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