api_schema 0.2.2.1 → 0.2.2.2
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 +4 -4
- data/lib/api_schema/api_version.rb +39 -3
- data/lib/api_schema/resource_definition.rb +13 -5
- data/lib/api_schema/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d16c885ecc2244dedb62a305988a3119768c17dc
|
4
|
+
data.tar.gz: a3c607eb9ec54baea72f10b704ab02ceb4d5e595
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 559137990458f47c04250aa5a8f125727fa075763ee84814c250b0b045c5f29ab358daeb88033c112050e781df59eba13377656b0d84fa54d80206d68a2195e7
|
7
|
+
data.tar.gz: 1fb654b77552faa11e16e85f8fc3b4cb0c728b59d4329b0e2f571cf99d669d087d3b4cfc32481b11125a5f11e51974d9f5d1def2638a718581d186f149f83349
|
@@ -14,6 +14,7 @@ module ApiSchema
|
|
14
14
|
def check_consistency
|
15
15
|
check_serializers_consistency
|
16
16
|
check_resources_consistency
|
17
|
+
check_desc_files_consistency
|
17
18
|
|
18
19
|
raise UndefinedSerializersError, error_message unless errors.empty?
|
19
20
|
end
|
@@ -35,6 +36,18 @@ module ApiSchema
|
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
39
|
+
def check_desc_files_consistency
|
40
|
+
resources.each do |resource|
|
41
|
+
add_errors(:undefined_desc_file, resource) unless find_or_import_desc_file(resource)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def find_or_import_desc_file(resource)
|
46
|
+
return true unless resource.desc_file_name
|
47
|
+
return true if find_in_version_desc_file(self, resource)
|
48
|
+
return true if find_in_another_version_desc_file(resource)
|
49
|
+
end
|
50
|
+
|
38
51
|
def find_or_import(serializer_id)
|
39
52
|
return true unless serializer_id
|
40
53
|
return true if find_in_version(self, serializer_id)
|
@@ -55,8 +68,23 @@ module ApiSchema
|
|
55
68
|
version.serializers.detect { |s| s.id == serializer_id }
|
56
69
|
end
|
57
70
|
|
71
|
+
def find_in_another_version_desc_file(resource)
|
72
|
+
imported_versions.each do |import|
|
73
|
+
version = imported_version(import)
|
74
|
+
return true if find_in_version_desc_file(version, resource)
|
75
|
+
end
|
76
|
+
|
77
|
+
false
|
78
|
+
end
|
79
|
+
|
80
|
+
def find_in_version_desc_file(version, resource)
|
81
|
+
file_path = "#{version.configuration.descriptions_path}/#{resource.desc_file_name}.md"
|
82
|
+
return resource.desc_file_path = file_path if File.file?(file_path)
|
83
|
+
end
|
84
|
+
|
58
85
|
def imported_version(import)
|
59
|
-
"#{import.name.capitalize}::#{import.api_version.capitalize}::BaseDocs"
|
86
|
+
"#{import.name.capitalize}::#{import.api_version.capitalize}::BaseDocs"
|
87
|
+
.constantize.api_version
|
60
88
|
end
|
61
89
|
|
62
90
|
def add_errors(key, object)
|
@@ -73,6 +101,8 @@ module ApiSchema
|
|
73
101
|
memo += errors.map(&self.method(:response_error))
|
74
102
|
when :undefined_reference
|
75
103
|
memo += errors.map(&self.method(:reference_error))
|
104
|
+
when :undefined_desc_file
|
105
|
+
memo += errors.map(&self.method(:desc_file_error))
|
76
106
|
end
|
77
107
|
end
|
78
108
|
|
@@ -80,15 +110,21 @@ module ApiSchema
|
|
80
110
|
end
|
81
111
|
|
82
112
|
def body_error(object)
|
83
|
-
"There is no '#{object.body_param}' body parameter defined for #{object.base_path}
|
113
|
+
"There is no '#{object.body_param}' body parameter defined for #{object.base_path}
|
114
|
+
resource. Please define it with 'request_body' method"
|
84
115
|
end
|
85
116
|
|
86
117
|
def response_error(object)
|
87
|
-
"There is no '#{object.resp.model}' response defined for '#{object.summary}'
|
118
|
+
"There is no '#{object.resp.model}' response defined for '#{object.summary}'
|
119
|
+
resource. Please define it with 'serializer' method"
|
88
120
|
end
|
89
121
|
|
90
122
|
def reference_error(object)
|
91
123
|
"Reference #{object.id} is not defined"
|
92
124
|
end
|
125
|
+
|
126
|
+
def desc_file_error(object)
|
127
|
+
"The file '#{object.desc_file_name}' cannot be found"
|
128
|
+
end
|
93
129
|
end
|
94
130
|
end
|
@@ -17,9 +17,11 @@ module ApiSchema
|
|
17
17
|
PathParam = ::Struct.new(:name, :type, :required)
|
18
18
|
QueryParam = ::Struct.new(:name, :type, :required)
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
:
|
20
|
+
attr_accessor :desc_file_path
|
21
|
+
|
22
|
+
attr_reader :method, :api_version, :summary, :description, :header_params,
|
23
|
+
:body_param, :path_params, :query_params, :resp, :errors,
|
24
|
+
:base_path, :extra_path, :full_path, :desc_file_name
|
23
25
|
|
24
26
|
def name(name)
|
25
27
|
@summary = name
|
@@ -29,8 +31,8 @@ module ApiSchema
|
|
29
31
|
@description = desc
|
30
32
|
end
|
31
33
|
|
32
|
-
def desc_file(
|
33
|
-
@
|
34
|
+
def desc_file(desc_file_name)
|
35
|
+
@desc_file_name = desc_file_name
|
34
36
|
end
|
35
37
|
|
36
38
|
def header(name, type, required: true)
|
@@ -77,6 +79,10 @@ module ApiSchema
|
|
77
79
|
@full_path << "/#{extra_path}" if extra_path
|
78
80
|
end
|
79
81
|
|
82
|
+
def build_description
|
83
|
+
@description = IO.read(desc_file_path, encoding: 'utf-8')
|
84
|
+
end
|
85
|
+
|
80
86
|
def build_neighbors(neighbors)
|
81
87
|
generate_full_path
|
82
88
|
neighbors[full_path] ||= []
|
@@ -91,6 +97,8 @@ module ApiSchema
|
|
91
97
|
'404' => "Not found",
|
92
98
|
'422' => "Unprocessable Entity"
|
93
99
|
}
|
100
|
+
|
101
|
+
build_description if desc_file_name
|
94
102
|
resource = self
|
95
103
|
swagger_path resource.full_path do
|
96
104
|
neighbors[resource.full_path].each do |r|
|
data/lib/api_schema/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.2.
|
4
|
+
version: 0.2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Chopey
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|