resterl 0.0.16 → 0.0.17

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
  SHA1:
3
- metadata.gz: 52b59fae88efaf01ddef720766197e661101b766
4
- data.tar.gz: 0c4fb0c9858c1b39068e293cf25e53a7eacb2427
3
+ metadata.gz: eefda67e9d4b1b634f09e64d6744a43a6733dfd4
4
+ data.tar.gz: 302093e3f36f08d49d1918759047255aa9c28867
5
5
  SHA512:
6
- metadata.gz: b2763c61b9b1ef3e9fe64e78648f1fc67748d16040e9c28163853ba6779f4e7bc03442c865c452106aba58a7b8510b0c44267aee0fbe7f6db40df928b9c2f671
7
- data.tar.gz: ac3bb5ab0e309aa16461b9c62e5fa42ff7ab8748b20203a0fae4b1e78241d831f313730fd0a1e20b4bc9dbb4f7facb4152e07b07d7a57f8589e45e5efcae2f6d
6
+ metadata.gz: 1ccf4876bf18424c64528b8a257d651b531ce92979f52ebbc9cf54e51a4372f881b5e7072accf557b56f5b0385b47c553f52d9df5ef6b07429a348639815f473
7
+ data.tar.gz: 654b12d576e911c072d58426edb17b37cbd97ce3626b179cebb7a837536d32c93867387e93cdaca8a6e5acefe4a1d15ce9976968bfcbfb2ff2bea1e14d3a98be
@@ -1,4 +1,4 @@
1
- # encoding: UTF-8
1
+ # encoding: utf-8
2
2
 
3
3
  module Resterl
4
4
  class Client
@@ -8,6 +8,8 @@ module Resterl
8
8
  cache: Resterl::Caches::SimpleCache.new,
9
9
  ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE,
10
10
  expiry_multiplier: 10,
11
+ open_timeout: 15,
12
+ read_timeout: 60,
11
13
  minimum_cache_lifetime: 5 * 60 # 5 Minuten
12
14
  }
13
15
 
@@ -70,39 +72,8 @@ module Resterl
70
72
 
71
73
  # Anfrage stellen, ggf. ETag mit übergeben
72
74
  request = Resterl::GetRequest.new(self, url, params, headers)
73
- new_response = request.perform.response
74
-
75
- response, max_age_seconds =
76
- case new_response
77
- when Net::HTTPClientError,
78
- Net::HTTPServerError
79
- # Aus dem Cache muss nichts entfernt werden,
80
- # weil ja auch kein Eintrag (mehr) drin ist.
81
- new_response.error!
82
- when Net::HTTPNotModified
83
- # Wenn "304 Not Modified", dann altes
84
- # Ergebnis als neues Ergebnis verwenden
85
- r_temp = Resterl::Response.new(new_response,
86
- options[:minimum_cache_lifetime])
87
- old_response.update_expires_at(
88
- r_temp.expires_at)
89
- [old_response, r_temp.expires_at - Time.now]
90
- when Net::HTTPSuccess
91
- r = Resterl::Response.new(new_response,
92
- options[:minimum_cache_lifetime])
93
- [r, r.expires_at - Time.now]
94
- else
95
- raise 'unknown response'
96
- end
97
-
98
- # Cachezeit berechnen
99
- expiry = [
100
- max_age_seconds.to_i * options[:expiry_multiplier],
101
- options[:minimum_cache_lifetime]
102
- ].max
103
-
104
- # Ergebnis im Cache speichern
105
- @cache.write cache_key, response, expiry
75
+ response, max_age_seconds = get_response(request, old_response)
76
+ cache_response(response, max_age_seconds, cache_key)
106
77
 
107
78
  response
108
79
  end
@@ -129,5 +100,46 @@ module Resterl
129
100
  def data_to_cache_key *args
130
101
  args.hash
131
102
  end
103
+
104
+ def get_response(request, old_response)
105
+ # Anfrage stellen, ggf. ETag mit übergeben
106
+ new_response = request.perform.response
107
+
108
+ case new_response
109
+ when Net::HTTPClientError,
110
+ Net::HTTPServerError
111
+ # Aus dem Cache muss nichts entfernt werden,
112
+ # weil ja auch kein Eintrag (mehr) drin ist.
113
+ new_response.error!
114
+ when Net::HTTPNotModified
115
+ reuse_old_response(new_response, old_response)
116
+ when Net::HTTPSuccess
117
+ r = Resterl::Response.new(new_response,
118
+ options[:minimum_cache_lifetime])
119
+ [r, r.expires_at - Time.now]
120
+ else
121
+ raise 'unknown response'
122
+ end
123
+ end
124
+
125
+ def cache_response(response, max_age_seconds, cache_key)
126
+ # Cachezeit berechnen
127
+ expiry = [
128
+ max_age_seconds.to_i * options[:expiry_multiplier],
129
+ options[:minimum_cache_lifetime]
130
+ ].max
131
+
132
+ # Ergebnis im Cache speichern
133
+ @cache.write cache_key, response, expiry
134
+ end
135
+
136
+ def reuse_old_response(new_response, old_response)
137
+ # Wenn "304 Not Modified", dann altes
138
+ # Ergebnis als neues Ergebnis verwenden
139
+ r_temp = Resterl::Response.new(new_response,
140
+ options[:minimum_cache_lifetime])
141
+ old_response.update_expires_at(r_temp.expires_at)
142
+ [old_response, r_temp.expires_at - Time.now]
143
+ end
132
144
  end
133
145
  end
@@ -17,6 +17,7 @@ module Resterl
17
17
  def http_object_and_query_path
18
18
  uri = URI.parse(url)
19
19
  http = Net::HTTP.new(uri.host, uri.port)
20
+ apply_timeout_settings http
20
21
  apply_ssl http, uri
21
22
 
22
23
  path_with_query = uri.path
@@ -46,6 +47,11 @@ module Resterl
46
47
  http.verify_mode = rest_client.options[:ssl_verify_mode]
47
48
  end
48
49
 
50
+ def apply_timeout_settings http
51
+ http.open_timeout = rest_client.options[:open_timeout]
52
+ http.read_timeout = rest_client.options[:read_timeout]
53
+ end
54
+
49
55
  def redirect_url
50
56
  response['location'] || response.body.match(/<a href=\"([^>]+)\">/i)[1]
51
57
  end
@@ -1,3 +1,3 @@
1
1
  module Resterl
2
- VERSION = '0.0.16'
2
+ VERSION = '0.0.17'
3
3
  end
@@ -4,9 +4,7 @@ require 'webmock/rspec'
4
4
  require 'timecop'
5
5
 
6
6
  describe Resterl::Client do
7
-
8
7
  describe 'minimum cache lifetime' do
9
-
10
8
  before do
11
9
  Timecop.freeze(Time.parse('2015-01-01 01:00'))
12
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resterl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Dütsch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-15 00:00:00.000000000 Z
11
+ date: 2015-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -139,7 +139,7 @@ files:
139
139
  - lib/resterl/response.rb
140
140
  - lib/resterl/version.rb
141
141
  - resterl.gemspec
142
- - spec/lib/resterl/client.rb
142
+ - spec/lib/resterl/client_spec.rb
143
143
  - spec/spec_helper.rb
144
144
  homepage: http://github.com/Nix-wie-weg/resterl
145
145
  licenses: []
@@ -165,6 +165,6 @@ signing_key:
165
165
  specification_version: 4
166
166
  summary: Rudimentary HTTP client with focus on caching
167
167
  test_files:
168
- - spec/lib/resterl/client.rb
168
+ - spec/lib/resterl/client_spec.rb
169
169
  - spec/spec_helper.rb
170
170
  has_rdoc: