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 +4 -4
- data/lib/ac/base.rb +5 -2
- data/lib/ac/database.rb +21 -0
- data/lib/ac/version.rb +1 -1
- data/lib/ac.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 960345a74ffe3f55bdcab63d0b51fc85ec644fdf35683e6d69681d9222b51a8d
|
4
|
+
data.tar.gz: e2739c2fcb68de9b8410600ca609d754468de441036cdc20b04376d0a5382a17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/ac/database.rb
ADDED
@@ -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
data/lib/ac.rb
CHANGED
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.
|
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:
|
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.
|
65
|
+
rubygems_version: 3.4.10
|
65
66
|
signing_key:
|
66
67
|
specification_version: 4
|
67
68
|
summary: Api Client for Typhoeus
|