heroics 0.0.25 → 0.1.0
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/heroics.gemspec +1 -1
- data/lib/heroics/configuration.rb +11 -1
- data/lib/heroics/link.rb +5 -1
- data/lib/heroics/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5647a8b91b25c77f40182266db987cd58c4f189eae45a70a694ba4d21f736d19
|
4
|
+
data.tar.gz: 7a723886449d51423484019452f5f22be13bef2874f94d85c90153c7e4b16aa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adfc5e7f5a5159d9264215bcc8496e334535ace0f5b770fb46de19f331a03425423a7c2aee7f21cf990c57aa4a36e724206bd1f280f70e68c0f7d15640930390
|
7
|
+
data.tar.gz: 75d171e2daf0bc99a5d1d675661684e15f4d128ccb1cc1f02deabddfc56cef955de82bbd85f366e17dd6f915452cd2df2d8d223830f4de0593d6bf149ba76f27
|
data/CHANGELOG.md
ADDED
data/heroics.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.test_files = spec.files.grep('^(test|spec|features)/')
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.add_development_dependency 'bundler'
|
23
|
+
spec.add_development_dependency 'bundler'
|
24
24
|
spec.add_development_dependency 'minitest', '4.7.5'
|
25
25
|
spec.add_development_dependency 'netrc'
|
26
26
|
spec.add_development_dependency 'rake'
|
@@ -1,6 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Heroics
|
4
|
+
module NullRateLimit
|
5
|
+
def self.call
|
6
|
+
yield
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
4
10
|
# Attempts to load configuration, provides defaults, and provide helpers to access that data
|
5
11
|
class Configuration
|
6
12
|
attr_reader :base_url,
|
@@ -22,7 +28,7 @@ module Heroics
|
|
22
28
|
@options = {}
|
23
29
|
@options[:cache] = 'Moneta.new(:Memory)'
|
24
30
|
@options[:default_headers] = {}
|
25
|
-
|
31
|
+
@options[:rate_throttle] = NullRateLimit
|
26
32
|
@ruby_name_replacement_patterns = { /[\s-]+/ => '_' }
|
27
33
|
|
28
34
|
yield self if block_given?
|
@@ -57,5 +63,9 @@ module Heroics
|
|
57
63
|
raise "Must provide a hash of replacements" unless patterns.is_a?(Hash)
|
58
64
|
@ruby_name_replacement_patterns = patterns
|
59
65
|
end
|
66
|
+
|
67
|
+
def rate_throttle=(rate_throttle)
|
68
|
+
@options[:rate_throttle] = rate_throttle
|
69
|
+
end
|
60
70
|
end
|
61
71
|
end
|
data/lib/heroics/link.rb
CHANGED
@@ -18,6 +18,7 @@ module Heroics
|
|
18
18
|
@link_schema = link_schema
|
19
19
|
@default_headers = options[:default_headers] || {}
|
20
20
|
@cache = options[:cache] || {}
|
21
|
+
@rate_throttle = options[:rate_throttle] || Heroics::Configuration.defaults.options[:rate_throttle]
|
21
22
|
end
|
22
23
|
|
23
24
|
# Make a request to the server.
|
@@ -108,7 +109,10 @@ module Heroics
|
|
108
109
|
etag = @cache["etag:#{cache_key}"]
|
109
110
|
options[:headers] = options[:headers].merge({'If-None-Match' => etag}) if etag
|
110
111
|
end
|
111
|
-
|
112
|
+
|
113
|
+
response = @rate_throttle.call do
|
114
|
+
connection.request(options)
|
115
|
+
end
|
112
116
|
|
113
117
|
if response.status == 304
|
114
118
|
body = @cache["data:#{cache_key}"]
|
data/lib/heroics/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- geemus
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '0'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: minitest
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -177,6 +177,7 @@ extra_rdoc_files: []
|
|
177
177
|
files:
|
178
178
|
- ".gitignore"
|
179
179
|
- ".travis.yml"
|
180
|
+
- CHANGELOG.md
|
180
181
|
- CONTRIBUTING.md
|
181
182
|
- CONTRIBUTORS.md
|
182
183
|
- Gemfile
|
@@ -220,8 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
221
|
- !ruby/object:Gem::Version
|
221
222
|
version: '0'
|
222
223
|
requirements: []
|
223
|
-
|
224
|
-
rubygems_version: 2.7.6
|
224
|
+
rubygems_version: 3.0.3
|
225
225
|
signing_key:
|
226
226
|
specification_version: 4
|
227
227
|
summary: A Ruby client generator for HTTP APIs described with a JSON schema
|