jsonapi_swagger_helpers 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a3dfcaaab57c8cb5ada6eaa60ce15e1f757ce9d
4
- data.tar.gz: bff654e5ad534fe599455bcffa1897ddc3524614
3
+ metadata.gz: 120127d5171433f69fb65d417989dc398c21741b
4
+ data.tar.gz: 06017e09e6276039f7707fb0e79a7991038ebb99
5
5
  SHA512:
6
- metadata.gz: 51f6f447aafe7d3aeabbc73cefb44bc5f348e0c36d13e5ae107b3b206c3f6313ada232b669dc2993b78f530369c0396da627b63db22ee9b7e64d906fd087ccbf
7
- data.tar.gz: 91795f5a74a1e3fec13283e2d674b6925fa4c543fd501b3d29fffb1573bdd42fd8b11c9ba05ff761b060685599d1386c2ba47c48718f52ee96218a0524885864
6
+ metadata.gz: 63d037d7b0d6b6b1f9b1397503eab836e3ddce5d29e556703cabfc1cd2d2a3dc38251459af9f32635e2583b6cf362bd379c591754d37755fcf27bc4209a5ee8d
7
+ data.tar.gz: 0bb06960deed1908866deda9e5d0f543cb9ea7f1f23628b7b54fa398970d802d896bb0d9382dc675b03575599f816069795f4f64022425c8e22937f3ca45e3e8
@@ -22,8 +22,11 @@ Gem::Specification.new do |spec|
22
22
  # TODO: above 0.4.2
23
23
  spec.add_dependency 'jsonapi_spec_helpers', ['< 1']
24
24
  spec.add_dependency 'jsonapi_compliable', ['~> 0.10']
25
+ spec.add_runtime_dependency 'strong_resources', '>= 0'
25
26
 
27
+ spec.add_development_dependency "activesupport", ">= 4.1"
26
28
  spec.add_development_dependency "bundler", "~> 1.12"
29
+ spec.add_development_dependency "byebug", ">= 0"
27
30
  spec.add_development_dependency "rake", "~> 10.0"
28
31
  spec.add_development_dependency "rspec", "~> 3.0"
29
32
  end
@@ -6,7 +6,8 @@ module JsonapiSwaggerHelpers
6
6
  integer: [Integer, Bignum],
7
7
  number: [Float],
8
8
  boolean: [TrueClass, FalseClass],
9
- object: [Hash]
9
+ object: [Hash],
10
+ array: [Array]
10
11
  }
11
12
  end
12
13
  end
@@ -14,7 +14,7 @@ module JsonapiSwaggerHelpers
14
14
  key :operationId, _self.operation_id
15
15
  key :tags, _self.tags
16
16
 
17
- _self.util.id_in_url(self)
17
+ _self.util.id_in_url(self) unless _self.singular
18
18
 
19
19
  response 200 do
20
20
  key :description, 'API Response'
@@ -12,7 +12,7 @@ Could not find type mapping for payload "#{@payload_name}", key "#{@attribute}".
12
12
 
13
13
  To add a custom mapping:
14
14
 
15
- JsonapiSwaggerHelpers.config do |c|
15
+ JsonapiSwaggerHelpers.configure do |c|
16
16
  c.type_mapping[:string] << MyCustomType
17
17
  end
18
18
  STR
@@ -1,21 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JsonapiSwaggerHelpers
2
4
  module Readable
3
5
  def self.included(klass)
4
6
  klass.class_eval do
5
7
  attr_reader :node,
6
- :controller,
7
- :resource,
8
- :description,
9
- :tags
8
+ :controller,
9
+ :resource,
10
+ :description,
11
+ :tags,
12
+ :singular
10
13
  end
11
14
  end
12
15
 
13
- def initialize(node, controller, description: nil, tags: [])
16
+ def initialize(node, controller, description: nil, tags: [], singular: false)
14
17
  @node = node
15
18
  @controller = controller
16
19
  @resource = controller._jsonapi_compliable
17
20
  @description = description || default_description
18
21
  @tags = tags
22
+ @singular = singular
19
23
  end
20
24
 
21
25
  def default_description
@@ -5,13 +5,15 @@ module JsonapiSwaggerHelpers
5
5
  tags: [],
6
6
  descriptions: {},
7
7
  only: [],
8
- except: [])
8
+ except: [],
9
+ singular: false)
9
10
  self.resources << {
10
11
  base_path: base_path,
11
12
  tags: tags,
12
13
  descriptions: descriptions,
13
14
  only: only,
14
- except: except
15
+ except: except,
16
+ singular: singular
15
17
  }
16
18
  end
17
19
 
@@ -21,8 +23,9 @@ module JsonapiSwaggerHelpers
21
23
  descriptions = config[:descriptions]
22
24
  only = config[:only]
23
25
  except = config[:except]
26
+ singular = config[:singular]
24
27
 
25
- actions = [:index, :show, :create, :update, :destroy]
28
+ actions = %i[index show create update destroy]
26
29
  actions.select! { |a| only.include?(a) } unless only.empty?
27
30
  actions.reject! { |a| except.include?(a) } unless except.empty?
28
31
 
@@ -30,43 +33,19 @@ module JsonapiSwaggerHelpers
30
33
  full_path = [prefix, base_path].join('/').gsub('//', '/')
31
34
  controller = JsonapiSwaggerHelpers::Util.controller_for(full_path)
32
35
 
33
- ctx = self
34
- if [:create, :index].any? { |a| actions.include?(a) }
35
- swagger_path base_path do
36
- if actions.include?(:index) && controller.action_methods.include?('index')
37
- index_action = JsonapiSwaggerHelpers::IndexAction.new \
38
- self, controller, tags: tags, description: descriptions[:index]
39
- index_action.generate
40
- end
41
-
42
- if actions.include?(:create) && controller.action_methods.include?('create')
43
- create_action = JsonapiSwaggerHelpers::CreateAction.new \
44
- self, controller, tags: tags, description: descriptions[:create]
45
- create_action.generate
46
- end
47
- end
48
- end
49
-
50
- if [:show, :update, :destroy].any? { |a| actions.include?(a) }
51
- ctx = self
52
- swagger_path "#{base_path}/{id}" do
53
- if actions.include?(:show) && controller.action_methods.include?('show')
54
- show_action = JsonapiSwaggerHelpers::ShowAction.new \
55
- self, controller, tags: tags, description: descriptions[:show]
56
- show_action.generate
57
- end
58
-
59
- if actions.include?(:update) && controller.action_methods.include?('update')
60
- update_action = JsonapiSwaggerHelpers::UpdateAction.new \
61
- self, controller, tags: tags, description: descriptions[:update]
62
- update_action.generate
63
- end
64
-
65
- if actions.include?(:destroy) && controller.action_methods.include?('destroy')
66
- destroy_action = JsonapiSwaggerHelpers::DestroyAction.new \
67
- self, controller, tags: tags, description: descriptions[:destroy]
68
- destroy_action.generate
69
- end
36
+ actions.each do |action|
37
+ next unless controller.action_methods.include?(action.to_s)
38
+ path = if !singular && %i[show update destroy].include?(action)
39
+ "#{base_path}/{id}"
40
+ else
41
+ base_path
42
+ end
43
+ swagger_path path do
44
+ action_class_name = "#{action.to_s.camelize}Action"
45
+ action_class = JsonapiSwaggerHelpers.const_get(action_class_name)
46
+ action_object = action_class.new \
47
+ self, controller, tags: tags, description: descriptions[action], singular: singular
48
+ action_object.generate
70
49
  end
71
50
  end
72
51
  end
@@ -22,7 +22,7 @@ module JsonapiSwaggerHelpers
22
22
  end
23
23
  end
24
24
 
25
- _self.util.id_in_url(self)
25
+ _self.util.id_in_url(self) unless _self.singular
26
26
  _self.util.jsonapi_fields(self, _self.jsonapi_type)
27
27
 
28
28
  if _self.has_extra_fields?
@@ -15,7 +15,7 @@ module JsonapiSwaggerHelpers
15
15
  key :operationId, _self.operation_id
16
16
  key :tags, _self.all_tags
17
17
 
18
- _self.util.id_in_url(self)
18
+ _self.util.id_in_url(self) unless _self.singular
19
19
 
20
20
  parameter do
21
21
  key :name, :payload
@@ -7,7 +7,7 @@ module JsonapiSwaggerHelpers
7
7
  if route
8
8
  "#{route[:controller]}_controller".classify.constantize
9
9
  else
10
- Rails.logger.error("JsonapiSwaggerHelpers: No controller found for #{path}!") unless route
10
+ raise ArgumentError.new("JsonapiSwaggerHelpers: No controller found for #{path}!")
11
11
  end
12
12
  end
13
13
 
@@ -1,3 +1,3 @@
1
1
  module JsonapiSwaggerHelpers
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.4"
3
3
  end
@@ -1,21 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JsonapiSwaggerHelpers
2
4
  module Writeable
3
5
  def self.included(klass)
4
6
  klass.class_eval do
5
7
  attr_reader :node,
6
- :controller,
7
- :resource,
8
- :description,
9
- :tags
8
+ :controller,
9
+ :resource,
10
+ :description,
11
+ :tags,
12
+ :singular
10
13
  end
11
14
  end
12
15
 
13
- def initialize(node, controller, description: nil, tags: [])
16
+ def initialize(node, controller, description: nil, tags: [], singular: false)
14
17
  @node = node
15
18
  @controller = controller
16
19
  @resource = controller._jsonapi_compliable
17
20
  @description = description || default_description
18
21
  @tags = tags
22
+ @singular = singular
19
23
  end
20
24
 
21
25
  def util
@@ -41,7 +45,7 @@ module JsonapiSwaggerHelpers
41
45
  def payload_tags
42
46
  tags = [:"payload-#{strong_resource.name}_#{action_name}"]
43
47
 
44
- strong_resource.relations.each_pair do |relation_name, relation_config|
48
+ strong_resource.relations.each_pair do |relation_name, _relation_config|
45
49
  tags << :"payload-#{strong_resource.name}_#{relation_name}_#{action_name}"
46
50
  end
47
51
 
@@ -68,7 +72,7 @@ module JsonapiSwaggerHelpers
68
72
  key :'$ref', :"#{_self.strong_resource.name}_#{_self.action_name}"
69
73
  end
70
74
 
71
- _self.each_strong_relation(_self.strong_resource) do |relation_name, relation_config|
75
+ _self.each_strong_relation(_self.strong_resource) do |relation_name, _relation_config|
72
76
  property relation_name do
73
77
  key :'$ref', :"#{_self.strong_resource.name}_#{relation_name}_#{_self.action_name}"
74
78
  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.6.3
4
+ version: 0.6.4
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-10-16 00:00:00.000000000 Z
11
+ date: 2018-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: swagger-blocks
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: strong_resources
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '4.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '4.1'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: bundler
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +94,20 @@ dependencies:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
96
  version: '1.12'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: rake
71
113
  requirement: !ruby/object:Gem::Requirement
@@ -148,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
190
  version: '0'
149
191
  requirements: []
150
192
  rubyforge_project:
151
- rubygems_version: 2.6.11
193
+ rubygems_version: 2.6.12
152
194
  signing_key:
153
195
  specification_version: 4
154
196
  summary: Swagger helpers for jsonapi.org-compatible APIs