heroics 0.0.23 → 0.1.2
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 +5 -5
- data/.github/workflows/check_changelog.yml +12 -0
- data/CHANGELOG.md +11 -0
- data/Rakefile +0 -1
- data/bin/heroku-api +1 -0
- data/heroics.gemspec +3 -3
- data/lib/heroics.rb +1 -0
- data/lib/heroics/configuration.rb +16 -1
- data/lib/heroics/link.rb +9 -1
- data/lib/heroics/schema.rb +3 -3
- data/lib/heroics/version.rb +1 -1
- data/lib/heroics/views/client.erb +1 -0
- metadata +33 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 935d4099ef19b7d1edd7f04bd8545d0f2a9d0a3dea2433005148854654a9efb9
|
4
|
+
data.tar.gz: afb94092e02a8ee403c4e2b2b7b0326c59f310376ce1175db13a18f185a56bdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa084cff8f5819cc23375f0764c878a44113bd094d1b47997438b2fa8e89e24f56e5ac1fa5dab9341fae077cc329e3d1fac4a5ec26a74e859bfeec50e2951a6b
|
7
|
+
data.tar.gz: 7417de326cf4f11b9f7dc73df4d4397fcfde7f130a34ed4b287226d1c0a536fee1e2f013a15ddb4c596453fc49167d6a218d630ac54059890ad0411e7d32412d
|
@@ -0,0 +1,12 @@
|
|
1
|
+
name: Check Changelog
|
2
|
+
|
3
|
+
on: [pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
steps:
|
9
|
+
- uses: actions/checkout@v1
|
10
|
+
- name: Check that CHANGELOG is touched
|
11
|
+
run: |
|
12
|
+
cat $GITHUB_EVENT_PATH | jq .pull_request.title | grep -i '\[\(\(changelog skip\)\|\(ci skip\)\)\]' || git diff remotes/origin/${{ github.base_ref }} --name-only | grep CHANGELOG.md
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
## 0.1.2
|
2
|
+
|
3
|
+
- Add support for Ruby 3.0 (https://github.com/interagent/heroics/pull/101)
|
4
|
+
|
5
|
+
## 0.1.1
|
6
|
+
|
7
|
+
- Add status codes configuration (https://github.com/interagent/heroics/pull/96)
|
8
|
+
|
9
|
+
## 0.1.0
|
10
|
+
|
11
|
+
- Introduced rate throttling integration point (https://github.com/interagent/heroics/pull/95)
|
data/Rakefile
CHANGED
data/bin/heroku-api
CHANGED
data/heroics.gemspec
CHANGED
@@ -20,16 +20,16 @@ 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
|
-
spec.add_development_dependency 'moneta'
|
26
25
|
spec.add_development_dependency 'netrc'
|
27
26
|
spec.add_development_dependency 'rake'
|
28
|
-
spec.add_development_dependency 'turn'
|
29
27
|
spec.add_development_dependency 'yard'
|
30
28
|
spec.add_development_dependency 'pry'
|
31
29
|
|
32
30
|
spec.add_dependency 'erubis', '~> 2.0'
|
33
31
|
spec.add_dependency 'excon'
|
34
32
|
spec.add_dependency 'multi_json', '>= 1.9.2'
|
33
|
+
spec.add_dependency 'moneta'
|
34
|
+
spec.add_dependency 'webrick'
|
35
35
|
end
|
data/lib/heroics.rb
CHANGED
@@ -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,8 @@ module Heroics
|
|
22
28
|
@options = {}
|
23
29
|
@options[:cache] = 'Moneta.new(:Memory)'
|
24
30
|
@options[:default_headers] = {}
|
25
|
-
|
31
|
+
@options[:rate_throttle] = NullRateLimit
|
32
|
+
@options[:status_codes] = []
|
26
33
|
@ruby_name_replacement_patterns = { /[\s-]+/ => '_' }
|
27
34
|
|
28
35
|
yield self if block_given?
|
@@ -57,5 +64,13 @@ module Heroics
|
|
57
64
|
raise "Must provide a hash of replacements" unless patterns.is_a?(Hash)
|
58
65
|
@ruby_name_replacement_patterns = patterns
|
59
66
|
end
|
67
|
+
|
68
|
+
def rate_throttle=(rate_throttle)
|
69
|
+
@options[:rate_throttle] = rate_throttle
|
70
|
+
end
|
71
|
+
|
72
|
+
def acceptable_status_codes=(status_codes)
|
73
|
+
@options[:status_codes] = status_codes
|
74
|
+
end
|
60
75
|
end
|
61
76
|
end
|
data/lib/heroics/link.rb
CHANGED
@@ -18,6 +18,8 @@ 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]
|
22
|
+
@status_codes = options[:status_codes] || Heroics::Configuration.defaults.options[:status_codes]
|
21
23
|
end
|
22
24
|
|
23
25
|
# Make a request to the server.
|
@@ -103,12 +105,18 @@ module Heroics
|
|
103
105
|
|
104
106
|
def request_with_cache(connection, options)
|
105
107
|
options[:expects] << 304
|
108
|
+
@status_codes.each do |code|
|
109
|
+
options[:expects] << code
|
110
|
+
end
|
106
111
|
cache_key = "#{options[:path]}:#{options[:headers].hash}"
|
107
112
|
if options[:method] == :get
|
108
113
|
etag = @cache["etag:#{cache_key}"]
|
109
114
|
options[:headers] = options[:headers].merge({'If-None-Match' => etag}) if etag
|
110
115
|
end
|
111
|
-
|
116
|
+
|
117
|
+
response = @rate_throttle.call do
|
118
|
+
connection.request(options)
|
119
|
+
end
|
112
120
|
|
113
121
|
if response.status == 304
|
114
122
|
body = @cache["data:#{cache_key}"]
|
data/lib/heroics/schema.rb
CHANGED
@@ -244,7 +244,7 @@ module Heroics
|
|
244
244
|
[value['$ref'], key]
|
245
245
|
end]
|
246
246
|
parameters.map do |parameter|
|
247
|
-
definition_name = URI.unescape(parameter[2..-3])
|
247
|
+
definition_name = ::URI::DEFAULT_PARSER.unescape(parameter[2..-3])
|
248
248
|
if definitions.has_key?(definition_name)
|
249
249
|
definitions[definition_name]
|
250
250
|
else
|
@@ -273,7 +273,7 @@ module Heroics
|
|
273
273
|
def resolve_parameter_details(parameters)
|
274
274
|
parameters.map do |parameter|
|
275
275
|
# URI decode parameters and strip the leading '{(' and trailing ')}'.
|
276
|
-
parameter = URI.unescape(parameter[2..-3])
|
276
|
+
parameter = ::URI::DEFAULT_PARSER.unescape(parameter[2..-3])
|
277
277
|
|
278
278
|
# Split the path into components and discard the leading '#' that
|
279
279
|
# represents the root of the schema.
|
@@ -334,7 +334,7 @@ module Heroics
|
|
334
334
|
# @return [String] The formatted parameter.
|
335
335
|
def format_parameter(parameter)
|
336
336
|
formatted_parameter = parameter.instance_of?(Time) ? iso_format(parameter) : parameter.to_s
|
337
|
-
|
337
|
+
WEBrick::HTTPUtils.escape formatted_parameter
|
338
338
|
end
|
339
339
|
|
340
340
|
# Convert a time to an ISO 8601 combined data and time format.
|
data/lib/heroics/version.rb
CHANGED
metadata
CHANGED
@@ -1,30 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- geemus
|
8
8
|
- jkakar
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-01-27 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
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 4.7.5
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: netrc
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: rake
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
@@ -68,7 +68,7 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: yard
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: pry
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - ">="
|
@@ -96,27 +96,27 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
99
|
+
name: erubis
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
|
-
type: :
|
104
|
+
version: '2.0'
|
105
|
+
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
111
|
+
version: '2.0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
113
|
+
name: excon
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
|
-
type: :
|
119
|
+
type: :runtime
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
@@ -124,21 +124,21 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: multi_json
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- - "
|
130
|
+
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
132
|
+
version: 1.9.2
|
133
133
|
type: :runtime
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - "
|
137
|
+
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
139
|
+
version: 1.9.2
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
141
|
+
name: moneta
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - ">="
|
@@ -152,19 +152,19 @@ dependencies:
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
155
|
+
name: webrick
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
158
|
- - ">="
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
160
|
+
version: '0'
|
161
161
|
type: :runtime
|
162
162
|
prerelease: false
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
167
|
+
version: '0'
|
168
168
|
description: A Ruby client generator for HTTP APIs described with a JSON schema
|
169
169
|
email:
|
170
170
|
- geemus@gmail.com
|
@@ -175,8 +175,10 @@ executables:
|
|
175
175
|
extensions: []
|
176
176
|
extra_rdoc_files: []
|
177
177
|
files:
|
178
|
+
- ".github/workflows/check_changelog.yml"
|
178
179
|
- ".gitignore"
|
179
180
|
- ".travis.yml"
|
181
|
+
- CHANGELOG.md
|
180
182
|
- CONTRIBUTING.md
|
181
183
|
- CONTRIBUTORS.md
|
182
184
|
- Gemfile
|
@@ -205,7 +207,7 @@ homepage: https://github.com/interagent/heroics
|
|
205
207
|
licenses:
|
206
208
|
- MIT
|
207
209
|
metadata: {}
|
208
|
-
post_install_message:
|
210
|
+
post_install_message:
|
209
211
|
rdoc_options: []
|
210
212
|
require_paths:
|
211
213
|
- lib
|
@@ -220,9 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
222
|
- !ruby/object:Gem::Version
|
221
223
|
version: '0'
|
222
224
|
requirements: []
|
223
|
-
|
224
|
-
|
225
|
-
signing_key:
|
225
|
+
rubygems_version: 3.1.4
|
226
|
+
signing_key:
|
226
227
|
specification_version: 4
|
227
228
|
summary: A Ruby client generator for HTTP APIs described with a JSON schema
|
228
229
|
test_files: []
|