dry_crud_jsonapi_swagger 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|