jsonapi_swagger_helpers 0.4.2 → 0.4.3

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
  SHA1:
3
- metadata.gz: 3ae4cfb11abca237e55783d3638b67e6a163a9bc
4
- data.tar.gz: 5b3c47fe4d0709438891357a1dfb2fe3c41955fd
3
+ metadata.gz: 1feea97f395c500cbf8914d31a2e02a3ad0529cd
4
+ data.tar.gz: 1d5e093336798ba21f41020ef8b58c83e8fa979e
5
5
  SHA512:
6
- metadata.gz: 2ac4c4df5cccd5f90a6e24f63df634f65f5570549f991790ec628fd540be531070534623481034976ef6dc3df27a3f87d839f38f8d7378484a5950b9d8b9b08d
7
- data.tar.gz: 34a3b055667e5049143676800995a18e26a073bf9f9abd30fb86c1592f0cbf75749c67daacee9a0e214c1c6fdd558e7c53077271db7b91220e7b6a36a287dc7b
6
+ metadata.gz: 13265b4a6f5f91b060536991587c8be0878537e705230faf04cd8df381e138257d573ad8dbaf6d3fba1e9d6ce9c25448f0e243566af0c29ea3d9f09393c8d9a6
7
+ data.tar.gz: c277e20daa4b1785cfbffb826267e34c733179c4ba21a87dd120ffa24508e551d19e52d346d8a9347a119404f11d8aab0b1b8c52acffb65d72b209e627632a69
@@ -20,9 +20,13 @@ module JsonapiSwaggerHelpers
20
20
  key :in, :body
21
21
 
22
22
  schema do
23
- key :'$ref', :"#{_self.strong_resource.name}_create"
23
+ key :'$ref', _self.request_schema_id
24
24
  end
25
25
  end
26
+
27
+ response 200 do
28
+ key :description, 'API Response'
29
+ end
26
30
  end
27
31
  end
28
32
  end
@@ -8,12 +8,20 @@ module JsonapiSwaggerHelpers
8
8
 
9
9
  def generate
10
10
  _self = self
11
+ generate_response_schema!
11
12
 
12
13
  @node.operation :get do
13
14
  key :description, _self.full_description
14
15
  key :operationId, _self.operation_id
15
16
  key :tags, _self.all_tags
16
17
 
18
+ response 200 do
19
+ key :description, 'API Response'
20
+ schema do
21
+ key :'$ref', _self.response_schema_id
22
+ end
23
+ end
24
+
17
25
  _self.util.jsonapi_sorting(self)
18
26
  _self.util.jsonapi_pagination(self)
19
27
 
@@ -50,7 +50,10 @@ module JsonapiSwaggerHelpers
50
50
  property attribute do
51
51
  type = _self.class.swagger_type_for(payload.name, attribute, config[:type])
52
52
  key :type, type
53
- key :description, config[:description]
53
+
54
+ if config[:description]
55
+ key :description, config[:description]
56
+ end
54
57
  end
55
58
  end
56
59
  end
@@ -78,6 +78,23 @@ module JsonapiSwaggerHelpers
78
78
  resource.config[:type]
79
79
  end
80
80
 
81
+ def response_schema_id
82
+ "#{operation_id}_#{action_name}_response"
83
+ end
84
+
85
+ def generate_response_schema!
86
+ _self = self
87
+
88
+ payloads = util.payloads_for(resource, include_directive.to_hash)
89
+ JsonapiSwaggerHelpers.docs_controller.send(:swagger_schema, response_schema_id) do
90
+ payloads.each do |p|
91
+ property p.name do
92
+ key :'$ref', p.name
93
+ end
94
+ end
95
+ end
96
+ end
97
+
81
98
  def generate
82
99
  raise 'override me'
83
100
  end
@@ -20,7 +20,7 @@ module JsonapiSwaggerHelpers
20
20
  tags = config[:tags]
21
21
  descriptions = config[:descriptions]
22
22
  only = config[:only]
23
- except = config[:only]
23
+ except = config[:except]
24
24
 
25
25
  actions = [:index, :show, :create, :update, :destroy]
26
26
  actions.select! { |a| only.include?(a) } unless only.empty?
@@ -8,12 +8,20 @@ module JsonapiSwaggerHelpers
8
8
 
9
9
  def generate
10
10
  _self = self
11
+ generate_response_schema!
11
12
 
12
13
  @node.operation :get do
13
14
  key :description, _self.full_description
14
15
  key :operationId, _self.operation_id
15
16
  key :tags, _self.all_tags
16
17
 
18
+ response 200 do
19
+ key :description, 'API Response'
20
+ schema do
21
+ key :'$ref', _self.response_schema_id
22
+ end
23
+ end
24
+
17
25
  _self.util.id_in_url(self)
18
26
  _self.util.jsonapi_fields(self, _self.jsonapi_type)
19
27
 
@@ -22,9 +22,13 @@ module JsonapiSwaggerHelpers
22
22
  key :in, :body
23
23
 
24
24
  schema do
25
- key :'$ref', :"#{_self.strong_resource.name}_update"
25
+ key :'$ref', _self.request_schema_id
26
26
  end
27
27
  end
28
+
29
+ response 200 do
30
+ key :description, 'API Response'
31
+ end
28
32
  end
29
33
  end
30
34
  end
@@ -1,3 +1,3 @@
1
1
  module JsonapiSwaggerHelpers
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
@@ -56,21 +56,53 @@ module JsonapiSwaggerHelpers
56
56
  controller._strong_resources[action_name]
57
57
  end
58
58
 
59
+ def request_schema_id
60
+ "#{operation_id}_#{action_name}_request"
61
+ end
62
+
63
+ def generate_request_schema!
64
+ _self = self
65
+
66
+ JsonapiSwaggerHelpers.docs_controller.send(:swagger_schema, request_schema_id) do
67
+ property _self.strong_resource.name do
68
+ key :'$ref', :"#{_self.strong_resource.name}_#{_self.action_name}"
69
+ end
70
+
71
+ _self.each_strong_relation(_self.strong_resource) do |relation_name, relation_config|
72
+ property relation_name do
73
+ key :'$ref', :"#{_self.strong_resource.name}_#{relation_name}_#{_self.action_name}"
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ def each_strong_relation(strong_resource)
80
+ strong_resource.relations.each_pair do |relation_name, relation_config|
81
+ yield relation_name, relation_config
82
+
83
+ each_strong_relation(relation_config[:resource]) do |sub_relation_name, sub_relation_config|
84
+ yield sub_relation_name, sub_relation_config
85
+ end
86
+ end
87
+ end
88
+
59
89
  def define_schema
90
+ generate_request_schema!
91
+
60
92
  _self = self
61
93
  context.send(:swagger_schema, :"#{strong_resource.name}_#{action_name}") do
62
94
  _self.strong_resource.attributes.each_pair do |attribute, config|
63
95
  property attribute do
64
- key :type, config[:type] # TODO - swagger type?
96
+ key :type, config[:type]
65
97
  end
66
98
  end
67
99
  end
68
100
 
69
- _self.strong_resource.relations.each_pair do |relation_name, relation_config|
101
+ _self.each_strong_relation(_self.strong_resource) do |relation_name, relation_config|
70
102
  context.send(:swagger_schema, :"#{strong_resource.name}_#{relation_name}_#{action_name}") do
71
103
  relation_config[:resource].attributes.each_pair do |attribute, config|
72
104
  property attribute do
73
- key :type, config[:type] # TODO - swagger type?
105
+ key :type, config[:type]
74
106
  end
75
107
  end
76
108
  end
@@ -78,14 +110,7 @@ module JsonapiSwaggerHelpers
78
110
  end
79
111
 
80
112
  def generate
81
- _self = self
82
-
83
- define_schema
84
- @node.operation :post do
85
- key :description, _self.description
86
- key :operationId, _self.operation_id
87
- key :tags, _self.all_tags
88
- end
113
+ raise 'override me'
89
114
  end
90
115
  end
91
116
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi_swagger_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-21 00:00:00.000000000 Z
11
+ date: 2017-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: swagger-blocks