jdoc 0.0.8 → 0.0.9
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/CHANGELOG.md +3 -0
- data/lib/jdoc/link.rb +12 -25
- data/lib/jdoc/version.rb +1 -1
- data/spec/fixtures/schema.yml +14 -0
- data/spec/jdoc/generator_spec.rb +30 -7
- 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: 44f0091a8a36bc9270c3c13de5553c51051b1261
|
4
|
+
data.tar.gz: 69173ed695ea55d08826cefe5c43eff342b81c07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed1792568d15ba8d43ea696b417ed3d009a241d8ab4c0c194b9d6794d1bf4007712ab766167097c90f6597daa1d0a7b400b571418173bbc7ff526a8be47acc78
|
7
|
+
data.tar.gz: 71dc0edef70729432ecdfd651b2552ed057d4760f72b1c4ec84833b2cc7bde3d2d7224f70a56c4c63a5ed453e63e5295424e4b86bd072c2c3717ad77fbfa9af5
|
data/CHANGELOG.md
CHANGED
data/lib/jdoc/link.rb
CHANGED
@@ -64,7 +64,7 @@ module Jdoc
|
|
64
64
|
|
65
65
|
# @return [String, nil] Example request body in JSON format
|
66
66
|
def request_body
|
67
|
-
JSON.pretty_generate(RequestGenerator.call(schema)) + "\n"
|
67
|
+
JSON.pretty_generate(RequestGenerator.call(schema.properties)) + "\n"
|
68
68
|
end
|
69
69
|
|
70
70
|
# @return [true, false] True if this endpoint must have request body
|
@@ -98,7 +98,7 @@ module Jdoc
|
|
98
98
|
# @return [Hash]
|
99
99
|
# @raise [Rack::Spec::Mock::ExampleNotFound]
|
100
100
|
def response_hash
|
101
|
-
ResponseGenerator.call(schema)
|
101
|
+
ResponseGenerator.call(schema.properties)
|
102
102
|
end
|
103
103
|
|
104
104
|
# @return [Fixnum] Order score, used to sort links by preferred method order
|
@@ -121,39 +121,24 @@ module Jdoc
|
|
121
121
|
|
122
122
|
class RequestGenerator
|
123
123
|
# Generates example request body from given schema
|
124
|
+
# @param properties [Hash]
|
124
125
|
# @note Not includes properties that have readOnly property
|
125
126
|
# @return [Hash]
|
126
127
|
# @example
|
127
|
-
# Jdoc::Link::RequestGenerator(schema) #=> { "name" => "example", "description" => "foo bar." }
|
128
|
-
def self.call(
|
129
|
-
|
130
|
-
if value.data["readOnly"]
|
131
|
-
result
|
132
|
-
else
|
133
|
-
result.merge(
|
134
|
-
key => case
|
135
|
-
when !value.properties.empty?
|
136
|
-
call(value)
|
137
|
-
when !value.data["example"].nil?
|
138
|
-
value.data["example"]
|
139
|
-
when value.type.include?("null")
|
140
|
-
nil
|
141
|
-
else
|
142
|
-
raise ExampleNotFound, "No example found for #{schema.pointer}/#{key}"
|
143
|
-
end
|
144
|
-
)
|
145
|
-
end
|
146
|
-
end
|
128
|
+
# Jdoc::Link::RequestGenerator(schema.properties) #=> { "name" => "example", "description" => "foo bar." }
|
129
|
+
def self.call(properties)
|
130
|
+
ResponseGenerator.call(properties.reject {|key, value| value.data["readOnly"] })
|
147
131
|
end
|
148
132
|
end
|
149
133
|
|
150
134
|
class ResponseGenerator
|
151
135
|
# Generates example response Hash from given schema
|
136
|
+
# @param properties [Hash]
|
152
137
|
# @return [Hash]
|
153
138
|
# @example
|
154
|
-
# Jdoc::Link::ResponseGenerator(schema) #=> { "id" => 1, "name" => "example" }
|
155
|
-
def self.call(
|
156
|
-
|
139
|
+
# Jdoc::Link::ResponseGenerator(schema.properties) #=> { "id" => 1, "name" => "example" }
|
140
|
+
def self.call(properties)
|
141
|
+
properties.inject({}) do |result, (key, value)|
|
157
142
|
result.merge(
|
158
143
|
key => case
|
159
144
|
when !value.properties.empty?
|
@@ -162,6 +147,8 @@ module Jdoc
|
|
162
147
|
value.data["example"]
|
163
148
|
when value.type.include?("null")
|
164
149
|
nil
|
150
|
+
when value.type.include?("array")
|
151
|
+
call(value.items.properties)
|
165
152
|
else
|
166
153
|
raise ExampleNotFound, "No example found for #{schema.pointer}/#{key}"
|
167
154
|
end
|
data/lib/jdoc/version.rb
CHANGED
data/spec/fixtures/schema.yml
CHANGED
@@ -82,6 +82,20 @@ definitions:
|
|
82
82
|
"$ref": "#/definitions/app/definitions/private"
|
83
83
|
deleted_at:
|
84
84
|
"$ref": "#/definitions/app/definitions/deleted_at"
|
85
|
+
users:
|
86
|
+
type: array
|
87
|
+
items:
|
88
|
+
"$ref": "#/definitions/user"
|
89
|
+
user:
|
90
|
+
title: User
|
91
|
+
type: object
|
92
|
+
definitions:
|
93
|
+
name:
|
94
|
+
type: string
|
95
|
+
example: alice
|
96
|
+
properties:
|
97
|
+
name:
|
98
|
+
"$ref": "#/definitions/user/definitions/name"
|
85
99
|
properties:
|
86
100
|
app:
|
87
101
|
"$ref": "#/definitions/app"
|
data/spec/jdoc/generator_spec.rb
CHANGED
@@ -45,6 +45,8 @@ describe Jdoc::Generator do
|
|
45
45
|
* deleted_at - When this resource was deleted at
|
46
46
|
* Example: `nil`
|
47
47
|
* Type: null
|
48
|
+
* users -
|
49
|
+
* Type: array
|
48
50
|
|
49
51
|
### GET /apps
|
50
52
|
List existing apps.
|
@@ -63,7 +65,10 @@ describe Jdoc::Generator do
|
|
63
65
|
"id": "01234567-89ab-cdef-0123-456789abcdef",
|
64
66
|
"name": "example",
|
65
67
|
"private": false,
|
66
|
-
"deleted_at": null
|
68
|
+
"deleted_at": null,
|
69
|
+
"users": {
|
70
|
+
"name": "alice"
|
71
|
+
}
|
67
72
|
}
|
68
73
|
```
|
69
74
|
|
@@ -78,7 +83,10 @@ describe Jdoc::Generator do
|
|
78
83
|
{
|
79
84
|
"name": "example",
|
80
85
|
"private": false,
|
81
|
-
"deleted_at": null
|
86
|
+
"deleted_at": null,
|
87
|
+
"users": {
|
88
|
+
"name": "alice"
|
89
|
+
}
|
82
90
|
}
|
83
91
|
```
|
84
92
|
|
@@ -90,7 +98,10 @@ describe Jdoc::Generator do
|
|
90
98
|
"id": "01234567-89ab-cdef-0123-456789abcdef",
|
91
99
|
"name": "example",
|
92
100
|
"private": false,
|
93
|
-
"deleted_at": null
|
101
|
+
"deleted_at": null,
|
102
|
+
"users": {
|
103
|
+
"name": "alice"
|
104
|
+
}
|
94
105
|
}
|
95
106
|
```
|
96
107
|
|
@@ -111,7 +122,10 @@ describe Jdoc::Generator do
|
|
111
122
|
"id": "01234567-89ab-cdef-0123-456789abcdef",
|
112
123
|
"name": "example",
|
113
124
|
"private": false,
|
114
|
-
"deleted_at": null
|
125
|
+
"deleted_at": null,
|
126
|
+
"users": {
|
127
|
+
"name": "alice"
|
128
|
+
}
|
115
129
|
}
|
116
130
|
```
|
117
131
|
|
@@ -126,7 +140,10 @@ describe Jdoc::Generator do
|
|
126
140
|
{
|
127
141
|
"name": "example",
|
128
142
|
"private": false,
|
129
|
-
"deleted_at": null
|
143
|
+
"deleted_at": null,
|
144
|
+
"users": {
|
145
|
+
"name": "alice"
|
146
|
+
}
|
130
147
|
}
|
131
148
|
```
|
132
149
|
|
@@ -138,7 +155,10 @@ describe Jdoc::Generator do
|
|
138
155
|
"id": "01234567-89ab-cdef-0123-456789abcdef",
|
139
156
|
"name": "example",
|
140
157
|
"private": false,
|
141
|
-
"deleted_at": null
|
158
|
+
"deleted_at": null,
|
159
|
+
"users": {
|
160
|
+
"name": "alice"
|
161
|
+
}
|
142
162
|
}
|
143
163
|
```
|
144
164
|
|
@@ -159,7 +179,10 @@ describe Jdoc::Generator do
|
|
159
179
|
"id": "01234567-89ab-cdef-0123-456789abcdef",
|
160
180
|
"name": "example",
|
161
181
|
"private": false,
|
162
|
-
"deleted_at": null
|
182
|
+
"deleted_at": null,
|
183
|
+
"users": {
|
184
|
+
"name": "alice"
|
185
|
+
}
|
163
186
|
}
|
164
187
|
```
|
165
188
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubis
|