apipie-rails 0.7.1 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,31 @@
1
+ ko:
2
+ apipie:
3
+ resources: 리소스
4
+ resource: 리소스
5
+ description: 설명
6
+ no_docs_found: 문서를 찾을 수 없습니다.
7
+ no_docs_found_descr: 해당 API에 대한 문서를 찾을 수 없습니다.
8
+ follow_instructions_html: 해당 컨트롤러의 설명을 %{href}를 따르세요.
9
+ follow_instructions_href: 자세한 설명
10
+ oops: 이런!!
11
+ resource_not_found_html: "%{resource} 리소스를 찾을 수 없습니다."
12
+ method_not_found_html: "%{resource} 리소스에 대한 %{method} 메소드를 찾을 수 없습니다."
13
+ goto_homepage_html: "%{href}로 시도해보세요."
14
+ goto_homepage_href: "%{app_name} API 문서 페이지"
15
+ required: 필수
16
+ optional: 옵션
17
+ nil_allowed: nil 허용
18
+ param_name: Param 이름
19
+ params: Params
20
+ examples: 예시
21
+ metadata: Metadata
22
+ errors: 에러
23
+ error_code: 코드
24
+ error_description: 설명
25
+ error_metadata: Metadata
26
+ supported_formats: 지원 포멧
27
+ enable_javascript_html: "%{comments_href}를 보기 위해서 JavaScript를 허용해주세요."
28
+ comments_powered_by_disqus: comments powered by %{disqus}
29
+ api_documentation: API 문서
30
+ headers: 헤더
31
+ header_name: 헤더 이름
@@ -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
@@ -40,8 +40,10 @@ module Apipie
40
40
  flatten_routes = []
41
41
 
42
42
  route_set.routes.each do |route|
43
- # This is a hack to workaround a bug in apipie with Rails 4.2.5.1 or newer. See https://github.com/Apipie/apipie-rails/issues/415
44
- route_app = Rails::VERSION::STRING.to_f >= 4.2 ? route.app.app : route.app
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::VERSION::MAJOR == 4 ? ActionDispatch::Reloader.cleanup! : Rails.application.reloader.reload!
461
+ Rails.application.reloader.reload!
460
462
  init_env
461
463
  reload_examples
462
- Rails::VERSION::MAJOR == 4 ? ActionDispatch::Reloader.prepare! : Rails.application.reloader.prepare!
464
+ Rails.application.reloader.prepare!
463
465
  end
464
466
  end
465
467
 
@@ -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(*, **) # action, parameters = nil, session = nil, flash = nil, http_method = 'GET')
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)
@@ -17,14 +17,8 @@ class Apipie::Railtie
17
17
  end
18
18
  app.middleware.use ::Apipie::Extractor::Recorder::Middleware
19
19
 
20
- if Gem::Version.new(Rails.version) < Gem::Version.new('5.0.0')
21
- ActionController::TestCase::Behavior.instance_eval do
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(*args)
165
- result = super(*args)
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
- swagger_def[:items] = {type: "string"}
481
- enum = param_desc.options.fetch(:in, [])
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
 
@@ -1,3 +1,3 @@
1
1
  module Apipie
2
- VERSION = "0.7.1"
2
+ VERSION = "0.8.1"
3
3
  end
@@ -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 ::Concerns::SampleController
6
+ include SampleController
7
7
 
8
8
  end
@@ -1,4 +1,3 @@
1
- module Concerns
2
1
  module ExtendingConcern
3
2
  extend Apipie::DSL::Concern
4
3
 
@@ -9,4 +8,3 @@ module Concerns
9
8
  meta metadata: 'data'
10
9
  end
11
10
  end
12
- 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 ::Concerns::SampleController
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, ::Concerns::SampleController
14
+ param_group :concern, SampleController
15
15
  def update
16
16
  super
17
17
  end
@@ -1,4 +1,3 @@
1
- module Concerns
2
1
  module SampleController
3
2
  extend Apipie::DSL::Concern
4
3
 
@@ -38,4 +37,3 @@ module Concerns
38
37
  render :plain => "OK #{params.inspect}"
39
38
  end
40
39
  end
41
- end
@@ -41,7 +41,7 @@ module Dummy
41
41
  config.filter_parameters += [:password]
42
42
 
43
43
  config.to_prepare do
44
- ExtendedController.send(:include, Concerns::ExtendingConcern)
44
+ ExtendedController.send(:include, ExtendingConcern)
45
45
  end
46
46
  end
47
47
  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.7.1
4
+ version: 0.8.1
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-04-07 00:00:00.000000000 Z
12
+ date: 2022-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -204,6 +204,7 @@ files:
204
204
  - config/locales/fr.yml
205
205
  - config/locales/it.yml
206
206
  - config/locales/ja.yml
207
+ - config/locales/ko.yml
207
208
  - config/locales/pl.yml
208
209
  - config/locales/pt-BR.yml
209
210
  - config/locales/ru.yml
@@ -215,6 +216,7 @@ files:
215
216
  - gemfiles/Gemfile.rails52
216
217
  - gemfiles/Gemfile.rails60
217
218
  - gemfiles/Gemfile.rails61
219
+ - gemfiles/Gemfile.rails70
218
220
  - images/screenshot-1.png
219
221
  - images/screenshot-2.png
220
222
  - lib/apipie-rails.rb
@@ -273,15 +275,15 @@ files:
273
275
  - spec/dummy/app/controllers/api/v2/nested/architectures_controller.rb
274
276
  - spec/dummy/app/controllers/api/v2/nested/resources_controller.rb
275
277
  - spec/dummy/app/controllers/application_controller.rb
276
- - spec/dummy/app/controllers/concerns/extending_concern.rb
277
- - spec/dummy/app/controllers/concerns/sample_controller.rb
278
278
  - spec/dummy/app/controllers/concerns_controller.rb
279
279
  - spec/dummy/app/controllers/extended_controller.rb
280
+ - spec/dummy/app/controllers/extending_concern.rb
280
281
  - spec/dummy/app/controllers/files_controller.rb
281
282
  - spec/dummy/app/controllers/overridden_concerns_controller.rb
282
283
  - spec/dummy/app/controllers/pets_controller.rb
283
284
  - spec/dummy/app/controllers/pets_using_auto_views_controller.rb
284
285
  - spec/dummy/app/controllers/pets_using_self_describing_classes_controller.rb
286
+ - spec/dummy/app/controllers/sample_controller.rb
285
287
  - spec/dummy/app/controllers/tagged_cats_controller.rb
286
288
  - spec/dummy/app/controllers/tagged_dogs_controller.rb
287
289
  - spec/dummy/app/controllers/twitter_example_controller.rb
@@ -336,7 +338,6 @@ files:
336
338
  - spec/lib/validator_spec.rb
337
339
  - spec/lib/validators/array_validator_spec.rb
338
340
  - spec/spec_helper.rb
339
- - spec/support/rails-42-ruby-26.rb
340
341
  - spec/support/rake.rb
341
342
  homepage: http://github.com/Apipie/apipie-rails
342
343
  licenses: []
@@ -356,7 +357,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
356
357
  - !ruby/object:Gem::Version
357
358
  version: '0'
358
359
  requirements: []
359
- rubygems_version: 3.1.6
360
+ rubygems_version: 3.2.33
360
361
  signing_key:
361
362
  specification_version: 4
362
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
-