grape-starter 2.0.0 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d9f7ca7efc30bff48e6f765786b43a6cfd6d2c1c68d93063bbab89c4042bb5d
4
- data.tar.gz: 1ecd2c9a8ce6eeebd94ed79a5e08bb81328c327a361750ca6ae1aff8578281ef
3
+ metadata.gz: 88f7a549c78c1741a4c0ff18077722f2fb62d3d8b557cc6549c964de83487c2a
4
+ data.tar.gz: cdf6fa7b945c98c173b5c64d1d49423fbc004856b65951f00cc3ace640761ed6
5
5
  SHA512:
6
- metadata.gz: baa02a26a233adc4f6edd6afe687356b99d29ef59071a170cf6183fb257be59254d7c2bb2e04bcf63bd67e8978e46c6a261cbb71319340ebeedacee3a8427f22
7
- data.tar.gz: 43a5e2557d01d84bccc0cf91e5d7c52446b86572a2343d19ce2d905172b01b5c83bbf085d04d646e7cf6faf01b5466e0f47912323c32433981b693b5ff1bfad1
6
+ metadata.gz: 6a5e7ab35998625f88a216f9313ab7a155a1a2df30a8da690eb96ba75e1bc3cf26c1ed2d830a2b0761dd8c7e4554796bec064c9707de3048532502a53ae7ff20
7
+ data.tar.gz: 73569bbbd944855371b5121bf1d28c1d3dadfa848b3dddb856781785ea82a328204ef2cb97631a037ac4bf9f1ae3633513100b067b6e3103ff01472f31e287c4
data/CHANGELOG.md CHANGED
@@ -2,9 +2,17 @@
2
2
 
3
3
  - contributions
4
4
 
5
+ ### v2.1.1 / 2023-10-24
6
+
7
+ - [(#43)](https://github.com/LeFnord/grape-starter/pull/43) Fixes desc generation if now useful prop is in content [LeFnord](https://github.com/LeFnord)
8
+
9
+ ### v2.1.0 / 2023-10-21 Imports OApi specs
10
+
11
+ - [(#41)](https://github.com/LeFnord/grape-starter/pull/41) Adds generating of desc block [LeFnord](https://github.com/LeFnord)
12
+
5
13
  ### v2.0.0 / 2023-10-21 Imports OApi specs
6
14
 
7
- - [(#38)](https://github.com/LeFnord/grape-starter/pull/38) Handles nested body [LeFnord](https://github.com/LeFnord)
15
+ - [(#39)](https://github.com/LeFnord/grape-starter/pull/39) Handles nested body [LeFnord](https://github.com/LeFnord)
8
16
  - [(#38)](https://github.com/LeFnord/grape-starter/pull/38) Handle parameters from request body [LeFnord](https://github.com/LeFnord)
9
17
  - [(#37)](https://github.com/LeFnord/grape-starter/pull/37) Ignores possible version segments in path [LeFnord](https://github.com/LeFnord)
10
18
  - Sets min ruby to 3.1 [LeFnord](https://github.com/LeFnord)
data/README.md CHANGED
@@ -144,7 +144,7 @@ to create an API based on the spec.
144
144
  - [x] specify it
145
145
  - [x] handle query parameter -> check it
146
146
  - [x] handle body parameter -> check it
147
- - [ ] add description block
147
+ - [x] add description block
148
148
 
149
149
 
150
150
  ### Remove a resource
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: false
2
+
3
+ module Starter
4
+ module Importer
5
+ class Description
6
+ attr_accessor :content
7
+
8
+ def initialize(content:)
9
+ @content = content
10
+ end
11
+
12
+ def to_s # rubocop:disable Metrics/AbcSize
13
+ return if content.blank?
14
+
15
+ desc = content['summary'] || content['operationId']
16
+ entry = "desc '#{desc}'\n"
17
+
18
+ return entry unless block_keys.intersect?(content.keys)
19
+
20
+ entry.sub!("\n", " do\n")
21
+ entry << " detail '#{content['description']}'\n" if content.key?('description')
22
+ entry << " tags #{content['tags']}\n" if content.key?('tags')
23
+ entry << 'end'
24
+
25
+ entry
26
+ end
27
+
28
+ def block_keys
29
+ %w[
30
+ description
31
+ tags
32
+ ]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,4 @@
1
+ # rubocop:disable Metrics/AbcSize
1
2
  # frozen_string_literal: false
2
3
 
3
4
  module Starter
@@ -39,10 +40,13 @@ module Starter
39
40
  verbs.keys.each_with_object([]) do |verb, memo|
40
41
  next unless allowed_verbs.include?(verb)
41
42
 
43
+ memo << verbs[verb]['describe'].to_s if verbs[verb]['describe'].present?
44
+
42
45
  if (parameters = verbs[verb]['parameters'].presence)
43
46
  params_block = params_block(parameters)
44
47
  memo << params_block
45
48
  end
49
+
46
50
  memo << "#{verb} '#{segment}' do\n # your code comes here\nend\n"
47
51
  end
48
52
  end
@@ -71,3 +75,5 @@ module Starter
71
75
  end
72
76
  end
73
77
  end
78
+
79
+ # rubocop:enable Metrics/AbcSize
@@ -145,6 +145,8 @@ module Starter
145
145
  entry = definition['required'] ? 'requires' : 'optional'
146
146
  entry << " :#{name}"
147
147
  entry << ", type: #{type}"
148
+ entry << ", default: '#{definition['default']}'" if definition.key?('default') && definition['default'].present?
149
+ entry << ", values: #{definition['enum'].map(&:to_s)}" if definition.key?('enum')
148
150
  doc = documentation
149
151
  entry << ", #{doc}" if doc
150
152
 
@@ -58,7 +58,9 @@ module Starter
58
58
  memo[verb] = content
59
59
  next unless content.key?('parameters') || content.key?('requestBody') || path_params
60
60
 
61
- parameters = ((content['parameters'] || path_params || []) + [content['requestBody']]).compact
61
+ parameters = ((content.delete('parameters') || path_params || []) + [content.delete('requestBody')]).compact
62
+
63
+ memo[verb]['describe'] = Description.new(content: content.except('responses'))
62
64
 
63
65
  memo[verb]['parameters'] = parameters.each_with_object({}) do |definition, para|
64
66
  parameter = Parameter.new(definition:, components:)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Starter
4
- VERSION = '2.0.0'
4
+ VERSION = '2.1.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-starter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LeFnord
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-22 00:00:00.000000000 Z
11
+ date: 2023-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -118,6 +118,7 @@ files:
118
118
  - lib/starter/config.rb
119
119
  - lib/starter/file_ops.rb
120
120
  - lib/starter/import.rb
121
+ - lib/starter/importer/description.rb
121
122
  - lib/starter/importer/namespace.rb
122
123
  - lib/starter/importer/nested_params.rb
123
124
  - lib/starter/importer/parameter.rb
@@ -176,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
177
  - !ruby/object:Gem::Version
177
178
  version: '0'
178
179
  requirements: []
179
- rubygems_version: 3.4.17
180
+ rubygems_version: 3.4.21
180
181
  signing_key:
181
182
  specification_version: 4
182
183
  summary: Creates a Grape Rack skeleton