ac 0.1.1 → 0.2.1
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 +7 -2
- data/lib/ac/database.rb +21 -0
- data/lib/ac/version.rb +1 -1
- data/lib/ac.rb +1 -0
- metadata +4 -4
- data/ac.gemspec +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 170cf1e02401172b4227c6962753133678a1abe747e4a1dea5e2bd7ab0ba9a68
|
4
|
+
data.tar.gz: f87fabaf5c3a60282271f448fd206e62aeb1f5b2a34d7dcbe0fbceacf61f0e5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bedbce4e164703ad7f5fd73c285858d8f9da4f2ce08963cd694ef224fb6b3ea4fdb4ec88b9fc18e1ffb5675a80adc6cbfa10776e3cf4010dbbc0b7ce0dd69fe
|
7
|
+
data.tar.gz: 52368ebfdf4291c7d07abac7fe04eae2d15fff5a4789c3cb585c0fa50ac36b33aa9bfe844bfac72f4809d626944045b5f5bedb1bce903707a9ef3ac2d1c3dabd
|
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,16 +26,20 @@ 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
|
37
40
|
end
|
41
|
+
elsif self.class::SAVE_RESPONSES
|
42
|
+
Database.save_request response, class_name: self.class.name
|
38
43
|
end
|
39
44
|
|
40
45
|
response
|
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.1
|
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-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -35,9 +35,9 @@ files:
|
|
35
35
|
- LICENSE.txt
|
36
36
|
- README.md
|
37
37
|
- Rakefile
|
38
|
-
- ac.gemspec
|
39
38
|
- lib/ac.rb
|
40
39
|
- lib/ac/base.rb
|
40
|
+
- lib/ac/database.rb
|
41
41
|
- lib/ac/json_patch.rb
|
42
42
|
- lib/ac/version.rb
|
43
43
|
homepage: https://github.com/felipedmesquita/ac
|
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
|
-
rubygems_version: 3.4.
|
64
|
+
rubygems_version: 3.4.10
|
65
65
|
signing_key:
|
66
66
|
specification_version: 4
|
67
67
|
summary: Api Client for Typhoeus
|
data/ac.gemspec
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "lib/ac/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "ac"
|
7
|
-
spec.version = Ac::VERSION
|
8
|
-
spec.authors = ["felipedmesquita"]
|
9
|
-
spec.email = ["16197684+felipedmesquita@users.noreply.github.com"]
|
10
|
-
|
11
|
-
spec.summary = "Api Client for Typhoeus"
|
12
|
-
spec.homepage = "https://github.com/felipedmesquita/ac"
|
13
|
-
spec.license = "MIT"
|
14
|
-
|
15
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
16
|
-
spec.metadata["source_code_uri"] = "https://github.com/felipedmesquita/ac"
|
17
|
-
|
18
|
-
# Specify which files should be added to the gem when it is released.
|
19
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
|
-
spec.files = Dir.chdir(__dir__) do
|
21
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
22
|
-
(File.expand_path(f) == __FILE__) ||
|
23
|
-
f.start_with?(*%w[bin/ mini_mock/ test/ spec/ features/ .git .circleci appveyor Gemfile])
|
24
|
-
end
|
25
|
-
end
|
26
|
-
spec.bindir = "exe"
|
27
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = ["lib"]
|
29
|
-
|
30
|
-
# Uncomment to register a new dependency of your gem
|
31
|
-
spec.add_dependency "typhoeus"
|
32
|
-
|
33
|
-
# For more information and examples about making a new gem, check out our
|
34
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
35
|
-
end
|