heroics 0.1.3 → 0.1.4

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: c9bad874015ec67f6cff6848e640e911dd3ed7e3721b8a0d615e41edd4024604
4
- data.tar.gz: 69f9677bf8922c1c08354f2a481759d1b7c75666edb8e846b826ae4019466cb1
3
+ metadata.gz: 7c22cae116c9a2293b7b053e5276c17dc433b35399849ce6f4717fb379259e50
4
+ data.tar.gz: b6e31b9e048d1081728ca7f0a42ba28427412804c5fada5fe6b58ca52f18adb7
5
5
  SHA512:
6
- metadata.gz: fb00a67ba4e5823b49b7d9d63648218840e87271c4ce43b8ea49d94c400bf827e5a683c42987bbcbd9bba1c5e75ae9caaeceb7bc390bc286f2a5f93b8693b73c
7
- data.tar.gz: 0e11daf37f728bbadae13f6e80ab2288ef0481fa6c2bec21b65498ff2418a2ef57d56dc2bf417aa75ce001c0bd90034ebf013adc26c2338df91cf868f471b875
6
+ metadata.gz: e5f03e286db9c6262d09707b5614b376055dbdf8921b3807d19f9ea8415310918b740bc6c77ed515cf699e07150a82313671d642b1ce4f88fbf77674364f76af
7
+ data.tar.gz: efb4ece6a80ff3a28641884117a05e07e82a485dcf7ac0ac0a4d51be43de6672caef5f4849e0d4b0ecc138212124c3ba4a33c39889b17f73da0e0b9ee81fd6ff
@@ -6,7 +6,9 @@ jobs:
6
6
  build:
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@v1
9
+ - uses: actions/checkout@v6
10
+ with:
11
+ fetch-depth: 0
10
12
  - name: Check that CHANGELOG is touched
11
13
  run: |
12
14
  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
@@ -0,0 +1,24 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+
6
+ jobs:
7
+ test:
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ ruby-version: ['3.1', '3.2', '3.3', '3.4', '4.0']
13
+
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+
17
+ - name: Set up Ruby ${{ matrix.ruby-version }}
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby-version }}
21
+ bundler-cache: true
22
+
23
+ - name: Run tests
24
+ run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- ## 0.1.3
1
+ ## HEAD (unreleased)
2
+
3
+ ## 0.1.4
4
+
5
+ - Migrate from TravisCI to GitHub Actions
6
+ - removed erubis dependency
7
+ - removed MultiJson dependency
8
+
9
+ - ## 0.1.3
2
10
 
3
11
  - Fix `base64` deprecation warning for Ruby 3.4 (https://github.com/interagent/heroics/pull/107)
4
12
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/interagent/heroics.png?branch=master)](https://travis-ci.org/interagent/heroics)
1
+ [![CI](https://github.com/interagent/heroics/actions/workflows/ci.yml/badge.svg)](https://github.com/interagent/heroics/actions/workflows/ci.yml)
2
2
  # Heroics
3
3
 
4
4
  Ruby HTTP client generator for APIs represented with JSON schema.
data/heroics.gemspec CHANGED
@@ -21,16 +21,15 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ['lib']
22
22
 
23
23
  spec.add_development_dependency 'bundler'
24
- spec.add_development_dependency 'minitest', '4.7.5'
24
+ spec.add_development_dependency 'minitest'
25
25
  spec.add_development_dependency 'netrc'
26
+ spec.add_development_dependency 'pry'
26
27
  spec.add_development_dependency 'rake'
27
28
  spec.add_development_dependency 'yard'
28
- spec.add_development_dependency 'pry'
29
29
 
30
- spec.add_dependency 'erubis', '~> 2.0'
30
+ spec.add_dependency 'base64'
31
31
  spec.add_dependency 'excon'
32
- spec.add_dependency 'multi_json', '>= 1.9.2'
32
+ spec.add_dependency 'json'
33
33
  spec.add_dependency 'moneta'
34
34
  spec.add_dependency 'webrick'
35
- spec.add_dependency 'base64'
36
35
  end
@@ -4,12 +4,12 @@ module Heroics
4
4
  # option if you want to ship a gem or generate API documentation using Yard.
5
5
  def self.generate_client
6
6
  filename = File.dirname(__FILE__) + '/views/client.erb'
7
- eruby = Erubis::Eruby.new(File.read(filename))
7
+ eruby = ERB.new(File.read(filename))
8
8
  context = build_context(Heroics::Configuration.defaults.module_name,
9
9
  Heroics::Configuration.defaults.schema,
10
10
  Heroics::Configuration.defaults.base_url,
11
11
  Heroics::Configuration.defaults.options)
12
- eruby.evaluate(context)
12
+ eruby.result_with_hash(context)
13
13
  end
14
14
 
15
15
  private
@@ -37,7 +37,7 @@ module Heroics
37
37
  default_headers: options.fetch(:default_headers, {}),
38
38
  cache: options.fetch(:cache, {}),
39
39
  description: schema.description,
40
- schema: MultiJson.dump(schema.schema, pretty:true),
40
+ schema: JSON.pretty_generate(schema.schema),
41
41
  resources: resources
42
42
  }
43
43
  end
@@ -38,7 +38,7 @@ Description:
38
38
  #{description}
39
39
  USAGE
40
40
  if example_body
41
- example_body = MultiJson.dump(example_body, pretty: true)
41
+ example_body = JSON.pretty_generate(example_body)
42
42
  example_body = example_body.lines.map do |line|
43
43
  " #{line}"
44
44
  end.join
@@ -60,7 +60,7 @@ USAGE
60
60
  result = @client.send(resource_name).send(name, *parameters)
61
61
  result = result.to_a if result.instance_of?(Enumerator)
62
62
  if result && !result.instance_of?(String)
63
- result = MultiJson.dump(result, pretty: true)
63
+ result = JSON.pretty_generate(result)
64
64
  end
65
65
  @output.puts(result) unless result.nil?
66
66
  end
@@ -40,7 +40,7 @@ module Heroics
40
40
  end
41
41
 
42
42
  def schema_filepath=(schema_filepath)
43
- @schema = Heroics::Schema.new(MultiJson.decode(open(schema_filepath).read))
43
+ @schema = Heroics::Schema.new(JSON.parse(open(schema_filepath).read))
44
44
  end
45
45
 
46
46
  def module_name=(module_name)
data/lib/heroics/link.rb CHANGED
@@ -58,7 +58,7 @@ module Heroics
58
58
  if body.is_a?(Hash)
59
59
  query = body
60
60
  else
61
- query = MultiJson.load(body)
61
+ query = JSON.parse(body)
62
62
  end
63
63
  body = nil
64
64
  end
@@ -71,7 +71,7 @@ module Heroics
71
71
  expects: [200, 201, 202, 204, 206])
72
72
  content_type = response.headers['Content-Type']
73
73
  if content_type && content_type =~ /application\/.*json/
74
- body = MultiJson.load(response.body)
74
+ body = JSON.parse(response.body)
75
75
  if response.status == 206
76
76
  next_range = response.headers['Next-Range']
77
77
  Enumerator.new do |yielder|
@@ -89,7 +89,7 @@ module Heroics
89
89
  method: @link_schema.method,
90
90
  path: path, headers: headers,
91
91
  expects: [200, 201, 206])
92
- body = MultiJson.load(response.body)
92
+ body = JSON.parse(response.body)
93
93
  next_range = response.headers['Next-Range']
94
94
  end
95
95
  end
@@ -150,7 +150,7 @@ module Heroics
150
150
  when 'application/x-www-form-urlencoded'
151
151
  URI.encode_www_form(body)
152
152
  when /application\/.*json/
153
- MultiJson.dump(body)
153
+ JSON.generate(body)
154
154
  end
155
155
  end
156
156
 
@@ -244,7 +244,7 @@ module Heroics
244
244
  [value['$ref'], key]
245
245
  end]
246
246
  parameters.map do |parameter|
247
- definition_name = ::URI::DEFAULT_PARSER.unescape(parameter[2..-3])
247
+ definition_name = ::URI::RFC2396_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::DEFAULT_PARSER.unescape(parameter[2..-3])
276
+ parameter = ::URI::RFC2396_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.
@@ -356,7 +356,7 @@ module Heroics
356
356
  def self.download_schema(url, options={})
357
357
  default_headers = options.fetch(:default_headers, {})
358
358
  response = Excon.get(url, headers: default_headers, expects: [200, 201])
359
- Schema.new(MultiJson.load(response.body))
359
+ Schema.new(JSON.parse(response.body))
360
360
  end
361
361
 
362
362
  # A representation of a parameter.
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Heroics
3
- VERSION = '0.1.3'
3
+ VERSION = '0.1.4'
4
4
  end
@@ -11,7 +11,7 @@ require 'heroics'
11
11
  require 'uri'
12
12
  require 'moneta'
13
13
 
14
- module <%= @module_name %>
14
+ module <%= module_name %>
15
15
  # Get a Client configured to use HTTP Basic or header-based authentication.
16
16
  #
17
17
  # @param api_key [String] The API key to use when connecting.
@@ -75,7 +75,7 @@ module <%= @module_name %>
75
75
  if options[:default_headers]
76
76
  final_options[:default_headers].merge!(options[:default_headers])
77
77
  end
78
- final_options[:cache] = options[:cache] || <%= @cache %>
78
+ final_options[:cache] = options[:cache] || <%= cache %>
79
79
  final_options[:url] = options[:url] if options[:url]
80
80
  final_options[:user] = options[:user] if options[:user]
81
81
  final_options
@@ -83,21 +83,21 @@ module <%= @module_name %>
83
83
 
84
84
  # Get the default options.
85
85
  def self.default_options
86
- default_headers = <%= @default_headers %>
86
+ default_headers = <%= default_headers %>
87
87
  {
88
88
  default_headers: default_headers,
89
- url: "<%= @url %>"
89
+ url: "<%= url %>"
90
90
  }
91
91
  end
92
92
 
93
93
  private_class_method :default_options, :custom_options
94
94
 
95
- # <%= @description %>
95
+ # <%= description %>
96
96
  class Client
97
97
  def initialize(client)
98
98
  @client = client
99
99
  end
100
- <% for resource in @resources %>
100
+ <% for resource in resources %>
101
101
 
102
102
  # <%= resource.description %>
103
103
  #
@@ -109,7 +109,7 @@ module <%= @module_name %>
109
109
  end
110
110
 
111
111
  private
112
- <% for resource in @resources %>
112
+ <% for resource in resources %>
113
113
 
114
114
  # <%= resource.description %>
115
115
  class <%= resource.class_name %>
@@ -132,7 +132,7 @@ module <%= @module_name %>
132
132
  end
133
133
  <% end %>
134
134
 
135
- SCHEMA = Heroics::Schema.new(MultiJson.load(<<-'HEROICS_SCHEMA'))
136
- <%= @schema %>
135
+ SCHEMA = Heroics::Schema.new(JSON.parse(<<-'HEROICS_SCHEMA'))
136
+ <%= schema %>
137
137
  HEROICS_SCHEMA
138
138
  end
data/lib/heroics.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  require 'base64'
3
- require 'erubis'
3
+ require 'erb'
4
4
  require 'excon'
5
- require 'multi_json'
5
+ require 'json'
6
6
  require 'uri'
7
7
  require 'webrick'
8
8
  require 'zlib'
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus
8
8
  - jkakar
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2024-06-21 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
@@ -29,16 +28,16 @@ dependencies:
29
28
  name: minitest
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
- - - '='
31
+ - - ">="
33
32
  - !ruby/object:Gem::Version
34
- version: 4.7.5
33
+ version: '0'
35
34
  type: :development
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
- - - '='
38
+ - - ">="
40
39
  - !ruby/object:Gem::Version
41
- version: 4.7.5
40
+ version: '0'
42
41
  - !ruby/object:Gem::Dependency
43
42
  name: netrc
44
43
  requirement: !ruby/object:Gem::Requirement
@@ -54,7 +53,7 @@ dependencies:
54
53
  - !ruby/object:Gem::Version
55
54
  version: '0'
56
55
  - !ruby/object:Gem::Dependency
57
- name: rake
56
+ name: pry
58
57
  requirement: !ruby/object:Gem::Requirement
59
58
  requirements:
60
59
  - - ">="
@@ -68,7 +67,7 @@ dependencies:
68
67
  - !ruby/object:Gem::Version
69
68
  version: '0'
70
69
  - !ruby/object:Gem::Dependency
71
- name: yard
70
+ name: rake
72
71
  requirement: !ruby/object:Gem::Requirement
73
72
  requirements:
74
73
  - - ">="
@@ -82,7 +81,7 @@ dependencies:
82
81
  - !ruby/object:Gem::Version
83
82
  version: '0'
84
83
  - !ruby/object:Gem::Dependency
85
- name: pry
84
+ name: yard
86
85
  requirement: !ruby/object:Gem::Requirement
87
86
  requirements:
88
87
  - - ">="
@@ -96,21 +95,7 @@ dependencies:
96
95
  - !ruby/object:Gem::Version
97
96
  version: '0'
98
97
  - !ruby/object:Gem::Dependency
99
- name: erubis
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '2.0'
105
- type: :runtime
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '2.0'
112
- - !ruby/object:Gem::Dependency
113
- name: excon
98
+ name: base64
114
99
  requirement: !ruby/object:Gem::Requirement
115
100
  requirements:
116
101
  - - ">="
@@ -124,21 +109,21 @@ dependencies:
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
- name: multi_json
112
+ name: excon
128
113
  requirement: !ruby/object:Gem::Requirement
129
114
  requirements:
130
115
  - - ">="
131
116
  - !ruby/object:Gem::Version
132
- version: 1.9.2
117
+ version: '0'
133
118
  type: :runtime
134
119
  prerelease: false
135
120
  version_requirements: !ruby/object:Gem::Requirement
136
121
  requirements:
137
122
  - - ">="
138
123
  - !ruby/object:Gem::Version
139
- version: 1.9.2
124
+ version: '0'
140
125
  - !ruby/object:Gem::Dependency
141
- name: moneta
126
+ name: json
142
127
  requirement: !ruby/object:Gem::Requirement
143
128
  requirements:
144
129
  - - ">="
@@ -152,7 +137,7 @@ dependencies:
152
137
  - !ruby/object:Gem::Version
153
138
  version: '0'
154
139
  - !ruby/object:Gem::Dependency
155
- name: webrick
140
+ name: moneta
156
141
  requirement: !ruby/object:Gem::Requirement
157
142
  requirements:
158
143
  - - ">="
@@ -166,7 +151,7 @@ dependencies:
166
151
  - !ruby/object:Gem::Version
167
152
  version: '0'
168
153
  - !ruby/object:Gem::Dependency
169
- name: base64
154
+ name: webrick
170
155
  requirement: !ruby/object:Gem::Requirement
171
156
  requirements:
172
157
  - - ">="
@@ -190,8 +175,8 @@ extensions: []
190
175
  extra_rdoc_files: []
191
176
  files:
192
177
  - ".github/workflows/check_changelog.yml"
178
+ - ".github/workflows/ci.yml"
193
179
  - ".gitignore"
194
- - ".travis.yml"
195
180
  - CHANGELOG.md
196
181
  - CONTRIBUTING.md
197
182
  - CONTRIBUTORS.md
@@ -221,7 +206,6 @@ homepage: https://github.com/interagent/heroics
221
206
  licenses:
222
207
  - MIT
223
208
  metadata: {}
224
- post_install_message:
225
209
  rdoc_options: []
226
210
  require_paths:
227
211
  - lib
@@ -236,8 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
220
  - !ruby/object:Gem::Version
237
221
  version: '0'
238
222
  requirements: []
239
- rubygems_version: 3.5.9
240
- signing_key:
223
+ rubygems_version: 4.0.3
241
224
  specification_version: 4
242
225
  summary: A Ruby client generator for HTTP APIs described with a JSON schema
243
226
  test_files: []
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.1.10
5
- - 2.2.6
6
- - 2.3.3