aga-request 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []