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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0168d5bdf01a61dce4822daa18b9220e7206e054d8eb221e35f44960132a872
4
- data.tar.gz: 55e1ff51ba10f2fcd774cec1076776d2e878892d64a61794e0d81864294754b8
3
+ metadata.gz: 170cf1e02401172b4227c6962753133678a1abe747e4a1dea5e2bd7ab0ba9a68
4
+ data.tar.gz: f87fabaf5c3a60282271f448fd206e62aeb1f5b2a34d7dcbe0fbceacf61f0e5e
5
5
  SHA512:
6
- metadata.gz: a5ebe2c76798b8e089c1a9cd382f8a52d9517ba6d41c7fb1285b5ecf489d20c0cc60fc967afc4154cd676a79e4491fc15eca1d609ea8890aa503252eb5bb6d9e
7
- data.tar.gz: 70b22d0c9746b6e85fb4d8bef1d15c7f75b00b8e226c449d8c8c28127bf71d7fd5ed629cfeb54ed137345af0dbb9c79cee937b9b7e9506bc89e9762789bc8977
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
@@ -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.1"
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.1
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-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.6
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