tomograph 3.1.6 → 3.2.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: cf837362b1191fb628f661c8f76b07cfe9f6ad01429ea5776c2e5fec112cb04e
4
- data.tar.gz: 1c55956f499f426013c3967502ef36bd2a470decfc8876b199ee6110cd309c94
3
+ metadata.gz: 1f29c94fa150fe7b0d9ade928be94afa3cd6262f879f1aeac26b9bc2e697d01e
4
+ data.tar.gz: e5115cc71c0ed6b8a07c694ec03c1f5a2563d9f29b9ff91154415371a535c780
5
5
  SHA512:
6
- metadata.gz: 025de3dda002e9ec09ab6dca442c31bf730703bb40ae1eb8b737cea8424af842b100e543d009340a1bbe0326058e310cb91b28ff93a3e4a228af38ef0bcd94e9
7
- data.tar.gz: dab2742c947fb7b8502c4e31b89033d61e8e0e94cd2c8993c6b8c2bbdeb5508aee733e5200a813ad1b3fa9f48427673b27d3c248bd07c070b88a4aecd82448b6
6
+ metadata.gz: '089cc903373489b2e38c87455227392af29b077979ae857b7fb8d4f5a55f68f81e3ceb3e0841bf614629bc77ab97ef6490113b6c21af9f679932b3e189180edc'
7
+ data.tar.gz: 0e86b8f7961229f973bf3bf5c20e8c224c45d8c29502e10fecc3136bc902f5260aa76bed6d66e4ab6063aab8690536e6f3c9a89c25a7c0a4f6a1690f7b456a8a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Change log
2
2
 
3
+ ### 3.2.1 - 2024-04-03
4
+
5
+ * patch
6
+ * change home page
7
+
8
+ ### 3.2.0 - 2024-01-13
9
+
10
+ * features
11
+ * support multiple content types for response with one code for OpenAPI 3.0
12
+ * bug fixes
13
+ * allow responses with empty bodies for OpenAPI 3.0
14
+ * refactoring
15
+ * small renamings for easier reading for OpenAPI 3.0
16
+ * do not pass around documentation schemas object for OpenAPI 3.0
17
+
3
18
  ### 3.1.6 - 2023-10-06
4
19
 
5
20
  * patch
@@ -9,46 +9,55 @@ module Tomograph
9
9
  end
10
10
 
11
11
  def to_tomogram
12
- @tomogram ||= @documentation['paths'].each_with_object([]) do |action, result|
13
- action[1].keys.each do |method|
12
+ @tomogram ||= @documentation['paths'].each_with_object([]) do |(path, action_definition), result|
13
+ action_definition.keys.each do |method|
14
14
  result.push(Tomograph::Tomogram::Action.new(
15
- path: "#{@prefix}#{action[0]}",
15
+ path: "#{@prefix}#{path}",
16
16
  method: method.upcase,
17
17
  content_type: '',
18
18
  requests: [],
19
- responses: responses(action[1][method]['responses'], @documentation['components']['schemas']),
19
+ responses: responses(action_definition[method]['responses']),
20
20
  resource: ''
21
21
  ))
22
22
  end
23
23
  end
24
24
  end
25
25
 
26
- def responses(resp, defi)
27
- resp.inject([]) do |result, response|
28
- if response[1]['content'].nil?
29
- # TODO: 403Forbidden
30
- result.push(
31
- 'status' => response[0],
32
- 'body' => {},
33
- 'content-type' => 'application/json'
34
- )
35
- elsif response[1]['content'].values[0]['schema']
26
+ def responses(responses_definitions)
27
+ result = []
28
+ responses_definitions.each do |(response_code, response)|
29
+ # response can be either Response Object or Reference Object
30
+ if response.key?('$ref')
31
+ response_description_path = response['$ref'].split('/')[1..] # first one is a '#'
32
+ response['content'] = @documentation.dig(*response_description_path)['content']
33
+ end
34
+
35
+ # Content can be nil if response body is not provided
36
+ if response['content'].nil?
36
37
  result.push(
37
- 'status' => response[0],
38
- 'body' => schema(response[1]['content'].values[0]['schema'], defi),
39
- 'content-type' => 'application/json'
38
+ 'status' => response_code,
39
+ 'body'=> {},
40
+ 'content-type' => ''
40
41
  )
41
42
  else
42
- result.push(
43
- status: response[0],
44
- body: {},
45
- 'content-type': ''
46
- )
43
+ result += responses_by_content_types(response['content'], response_code)
47
44
  end
48
45
  end
46
+ result
47
+ end
48
+
49
+ def responses_by_content_types(content_types, response_code)
50
+ content_types.map do |content_type, media_type_obj|
51
+ {
52
+ 'status' => response_code,
53
+ 'body' => schema(media_type_obj['schema']),
54
+ 'content-type' => content_type
55
+ }
56
+ end
49
57
  end
50
58
 
51
- def schema(sche, defi)
59
+ def schema(sche)
60
+ defi = @documentation['components']['schemas']
52
61
  if sche.keys.include?('$ref')
53
62
  sche.merge!('components' => {})
54
63
  sche['components'].merge!('schemas' => {})
@@ -1,3 +1,3 @@
1
1
  module Tomograph
2
- VERSION = '3.1.6'.freeze
2
+ VERSION = '3.2.1'.freeze
3
3
  end
data/tomograph.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  spec.summary = 'Convert API Blueprint, Swagger and OpenAPI to Tomogram'
12
12
  spec.description = 'Convert API Blueprint, Swagger and OpenAPI to routes and JSON-Schemas'
13
- spec.homepage = 'https://github.com/matchtechnologies/tomograph'
13
+ spec.homepage = 'https://github.com/tuwilof/tomograph'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tomograph
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.6
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - d.efimov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-06 00:00:00.000000000 Z
11
+ date: 2024-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: methadone
@@ -180,7 +180,7 @@ files:
180
180
  - lib/tomograph/version.rb
181
181
  - script/update_json_fixtures
182
182
  - tomograph.gemspec
183
- homepage: https://github.com/matchtechnologies/tomograph
183
+ homepage: https://github.com/tuwilof/tomograph
184
184
  licenses:
185
185
  - MIT
186
186
  metadata: {}