nxt_http_client 0.1.4 → 0.1.5

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: eabd4a132e1bff00c6a87e63f51b1e39a5820487aba9b2fead7f99e8bc98240f
4
- data.tar.gz: 94244dad3262e79f55b099a4cb5bcf3c502c033f58ee5ad5beae2969407df6ff
3
+ metadata.gz: 487ffd02f8b43481b080e1d8d44904ea0d42b08bfdd8571f83c1d724f1dc3fdf
4
+ data.tar.gz: 601306df52b05252158373e563252fb6afb3d5686d6e1e91d232dec4c8187721
5
5
  SHA512:
6
- metadata.gz: 13a6f471b3ec3a7b5c1df3c252b803f9dd097b344190694bfad2d54b237fe44c05915edb8d5f568d52ba9660abb2a45faf53d92baa8f48d1885f9c01bd1a8dbc
7
- data.tar.gz: 91948e719330bc54a5f72f26bf29e377d8c1a3e49e7e2141fb805445c510b774875e8b10f16096b68eb0450ed0ea560f20ec0a935479e13c230e3b416413779a
6
+ metadata.gz: 03021c3307a49498cd261bfd68e0df1acf86c4ae9f3ad0825bffaa4a31873753a304295dc50fefb3937a4d7eea18f7799d624ccfa35ac3deecb0254bb59c3361
7
+ data.tar.gz: bb09bed1b60681e76f2a531d5a39e89ca7753e532d61fa5ed4d5a5f3c346721bf82dfefe0d769f5befd92fd91175bb51ebf74a79f6753324f7547c637bec2f5a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nxt_http_client (0.1.4)
4
+ nxt_http_client (0.1.5)
5
5
  activesupport (~> 5.2)
6
6
  typhoeus
7
7
 
@@ -36,6 +36,7 @@ GEM
36
36
  method_source (~> 0.9.0)
37
37
  public_suffix (3.1.1)
38
38
  rake (10.5.0)
39
+ redis (4.1.2)
39
40
  rspec (3.8.0)
40
41
  rspec-core (~> 3.8.0)
41
42
  rspec-expectations (~> 3.8.0)
@@ -70,6 +71,7 @@ DEPENDENCIES
70
71
  nxt_vcr_harness
71
72
  pry
72
73
  rake (~> 10.0)
74
+ redis
73
75
  rspec (~> 3.0)
74
76
  vcr
75
77
  webmock
@@ -1,11 +1,29 @@
1
1
  module NxtHttpClient
2
2
  class Client
3
3
  extend ClientDsl
4
+ CACHE_STRATEGIES = %w[global thread]
4
5
 
5
6
  def build_request(url, **opts)
6
7
  base_url = opts.delete(:base_url) || self.class.base_url
7
8
  url = [base_url, url].reject(&:blank?).join('/').gsub(/([^https?:]\/\/)/, '/')
8
- opts = self.class.default_request_options.deep_merge(opts)
9
+
10
+ opts = self.class.default_request_options.with_indifferent_access.deep_merge(opts.with_indifferent_access)
11
+ opts[:headers] ||= {}
12
+
13
+ if opts[:cache] ||= false
14
+ strategy = opts.delete(:cache)
15
+
16
+ case strategy.to_s
17
+ when 'thread'
18
+ cache_key = Thread.current[:nxt_http_client_cache_key] ||= "#{SecureRandom.base58}::#{DateTime.current}"
19
+ opts[:headers].reverse_merge!(cache_key: cache_key)
20
+ when 'global'
21
+ opts[:headers].delete(:cache_key)
22
+ else
23
+ raise ArgumentError, "Cache strategy unknown: #{strategy}. Options are #{CACHE_STRATEGIES}"
24
+ end
25
+
26
+ end
9
27
 
10
28
  Typhoeus::Request.new(url, opts)
11
29
  end
@@ -51,7 +69,7 @@ module NxtHttpClient
51
69
  result
52
70
  end
53
71
 
54
- %w[get post patch put].each do |method|
72
+ %w[get post patch put delete head].each do |method|
55
73
  define_method method do |url = '', **opts, &block|
56
74
  fire(url, opts.reverse_merge(method: method, &block))
57
75
  end
@@ -31,7 +31,7 @@ module ClientDsl
31
31
  end
32
32
 
33
33
  def default_request_options
34
- @default_request_options ||= (defaults.request_options || {})
34
+ @default_request_options ||= (defaults.request_options || ActiveSupport::HashWithIndifferentAccess.new)
35
35
  end
36
36
 
37
37
  def register_response_handler(handler = nil, &block)
@@ -1,3 +1,3 @@
1
1
  module NxtHttpClient
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -45,4 +45,5 @@ Gem::Specification.new do |spec|
45
45
  spec.add_development_dependency 'vcr'
46
46
  spec.add_development_dependency 'webmock'
47
47
  spec.add_development_dependency 'nxt_vcr_harness'
48
+ spec.add_development_dependency 'redis'
48
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nxt_http_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Robecke
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2019-07-31 00:00:00.000000000 Z
14
+ date: 2019-08-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: typhoeus
@@ -139,6 +139,20 @@ dependencies:
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: redis
144
+ requirement: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ type: :development
150
+ prerelease: false
151
+ version_requirements: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
142
156
  description: NxtHttpClinet allows you to easily create and configure http clients.
143
157
  email:
144
158
  - a.robecke@getsafe.de