apipie-rails 0.7.2 → 0.8.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/.github/workflows/build.yml +3 -0
- data/CHANGELOG.md +11 -0
- data/README.rst +5 -0
- data/app/controllers/apipie/apipies_controller.rb +1 -1
- data/gemfiles/Gemfile.rails70 +17 -0
- data/lib/apipie/application.rb +6 -4
- data/lib/apipie/configuration.rb +2 -1
- data/lib/apipie/dsl_definition.rb +1 -1
- data/lib/apipie/extractor/recorder.rb +1 -1
- data/lib/apipie/extractor.rb +2 -8
- data/lib/apipie/rspec/response_validation_helper.rb +2 -2
- data/lib/apipie/swagger_generator.rb +10 -2
- data/lib/apipie/version.rb +1 -1
- data/spec/dummy/app/controllers/concerns_controller.rb +1 -1
- data/spec/dummy/app/controllers/{concerns/extending_concern.rb → extending_concern.rb} +0 -2
- data/spec/dummy/app/controllers/overridden_concerns_controller.rb +2 -2
- data/spec/dummy/app/controllers/{concerns/sample_controller.rb → sample_controller.rb} +0 -2
- data/spec/dummy/config/application.rb +1 -1
- data/spec/spec_helper.rb +0 -32
- metadata +6 -6
- data/spec/support/rails-42-ruby-26.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 231e8e86bd335aa018fcd0a8bf07730dd452968bde2a9491374979ec368f2a06
|
4
|
+
data.tar.gz: 39075cddca5f3ba6ef9c412e267d10f934ea37d08696d67f5069c16eb93fd41d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c01816a4e5e254e620889e950f19bd7983b7b80d32ab8028656b2cb016cff58cd42299397f0c03b7c7e439d555c7fde6f7e1cacbbfcc9ae6115e8549c0469f80
|
7
|
+
data.tar.gz: a5d25cc68efc019d7624cf51c681fc5a7b7376615959c5f30c3858fb29e13aeccc03f113ac763b3615b0317ff29c1117ad3d003a93d26e9ca69af5e77f05a51e
|
data/.github/workflows/build.yml
CHANGED
@@ -26,6 +26,7 @@ jobs:
|
|
26
26
|
- Gemfile.rails52 # Min ruby 2.2.2
|
27
27
|
- Gemfile.rails60 # Min ruby 2.5.0
|
28
28
|
- Gemfile.rails61 # Min ruby 2.5.0
|
29
|
+
- Gemfile.rails70 # Min ruby 2.7.0
|
29
30
|
exclude:
|
30
31
|
- gemfile: Gemfile.rails50
|
31
32
|
ruby: 2.7
|
@@ -45,6 +46,8 @@ jobs:
|
|
45
46
|
ruby: '3.0'
|
46
47
|
- gemfile: Gemfile.rails52
|
47
48
|
ruby: 3.1
|
49
|
+
- gemfile: Gemfile.rails70
|
50
|
+
ruby: 2.6
|
48
51
|
|
49
52
|
env:
|
50
53
|
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
Changelog
|
2
2
|
===========
|
3
3
|
|
4
|
+
Also deleted the `Gemfile` that was now a broken symlink.
|
5
|
+
please use `export BUNDLE_GEMFILE='gemfiles/Gemfile.rails61'; bundle exec rspec` to run the test suite
|
6
|
+
|
7
|
+
## [v0.8.0](https://github.com/Apipie/apipie-rails/tree/v0.8.0) (2022-05-24)
|
8
|
+
[Full Changelog](https://github.com/Apipie/apipie-rails/compare/v0.7.2...v0.8.0)
|
9
|
+
* Add support for scheme definition in Swagger docs. [#710](https://github.com/Apipie/apipie-rails/pull/710) (Dan Leyden)
|
10
|
+
* Add support for Rails 7 [#760](https://github.com/Apipie/apipie-rails/pull/760) (Mathieu Jobin)
|
11
|
+
* Clean up code base, removing all trace of unsupported Rails 4.x [#752](https://github.com/Apipie/apipie-rails/pull/752) (Mathieu Jobin)
|
12
|
+
* fix: Controller resource set before version [#744](https://github.com/Apipie/apipie-rails/pull/744) (LuukvH)
|
13
|
+
* fix: enable swagger generator to add referenced schema for an array of hashes param [#689](https://github.com/Apipie/apipie-rails/pull/689) (Francis San Juan)
|
14
|
+
|
4
15
|
## [v0.7.2](https://github.com/Apipie/apipie-rails/tree/v0.7.2) (2022-04-19)
|
5
16
|
[Full Changelog](https://github.com/Apipie/apipie-rails/compare/v0.7.1...v0.7.2)
|
6
17
|
* Added Korean locale. [#480](https://github.com/Apipie/apipie-rails/pull/480) (Jaehyun Shin ) [#757](https://github.com/Apipie/apipie-rails/pull/757) (Jorge Santos)
|
data/README.rst
CHANGED
@@ -1660,6 +1660,11 @@ There are several configuration parameters that determine the structure of the g
|
|
1660
1660
|
|
1661
1661
|
If ``true``: the ``additional-properties: false`` field will not be included in response object descriptions
|
1662
1662
|
|
1663
|
+
``config.swagger_schemes``
|
1664
|
+
An array of transport schemes that the API supports.
|
1665
|
+
This can include any combination of ``http``, ``https``, ``ws`` and ``wss``.
|
1666
|
+
By default to encourage good security practices, ``['https']`` is specified.
|
1667
|
+
|
1663
1668
|
|
1664
1669
|
``config:swagger_security_definitions``
|
1665
1670
|
If the API requires authentication, you can specify details of the authentication mechanisms supported as a (Hash) value here.
|
@@ -34,7 +34,7 @@ module Apipie
|
|
34
34
|
|
35
35
|
@language = get_language
|
36
36
|
|
37
|
-
Apipie.load_documentation if Apipie.configuration.reload_controllers? ||
|
37
|
+
Apipie.load_documentation if Apipie.configuration.reload_controllers? || !Rails.application.config.eager_load
|
38
38
|
|
39
39
|
I18n.locale = @language
|
40
40
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
gemspec path: '..'
|
4
|
+
|
5
|
+
gem 'actionpack', '~> 7.0.2'
|
6
|
+
gem 'activesupport', '~> 7.0.2'
|
7
|
+
gem 'mime-types', '~> 3.0'
|
8
|
+
gem 'rails-controller-testing'
|
9
|
+
gem 'rspec-rails', '~> 5.0'
|
10
|
+
|
11
|
+
# net-smtp not included by default in Ruby 3.1
|
12
|
+
# Will be fixed by https://github.com/mikel/mail/pull/1439
|
13
|
+
if Gem.ruby_version >= Gem::Version.new("3.1.0")
|
14
|
+
gem 'net-smtp', require: false
|
15
|
+
end
|
16
|
+
|
17
|
+
gem 'test_engine', path: '../spec/dummy/components/test_engine', group: :test
|
data/lib/apipie/application.rb
CHANGED
@@ -40,8 +40,10 @@ module Apipie
|
|
40
40
|
flatten_routes = []
|
41
41
|
|
42
42
|
route_set.routes.each do |route|
|
43
|
-
#
|
44
|
-
|
43
|
+
# route is_a ActionDispatch::Journey::Route
|
44
|
+
# route.app is_a ActionDispatch::Routing::Mapper::Constraints
|
45
|
+
# route.app.app is_a TestEngine::Engine
|
46
|
+
route_app = route.app.app
|
45
47
|
if route_app.respond_to?(:routes) && route_app.routes.is_a?(ActionDispatch::Routing::RouteSet)
|
46
48
|
# recursively go though the mounted engines
|
47
49
|
flatten_routes.concat(rails_routes(route_app.routes, File.join(base_url, route.path.spec.to_s)))
|
@@ -456,10 +458,10 @@ module Apipie
|
|
456
458
|
# as this would break loading of the controllers.
|
457
459
|
def rails_mark_classes_for_reload
|
458
460
|
unless Rails.application.config.cache_classes
|
459
|
-
Rails
|
461
|
+
Rails.application.reloader.reload!
|
460
462
|
init_env
|
461
463
|
reload_examples
|
462
|
-
Rails
|
464
|
+
Rails.application.reloader.prepare!
|
463
465
|
end
|
464
466
|
end
|
465
467
|
|
data/lib/apipie/configuration.rb
CHANGED
@@ -12,7 +12,7 @@ module Apipie
|
|
12
12
|
:swagger_include_warning_tags, :swagger_content_type_input, :swagger_json_input_uses_refs,
|
13
13
|
:swagger_suppress_warnings, :swagger_api_host, :swagger_generate_x_computed_id_field,
|
14
14
|
:swagger_allow_additional_properties_in_response, :swagger_responses_use_refs,
|
15
|
-
:swagger_security_definitions, :swagger_global_security
|
15
|
+
:swagger_schemes, :swagger_security_definitions, :swagger_global_security
|
16
16
|
|
17
17
|
alias_method :validate?, :validate
|
18
18
|
alias_method :required_by_default?, :required_by_default
|
@@ -184,6 +184,7 @@ module Apipie
|
|
184
184
|
@swagger_generate_x_computed_id_field = false
|
185
185
|
@swagger_allow_additional_properties_in_response = false
|
186
186
|
@swagger_responses_use_refs = true
|
187
|
+
@swagger_schemes = [:https]
|
187
188
|
@swagger_security_definitions = {}
|
188
189
|
@swagger_global_security = []
|
189
190
|
end
|
@@ -149,10 +149,10 @@ module Apipie
|
|
149
149
|
|
150
150
|
dsl_data = ResourceDescriptionDsl.eval_dsl(self, &block)
|
151
151
|
versions = dsl_data[:api_versions]
|
152
|
+
Apipie.set_controller_versions(self, versions)
|
152
153
|
@apipie_resource_descriptions = versions.map do |version|
|
153
154
|
Apipie.define_resource_description(self, version, dsl_data)
|
154
155
|
end
|
155
|
-
Apipie.set_controller_versions(self, versions)
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
@@ -150,7 +150,7 @@ module Apipie
|
|
150
150
|
end
|
151
151
|
|
152
152
|
module FunctionalTestRecording
|
153
|
-
def process(
|
153
|
+
def process(*, **) # action, parameters = nil, session = nil, flash = nil, http_method = 'GET')
|
154
154
|
ret = super
|
155
155
|
if Apipie.configuration.record
|
156
156
|
Apipie::Extractor.call_recorder.analyze_functional_test(self)
|
data/lib/apipie/extractor.rb
CHANGED
@@ -17,14 +17,8 @@ class Apipie::Railtie
|
|
17
17
|
end
|
18
18
|
app.middleware.use ::Apipie::Extractor::Recorder::Middleware
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
prepend Apipie::Extractor::Recorder::FunctionalTestRecording
|
23
|
-
end
|
24
|
-
else
|
25
|
-
ActionController::TestCase.send(:prepend, Apipie::Extractor::Recorder::FunctionalTestRecording)
|
26
|
-
ActionController::TestCase::Behavior.send(:prepend, Apipie::Extractor::Recorder::FunctionalTestRecording)
|
27
|
-
end
|
20
|
+
ActionController::TestCase.send(:prepend, Apipie::Extractor::Recorder::FunctionalTestRecording)
|
21
|
+
ActionController::TestCase::Behavior.send(:prepend, Apipie::Extractor::Recorder::FunctionalTestRecording)
|
28
22
|
end
|
29
23
|
end
|
30
24
|
|
@@ -161,8 +161,8 @@ ActionController::TestCase::Behavior.instance_eval do
|
|
161
161
|
# instrument the 'process' method in ActionController::TestCase to enable response validation
|
162
162
|
module Apipie::ResponseValidationHelpers
|
163
163
|
@is_response_validation_on = false
|
164
|
-
def process(
|
165
|
-
result = super
|
164
|
+
def process(*, **)
|
165
|
+
result = super
|
166
166
|
validate_response if @is_response_validation_on
|
167
167
|
|
168
168
|
result
|
@@ -73,6 +73,7 @@ module Apipie
|
|
73
73
|
consumes: [],
|
74
74
|
paths: {},
|
75
75
|
definitions: {},
|
76
|
+
schemes: Apipie.configuration.swagger_schemes,
|
76
77
|
tags: [],
|
77
78
|
securityDefinitions: Apipie.configuration.swagger_security_definitions,
|
78
79
|
security: Apipie.configuration.swagger_global_security
|
@@ -477,9 +478,16 @@ module Apipie
|
|
477
478
|
end
|
478
479
|
|
479
480
|
if swagger_def[:type] == "array"
|
480
|
-
|
481
|
-
|
481
|
+
array_of_validator_opts = param_desc.validator.param_description.options
|
482
|
+
items_type = array_of_validator_opts[:of].to_s || array_of_validator_opts[:array_of].to_s
|
483
|
+
if items_type == "Hash"
|
484
|
+
ref_name = "#{swagger_op_id_for_path(param_desc.method_description.apis.first.http_method, param_desc.method_description.apis.first.path)}_param_#{param_desc.name}"
|
485
|
+
swagger_def[:items] = {"$ref" => gen_referenced_block_from_params_array(ref_name, param_desc.validator.param_description.validator.params_ordered, allow_nulls)}
|
486
|
+
else
|
487
|
+
swagger_def[:items] = {type: "string"}
|
488
|
+
end
|
482
489
|
|
490
|
+
enum = param_desc.options.fetch(:in, [])
|
483
491
|
swagger_def[:items][:enum] = enum if enum.any?
|
484
492
|
end
|
485
493
|
|
data/lib/apipie/version.rb
CHANGED
@@ -3,6 +3,6 @@ class ConcernsController < ApplicationController
|
|
3
3
|
resource_description { resource_id 'concern_resources' }
|
4
4
|
|
5
5
|
apipie_concern_subst(:concern => 'user', :custom_subst => 'custom', 'string_subst' => 'string')
|
6
|
-
include
|
6
|
+
include SampleController
|
7
7
|
|
8
8
|
end
|
@@ -3,7 +3,7 @@ class OverriddenConcernsController < ApplicationController
|
|
3
3
|
resource_description { resource_id 'overridden_concern_resources' }
|
4
4
|
|
5
5
|
apipie_concern_subst(:concern => 'user')
|
6
|
-
include
|
6
|
+
include SampleController
|
7
7
|
|
8
8
|
def_param_group :concern do
|
9
9
|
param :concern, String
|
@@ -11,7 +11,7 @@ class OverriddenConcernsController < ApplicationController
|
|
11
11
|
|
12
12
|
api :PUT, '/:resource_id/:id'
|
13
13
|
param :custom_parameter, String, "New parameter added by the overriding method"
|
14
|
-
param_group :concern,
|
14
|
+
param_group :concern, SampleController
|
15
15
|
def update
|
16
16
|
super
|
17
17
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,37 +10,6 @@ require 'rspec/rails'
|
|
10
10
|
require 'apipie-rails'
|
11
11
|
require 'test_engine'
|
12
12
|
|
13
|
-
module Rails4Compatibility
|
14
|
-
module Testing
|
15
|
-
def process(*args)
|
16
|
-
compatible_request(*args) do |*new_args|
|
17
|
-
if Gem.ruby_version < Gem::Version.new('3.0.0')
|
18
|
-
super(*new_args)
|
19
|
-
else
|
20
|
-
super(new_args[0], **new_args[1])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def compatible_request(method, action, hash = {})
|
26
|
-
if hash.is_a?(Hash)
|
27
|
-
if Gem::Version.new(Rails.version) < Gem::Version.new('5.0.0')
|
28
|
-
hash = hash.dup
|
29
|
-
hash.merge!(hash.delete(:params) || {})
|
30
|
-
elsif hash.key?(:params)
|
31
|
-
hash = { :params => hash }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
if hash.empty?
|
35
|
-
yield method, action
|
36
|
-
else
|
37
|
-
yield method, action, hash
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
13
|
#
|
45
14
|
# Matcher to validate the properties (name, type and options) of a single field in the
|
46
15
|
# internal representation of a swagger schema
|
@@ -114,4 +83,3 @@ RSpec.configure do |config|
|
|
114
83
|
end
|
115
84
|
|
116
85
|
require 'action_controller/test_case.rb'
|
117
|
-
ActionController::TestCase::Behavior.send(:prepend, Rails4Compatibility::Testing)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apipie-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Pokorny
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-05-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -216,6 +216,7 @@ files:
|
|
216
216
|
- gemfiles/Gemfile.rails52
|
217
217
|
- gemfiles/Gemfile.rails60
|
218
218
|
- gemfiles/Gemfile.rails61
|
219
|
+
- gemfiles/Gemfile.rails70
|
219
220
|
- images/screenshot-1.png
|
220
221
|
- images/screenshot-2.png
|
221
222
|
- lib/apipie-rails.rb
|
@@ -274,15 +275,15 @@ files:
|
|
274
275
|
- spec/dummy/app/controllers/api/v2/nested/architectures_controller.rb
|
275
276
|
- spec/dummy/app/controllers/api/v2/nested/resources_controller.rb
|
276
277
|
- spec/dummy/app/controllers/application_controller.rb
|
277
|
-
- spec/dummy/app/controllers/concerns/extending_concern.rb
|
278
|
-
- spec/dummy/app/controllers/concerns/sample_controller.rb
|
279
278
|
- spec/dummy/app/controllers/concerns_controller.rb
|
280
279
|
- spec/dummy/app/controllers/extended_controller.rb
|
280
|
+
- spec/dummy/app/controllers/extending_concern.rb
|
281
281
|
- spec/dummy/app/controllers/files_controller.rb
|
282
282
|
- spec/dummy/app/controllers/overridden_concerns_controller.rb
|
283
283
|
- spec/dummy/app/controllers/pets_controller.rb
|
284
284
|
- spec/dummy/app/controllers/pets_using_auto_views_controller.rb
|
285
285
|
- spec/dummy/app/controllers/pets_using_self_describing_classes_controller.rb
|
286
|
+
- spec/dummy/app/controllers/sample_controller.rb
|
286
287
|
- spec/dummy/app/controllers/tagged_cats_controller.rb
|
287
288
|
- spec/dummy/app/controllers/tagged_dogs_controller.rb
|
288
289
|
- spec/dummy/app/controllers/twitter_example_controller.rb
|
@@ -337,7 +338,6 @@ files:
|
|
337
338
|
- spec/lib/validator_spec.rb
|
338
339
|
- spec/lib/validators/array_validator_spec.rb
|
339
340
|
- spec/spec_helper.rb
|
340
|
-
- spec/support/rails-42-ruby-26.rb
|
341
341
|
- spec/support/rake.rb
|
342
342
|
homepage: http://github.com/Apipie/apipie-rails
|
343
343
|
licenses: []
|
@@ -357,7 +357,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
357
357
|
- !ruby/object:Gem::Version
|
358
358
|
version: '0'
|
359
359
|
requirements: []
|
360
|
-
rubygems_version: 3.
|
360
|
+
rubygems_version: 3.2.33
|
361
361
|
signing_key:
|
362
362
|
specification_version: 4
|
363
363
|
summary: Rails REST API documentation tool
|
@@ -1,15 +0,0 @@
|
|
1
|
-
if RUBY_VERSION >= '2.6.0'
|
2
|
-
if Rails.version < '5'
|
3
|
-
# rubocop:disable Style/CommentAnnotation
|
4
|
-
class ActionController::TestResponse < ActionDispatch::TestResponse
|
5
|
-
def recycle!
|
6
|
-
# hack to avoid MonitorMixin double-initialize error:
|
7
|
-
@mon_mutex_owner_object_id = nil
|
8
|
-
@mon_mutex = nil
|
9
|
-
initialize
|
10
|
-
end
|
11
|
-
end
|
12
|
-
# rubocop:enable Style/CommentAnnotation
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|