aga-request 0.0.0 → 0.0.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: adb2674873098f2a5a97cf07b8b09306fe7dd233d62cff2b89230787adeaab5d
4
- data.tar.gz: aef7f2ed2e5b23222f8c575bcbe008df8380fff1909f8fc9d7998ee5518a7288
3
+ metadata.gz: a00fbef7308e4a5cd61fd3227a06467cbbe82a01f48c69fedc24f9e846490642
4
+ data.tar.gz: e8a7ef87bb251566b9eb87b483211265e90cfeacae28a8d829f9e327e31ddae9
5
5
  SHA512:
6
- metadata.gz: ad548f7cf4ebd4f5ee27a8468ba0cf5aa1fc726091b9a40c26e0148375de81c6c98f30761a2628b0bc2be5d8c8c3fd571dee89395418d21e6996bf44ea86f53d
7
- data.tar.gz: '0096873bf9e65a97e33e5e18317fc832e5c57f9635008b8e5e92a033aac4c97a37a7a19e90e6ffbcac94263370c1b48d9c260e7e1550dfd0451e9b4b976d892c'
6
+ metadata.gz: b809408a7a31881aaaa11315498b39312d98d23fbeed05f5b62ea747604913c549dedac85667c26938f48d2f0d2b55ab02c941ce282a430335f974d620a1e93d
7
+ data.tar.gz: 211dc87b4885f67207fd37299c7f7f9d79f236ffe0fec630bbc08c0007d87f994ccaef7b4b6e44322426781a54f400c241007b866196cac9c2e711c071a67125
data/lib/request/base.rb CHANGED
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'uri'
4
- require 'net/http'
5
- require 'json'
3
+ require 'faraday'
4
+ require 'active_support'
5
+ require 'active_support/cache'
6
6
 
7
7
  module Request
8
8
  class Base
9
9
  class << self
10
10
  attr_accessor :app_info
11
+
12
+ def initialize; end
11
13
  end
12
14
 
13
15
  self.app_info = ::ENV['APP_INFO'] || "#{::Request::NAME} V#{::Request.version}"
@@ -2,37 +2,61 @@
2
2
 
3
3
  module Request
4
4
  class Http < Base
5
- class << self
6
- def request(uri:, method:, signature: nil, params: {})
7
- req = get_method(name: method, uri: uri)
8
- req['Authorization'] = signature unless signature.nil?
9
- req['Content-Type'] = 'application/json'
5
+ def initialize(api_key: nil, api_secret: nil, cache_options: {})
6
+ super()
7
+ @api_key = api_key
8
+ @api_secret = api_secret
9
+ @cache = ActiveSupport::Cache.lookup_store(:memory_store, cache_options || default_cache)
10
+ end
10
11
 
11
- req.body = JSON.dump(except_params(params)) unless params.empty?
12
+ def get(endpoint, params = {}, headers = {})
13
+ response = cached_request(:get, endpoint, params, headers)
14
+ JSON.parse(response.body)
15
+ end
12
16
 
13
- res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
14
- http.request(req)
15
- end
17
+ def post(endpoint, body = {}, headers = {})
18
+ response = cached_request(:post, endpoint, body, headers)
19
+ JSON.parse(response.body)
20
+ end
16
21
 
17
- JSON.parse(res.body)
18
- end
22
+ def put(endpoint, body = {}, headers = {})
23
+ response = cached_request(:put, endpoint, body, headers)
24
+ JSON.parse(response.body)
25
+ end
19
26
 
20
- private
27
+ def delete(endpoint, params = {}, headers = {})
28
+ response = cached_request(:delete, endpoint, params, headers)
29
+ JSON.parse(response.body)
30
+ end
21
31
 
22
- def get_method(name:, uri:)
23
- case name
24
- when 'GET', 'get'
25
- req = Net::HTTP::Get.new(uri)
26
- when 'POST', 'post'
27
- req = Net::HTTP::Post.new(uri)
28
- end
32
+ private
29
33
 
30
- req
34
+ def cached_request(method, endpoint, payload = {}, headers = {})
35
+ cache_key = [method, endpoint, payload, headers]
36
+ if @cache.exist?(cache_key)
37
+ @cache.read(cache_key)
38
+ else
39
+ response = make_request(method, endpoint, payload, headers)
40
+ @cache.write(cache_key, response)
41
+ response
42
+ end
43
+ end
44
+
45
+ def make_request(method, endpoint, payload, headers)
46
+ connection = Faraday.new(endpoint) do |conn|
47
+ conn.request :url_encoded
48
+ conn.adapter Faraday.default_adapter
31
49
  end
32
50
 
33
- def except_params(params)
34
- params.reject { |k, v| [:signature].include? k }
51
+ connection.public_send(method) do |request|
52
+ request.headers.merge!(headers)
53
+ request.url(endpoint)
54
+ request.body = payload.to_json if %i[post put].include?(method)
35
55
  end
36
56
  end
57
+
58
+ def default_cache
59
+ { size: 64.megabytes, expires_in: 1.minutes }
60
+ end
37
61
  end
38
62
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Request
4
- VERSION = '0.0.0'
4
+ VERSION = '0.0.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aga-request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Baldazzi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-09 00:00:00.000000000 Z
11
+ date: 2023-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 7.0.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 7.0.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bump
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: 3.1.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.7'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -172,5 +200,5 @@ requirements: []
172
200
  rubygems_version: 3.3.24
173
201
  signing_key:
174
202
  specification_version: 4
175
- summary: request0.0.0
203
+ summary: request0.0.1
176
204
  test_files: []