dry_crud_jsonapi_swagger 0.1.0 → 0.1.1
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/app/controllers/dry_crud_jsonapi_swagger/apidocs_controller.rb +32 -0
- data/app/domain/{swagger → dry_crud_jsonapi_swagger}/controller_setup.rb +3 -4
- data/app/domain/{swagger → dry_crud_jsonapi_swagger}/helper.rb +3 -4
- data/app/domain/{swagger → dry_crud_jsonapi_swagger}/nested_controller_setup.rb +3 -4
- data/app/domain/{swagger → dry_crud_jsonapi_swagger}/setup.rb +5 -7
- data/app/domain/{swagger → dry_crud_jsonapi_swagger}/tags_setup.rb +2 -3
- data/config/initializers/rswag-ui.rb +1 -1
- data/config/routes.rb +5 -3
- data/lib/dry_crud_jsonapi_swagger/engine.rb +1 -0
- data/lib/dry_crud_jsonapi_swagger/version.rb +1 -1
- metadata +7 -7
- data/app/controllers/apidocs_controller.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 807ceabf80b721ba30a118e1329834c7d3bbd59b01a3cda459ff9f1988c147bb
|
4
|
+
data.tar.gz: e004fe507b0d66740bd4123e59e53cede709043dc0837397ba655ae40cbc288f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91ad6961a51fbcf661c1bc719dd9f9d7d3b69a3c3f92320cf9b31b54532261eefab8f276f674fb724be976d670995ebc6611447b20f6e97cd3fb50e18cf65fc7
|
7
|
+
data.tar.gz: 0d59851eb55a49cbe99a39f15839e5d06ac48e5b0f8cf14c5eae9bee2ef61303b981e42027bf65aef72ad3c7fd7d5acda557b5bed1f51cefc782bada597846f2
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module DryCrudJsonapiSwagger
|
2
|
+
class ApidocsController < ApplicationController
|
3
|
+
skip_before_action :authenticate, only: [:show]
|
4
|
+
skip_authorization_check
|
5
|
+
|
6
|
+
layout false
|
7
|
+
|
8
|
+
def show
|
9
|
+
respond_to do |format|
|
10
|
+
format.html
|
11
|
+
format.json { render json: generate_doc }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def generate_doc
|
18
|
+
DryCrudJsonapiSwagger::Setup.new(request.url, controller_classes).run
|
19
|
+
end
|
20
|
+
|
21
|
+
def controller_classes
|
22
|
+
Rails.application.eager_load! if Rails.env.development?
|
23
|
+
json_api_controllers
|
24
|
+
end
|
25
|
+
|
26
|
+
def json_api_controllers
|
27
|
+
ListController.descendants.select { |model| model.include?(DryCrudJsonapi) }.select do |controller|
|
28
|
+
controller.model_class rescue false
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module
|
1
|
+
module DryCrudJsonapiSwagger
|
2
2
|
class ControllerSetup
|
3
3
|
include Rails.application.routes.url_helpers
|
4
|
-
include
|
4
|
+
include Helper
|
5
5
|
attr_reader :controller_class
|
6
6
|
|
7
7
|
def initialize(controller_class)
|
@@ -32,6 +32,5 @@ module Swagger
|
|
32
32
|
def index_path
|
33
33
|
polymorphic_path(model_name.route_key) rescue nil
|
34
34
|
end
|
35
|
-
|
36
35
|
end
|
37
|
-
end
|
36
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module DryCrudJsonapiSwagger
|
2
2
|
module Helper
|
3
3
|
|
4
4
|
def setup_swagger_path(path, helper = self, &block)
|
@@ -76,7 +76,7 @@ module Swagger
|
|
76
76
|
def setup_tags(swagger_doc)
|
77
77
|
swagger_doc.key :tags, [
|
78
78
|
'All',
|
79
|
-
|
79
|
+
TagsSetup.path_tag(@path)
|
80
80
|
]
|
81
81
|
end
|
82
82
|
|
@@ -125,6 +125,5 @@ module Swagger
|
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
128
|
-
|
129
128
|
end
|
130
|
-
end
|
129
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module
|
1
|
+
module DryCrudJsonapiSwagger
|
2
2
|
class NestedControllerSetup
|
3
3
|
include Rails.application.routes.url_helpers
|
4
|
-
include
|
4
|
+
include Helper
|
5
5
|
|
6
6
|
attr_reader :controller_class, :controller_classes, :nested_class
|
7
7
|
|
@@ -48,6 +48,5 @@ module Swagger
|
|
48
48
|
|
49
49
|
nested.flatten.include? controller_class.model_class
|
50
50
|
end
|
51
|
-
|
52
51
|
end
|
53
|
-
end
|
52
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module DryCrudJsonapiSwagger
|
2
2
|
class Setup
|
3
3
|
attr_reader :request_uri, :controller_classes
|
4
4
|
|
@@ -21,7 +21,7 @@ module Swagger
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def setup_tags(swagger_doc)
|
24
|
-
|
24
|
+
TagsSetup.new(swagger_doc).run
|
25
25
|
end
|
26
26
|
|
27
27
|
private
|
@@ -93,10 +93,8 @@ module Swagger
|
|
93
93
|
|
94
94
|
def setup_controller(controller_class)
|
95
95
|
controller_class.send :include, Swagger::Blocks
|
96
|
-
|
97
|
-
|
96
|
+
ControllerSetup.new(controller_class).run
|
97
|
+
NestedControllerSetup.new(controller_classes, controller_class).run
|
98
98
|
end
|
99
|
-
|
100
99
|
end
|
101
|
-
|
102
|
-
end
|
100
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module DryCrudJsonapiSwagger
|
2
2
|
class TagsSetup
|
3
3
|
|
4
4
|
def initialize(swagger_doc = nil)
|
@@ -41,6 +41,5 @@ module Swagger
|
|
41
41
|
require 'yaml'
|
42
42
|
YAML.load_file(Rails.root.join('config', 'swagger-tags.yml')) # TODO: what is this for? fill yml with sensible values
|
43
43
|
end
|
44
|
-
|
45
44
|
end
|
46
|
-
end
|
45
|
+
end
|
@@ -6,5 +6,5 @@ Rswag::Ui.configure do |c|
|
|
6
6
|
# NOTE: If you're using rspec-api to expose Swagger files (under swagger_root) as JSON endpoints,
|
7
7
|
# then the list below should correspond to the relative paths for those endpoints
|
8
8
|
|
9
|
-
c.swagger_endpoint '
|
9
|
+
c.swagger_endpoint 'swagger.json', 'API Docs'
|
10
10
|
end
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
2
|
-
mount Rswag::Ui::Engine => '/
|
3
|
-
get 'apidocs',
|
1
|
+
DryCrudJsonapiSwagger::Engine.routes.draw do
|
2
|
+
mount Rswag::Ui::Engine => '/'
|
3
|
+
get '/swagger.json', module: 'dry_crud_jsonapi_swagger', controller: 'apidocs', action: 'show', constraints: { format: 'json' }
|
4
4
|
end
|
5
|
+
|
6
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry_crud_jsonapi_swagger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Illi
|
@@ -89,12 +89,12 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- README.md
|
91
91
|
- Rakefile
|
92
|
-
- app/controllers/apidocs_controller.rb
|
93
|
-
- app/domain/
|
94
|
-
- app/domain/
|
95
|
-
- app/domain/
|
96
|
-
- app/domain/
|
97
|
-
- app/domain/
|
92
|
+
- app/controllers/dry_crud_jsonapi_swagger/apidocs_controller.rb
|
93
|
+
- app/domain/dry_crud_jsonapi_swagger/controller_setup.rb
|
94
|
+
- app/domain/dry_crud_jsonapi_swagger/helper.rb
|
95
|
+
- app/domain/dry_crud_jsonapi_swagger/nested_controller_setup.rb
|
96
|
+
- app/domain/dry_crud_jsonapi_swagger/setup.rb
|
97
|
+
- app/domain/dry_crud_jsonapi_swagger/tags_setup.rb
|
98
98
|
- config/initializers/rswag-ui.rb
|
99
99
|
- config/routes.rb
|
100
100
|
- lib/dry_crud_jsonapi_swagger.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class ApidocsController < ApplicationController
|
2
|
-
skip_before_action :authenticate, only: [:show]
|
3
|
-
skip_authorization_check
|
4
|
-
|
5
|
-
layout false
|
6
|
-
|
7
|
-
def show
|
8
|
-
respond_to do |format|
|
9
|
-
format.html
|
10
|
-
format.json { render json: generate_doc }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def generate_doc
|
17
|
-
Swagger::Setup.new(request.url, controller_classes).run
|
18
|
-
end
|
19
|
-
|
20
|
-
def controller_classes
|
21
|
-
Rails.application.eager_load! if Rails.env.development?
|
22
|
-
json_api_controllers
|
23
|
-
end
|
24
|
-
|
25
|
-
def json_api_controllers
|
26
|
-
ListController.descendants.select { |model| model.include?(DryCrudJsonapi) }.select do |controller|
|
27
|
-
controller.model_class rescue false
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|