grape-starter 2.0.0 → 2.1.1

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
  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