heroics 0.1.2 → 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: 935d4099ef19b7d1edd7f04bd8545d0f2a9d0a3dea2433005148854654a9efb9
4
- data.tar.gz: afb94092e02a8ee403c4e2b2b7b0326c59f310376ce1175db13a18f185a56bdc
3
+ metadata.gz: 7c22cae116c9a2293b7b053e5276c17dc433b35399849ce6f4717fb379259e50
4
+ data.tar.gz: b6e31b9e048d1081728ca7f0a42ba28427412804c5fada5fe6b58ca52f18adb7
5
5
  SHA512:
6
- metadata.gz: aa084cff8f5819cc23375f0764c878a44113bd094d1b47997438b2fa8e89e24f56e5ac1fa5dab9341fae077cc329e3d1fac4a5ec26a74e859bfeec50e2951a6b
7
- data.tar.gz: 7417de326cf4f11b9f7dc73df4d4397fcfde7f130a34ed4b287226d1c0a536fee1e2f013a15ddb4c596453fc49167d6a218d630ac54059890ad0411e7d32412d
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,3 +1,15 @@
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
10
+
11
+ - Fix `base64` deprecation warning for Ruby 3.4 (https://github.com/interagent/heroics/pull/107)
12
+
1
13
  ## 0.1.2
2
14
 
3
15
  - Add support for Ruby 3.0 (https://github.com/interagent/heroics/pull/101)
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,15 +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
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.2'
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.2
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: 2021-01-27 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,19 +95,19 @@ dependencies:
96
95
  - !ruby/object:Gem::Version
97
96
  version: '0'
98
97
  - !ruby/object:Gem::Dependency
99
- name: erubis
98
+ name: base64
100
99
  requirement: !ruby/object:Gem::Requirement
101
100
  requirements:
102
- - - "~>"
101
+ - - ">="
103
102
  - !ruby/object:Gem::Version
104
- version: '2.0'
103
+ version: '0'
105
104
  type: :runtime
106
105
  prerelease: false
107
106
  version_requirements: !ruby/object:Gem::Requirement
108
107
  requirements:
109
- - - "~>"
108
+ - - ">="
110
109
  - !ruby/object:Gem::Version
111
- version: '2.0'
110
+ version: '0'
112
111
  - !ruby/object:Gem::Dependency
113
112
  name: excon
114
113
  requirement: !ruby/object:Gem::Requirement
@@ -124,19 +123,19 @@ dependencies:
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
127
- name: multi_json
126
+ name: json
128
127
  requirement: !ruby/object:Gem::Requirement
129
128
  requirements:
130
129
  - - ">="
131
130
  - !ruby/object:Gem::Version
132
- version: 1.9.2
131
+ version: '0'
133
132
  type: :runtime
134
133
  prerelease: false
135
134
  version_requirements: !ruby/object:Gem::Requirement
136
135
  requirements:
137
136
  - - ">="
138
137
  - !ruby/object:Gem::Version
139
- version: 1.9.2
138
+ version: '0'
140
139
  - !ruby/object:Gem::Dependency
141
140
  name: moneta
142
141
  requirement: !ruby/object:Gem::Requirement
@@ -176,8 +175,8 @@ extensions: []
176
175
  extra_rdoc_files: []
177
176
  files:
178
177
  - ".github/workflows/check_changelog.yml"
178
+ - ".github/workflows/ci.yml"
179
179
  - ".gitignore"
180
- - ".travis.yml"
181
180
  - CHANGELOG.md
182
181
  - CONTRIBUTING.md
183
182
  - CONTRIBUTORS.md
@@ -207,7 +206,6 @@ homepage: https://github.com/interagent/heroics
207
206
  licenses:
208
207
  - MIT
209
208
  metadata: {}
210
- post_install_message:
211
209
  rdoc_options: []
212
210
  require_paths:
213
211
  - lib
@@ -222,8 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
220
  - !ruby/object:Gem::Version
223
221
  version: '0'
224
222
  requirements: []
225
- rubygems_version: 3.1.4
226
- signing_key:
223
+ rubygems_version: 4.0.3
227
224
  specification_version: 4
228
225
  summary: A Ruby client generator for HTTP APIs described with a JSON schema
229
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