ac 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0168d5bdf01a61dce4822daa18b9220e7206e054d8eb221e35f44960132a872
4
- data.tar.gz: 55e1ff51ba10f2fcd774cec1076776d2e878892d64a61794e0d81864294754b8
3
+ metadata.gz: 960345a74ffe3f55bdcab63d0b51fc85ec644fdf35683e6d69681d9222b51a8d
4
+ data.tar.gz: e2739c2fcb68de9b8410600ca609d754468de441036cdc20b04376d0a5382a17
5
5
  SHA512:
6
- metadata.gz: a5ebe2c76798b8e089c1a9cd382f8a52d9517ba6d41c7fb1285b5ecf489d20c0cc60fc967afc4154cd676a79e4491fc15eca1d609ea8890aa503252eb5bb6d9e
7
- data.tar.gz: 70b22d0c9746b6e85fb4d8bef1d15c7f75b00b8e226c449d8c8c28127bf71d7fd5ed629cfeb54ed137345af0dbb9c79cee937b9b7e9506bc89e9762789bc8977
6
+ metadata.gz: cfa8a6ad1595b35423a4dd8ec789215da4174ba566d19b1891bfd6eebfbf90f29089535614c523b036379d675f77cd9f822d15429eaac205870388c1b6cb2e9b
7
+ data.tar.gz: 9bcfb7690f54a7d066b22af14cef02547fadaa11166a0d4f3a0e6490556f03628593e2e9ca764965fd447d4d68782e8a03e13273c128707be5f39195b0cb5972
data/lib/ac/base.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Ac
2
2
  class Base
3
3
  MAX_RETRIES = 3
4
+ SAVE_RESPONSES = false
4
5
 
5
6
  attr_reader :access_token
6
7
  def initialize access_token = nil
@@ -12,7 +13,7 @@ module Ac
12
13
  end
13
14
 
14
15
  %i[get post put patch delete].each do |http_verb|
15
- define_method "#{http_verb}_request" do |path, options = {}|
16
+ define_method :"#{http_verb}_request" do |path, options = {}|
16
17
  options[:method] = http_verb
17
18
  if access_token
18
19
  options[:headers] ||= {}
@@ -25,12 +26,14 @@ module Ac
25
26
  retries_count ||= 0
26
27
  raise "Too many retries" if retries_count > self.class::MAX_RETRIES
27
28
  # puts "Requesting #{path}, retry number #{retries_count}"
28
- response = send("#{http_verb}_request", path, options).run
29
+ response = send(:"#{http_verb}_request", path, options).run
29
30
 
30
31
  if block
31
32
  begin
32
33
  raise unless block.call(response)
34
+ Database.save_request response, class_name: self.class.name if self.class::SAVE_RESPONSES
33
35
  rescue
36
+ Database.save_request(response, class_name: self.class.name + "_errors") if self.class::SAVE_RESPONSES
34
37
  retries_count += 1 # standard:disable Lint/UselessAssignment
35
38
  sleep(2**retries_count) # Exponential backoff
36
39
  redo
@@ -0,0 +1,21 @@
1
+ module Ac
2
+ module Database
3
+ def self.request_model_exists?
4
+ model = "Request".safe_constantize
5
+ model.present? && model < ActiveRecord::Base && "Extractor".safe_constantize
6
+ end
7
+
8
+ def self.save_request response, class_name: "Ac"
9
+ return unless request_model_exists?
10
+ res = Extractor::ResponseWithJson.from_response response
11
+ ::Request.create!({
12
+ extractor_class: class_name,
13
+ base_url: res.request.base_url,
14
+ request_options: res.request.options,
15
+ request_original_options: res.request.original_options,
16
+ response_options: res.parsed_options,
17
+ request_cache_key: res.request.cache_key
18
+ })
19
+ end
20
+ end
21
+ end
data/lib/ac/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ac
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/ac.rb CHANGED
@@ -5,6 +5,7 @@ require "json"
5
5
  require_relative "ac/version"
6
6
  require_relative "ac/base"
7
7
  require_relative "ac/json_patch"
8
+ require_relative "ac/database"
8
9
 
9
10
  module Ac
10
11
  Typhoeus::Response.prepend JsonPatch
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - felipedmesquita
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-01 00:00:00.000000000 Z
11
+ date: 2024-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -38,6 +38,7 @@ files:
38
38
  - ac.gemspec
39
39
  - lib/ac.rb
40
40
  - lib/ac/base.rb
41
+ - lib/ac/database.rb
41
42
  - lib/ac/json_patch.rb
42
43
  - lib/ac/version.rb
43
44
  homepage: https://github.com/felipedmesquita/ac
@@ -61,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
62
  - !ruby/object:Gem::Version
62
63
  version: '0'
63
64
  requirements: []
64
- rubygems_version: 3.4.6
65
+ rubygems_version: 3.4.10
65
66
  signing_key:
66
67
  specification_version: 4
67
68
  summary: Api Client for Typhoeus