rodauth-openapi 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -15
- data/lib/generators/rodauth/openapi_generator.rb +2 -0
- data/lib/rodauth/openapi/routes.rb +19 -1
- data/lib/rodauth/openapi.rb +6 -0
- data/rodauth-openapi.gemspec +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4207f312e3af2d9d0ff8cd56091d559e53ed4ca6bc2467929560c58c6a2617ff
|
4
|
+
data.tar.gz: 29b35acd6163236b9db240a10af6aa69691ec325ceec52043c52eb6ef61c1ee3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c83451cfe842f8b736641d290daf3f0e5fdbff72b870d11133edef34923618dd18f49e1e2c574e6cb6452be51e85cd142c6aeb7761a65cc750c26e141e042c51
|
7
|
+
data.tar.gz: 519489230cb1ff5030635bbbcc26cc5bbde32d82c94d4a39a71d95b567bf6ca2e48ec5f253e34cf7e85cbd9e8e70311791fcee46599a288d2e8f8f75ad2f9971
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Rodauth OpenAPI
|
2
2
|
|
3
|
-
|
3
|
+
Generate [OpenAPI] documentation for your Rodauth endpoints.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -12,7 +12,7 @@ bundle add rodauth-openapi --group development
|
|
12
12
|
|
13
13
|
The generated OpenAPI documentation can be uploaded to renderers such as [Swagger Editor] or [Redoc].
|
14
14
|
|
15
|
-
### Rails
|
15
|
+
### In Rails
|
16
16
|
|
17
17
|
Assuming you have Rodauth installed in your Rails application, you can use the generator provided by this gem:
|
18
18
|
|
@@ -45,22 +45,15 @@ open_api = Rodauth::OpenAPI.new(auth_class)
|
|
45
45
|
File.write("openapi.yml", open_api.to_yaml)
|
46
46
|
```
|
47
47
|
|
48
|
-
|
48
|
+
Here are the various options and methods supported:
|
49
49
|
|
50
50
|
```rb
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
To assume the account doesn't have a password:
|
51
|
+
Rodauth::OpenAPI.new(auth_class, json: true) # generate JSON API endpoints
|
52
|
+
Rodauth::OpenAPI.new(auth_class, password: false) # assume account has no password
|
55
53
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
To generate the documentation in JSON format:
|
61
|
-
|
62
|
-
```rb
|
63
|
-
Roduath::OpenAPI.new(auth_class).to_json
|
54
|
+
Rodauth::OpenAPI.new(auth_class).to_yaml # YAML format
|
55
|
+
Rodauth::OpenAPI.new(auth_class).to_json # JSON format
|
56
|
+
Rodauth::OpenAPI.new(auth_class).generate # ruby hash
|
64
57
|
```
|
65
58
|
|
66
59
|
## License
|
@@ -46,6 +46,15 @@ module Rodauth
|
|
46
46
|
data[:paths][path][verb] = {
|
47
47
|
tags: [tag],
|
48
48
|
summary: summary,
|
49
|
+
description: <<~MARKDOWN,
|
50
|
+
```ruby
|
51
|
+
#{rodauth_invocation}.#{name}_route #=> "#{rodauth.send(:"#{name}_route")}"
|
52
|
+
#{rodauth_invocation}.#{name}_path #=> "#{path}"
|
53
|
+
#{rodauth_invocation}.#{name}_url #=> "https://example.com#{path}"
|
54
|
+
|
55
|
+
#{rodauth_invocation}.current_route #=> :#{name} (in the request)
|
56
|
+
```
|
57
|
+
MARKDOWN
|
49
58
|
responses: {},
|
50
59
|
parameters: [],
|
51
60
|
}
|
@@ -54,7 +63,8 @@ module Rodauth
|
|
54
63
|
end
|
55
64
|
|
56
65
|
def description(text)
|
57
|
-
data[:paths].values.last.values.last
|
66
|
+
path = data[:paths].values.last.values.last
|
67
|
+
path[:description] = [path[:description], text].compact.join("\n")
|
58
68
|
end
|
59
69
|
|
60
70
|
def param(name, description, type:, example: nil, required: false, enum: nil)
|
@@ -124,6 +134,14 @@ module Rodauth
|
|
124
134
|
def feature?(name)
|
125
135
|
rodauth.features.include?(name)
|
126
136
|
end
|
137
|
+
|
138
|
+
def rodauth_invocation
|
139
|
+
if rodauth.class.configuration_name
|
140
|
+
"rodauth(:#{rodauth.class.configuration_name})"
|
141
|
+
else
|
142
|
+
"rodauth"
|
143
|
+
end
|
144
|
+
end
|
127
145
|
end
|
128
146
|
end
|
129
147
|
end
|
data/lib/rodauth/openapi.rb
CHANGED
@@ -5,6 +5,8 @@ require "rodauth/openapi/routes"
|
|
5
5
|
|
6
6
|
module Rodauth
|
7
7
|
class OpenAPI
|
8
|
+
Error = Class.new(StandardError)
|
9
|
+
|
8
10
|
DOCS_URL = "https://rodauth.jeremyevans.net/documentation.html"
|
9
11
|
SPEC_VERSION = "3.0.1"
|
10
12
|
|
@@ -23,6 +25,10 @@ module Rodauth
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def generate
|
28
|
+
if json? && !rodauth.features.include?(:json)
|
29
|
+
fail Error, "JSON API documentation was requested, but JSON feature is not enabled"
|
30
|
+
end
|
31
|
+
|
26
32
|
data = {
|
27
33
|
openapi: SPEC_VERSION,
|
28
34
|
info: {
|
data/rodauth-openapi.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodauth-openapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janko Marohnić
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date: 2024-
|
10
|
+
date: 2024-12-29 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: rodauth
|
@@ -64,7 +63,6 @@ homepage: https://github.com/janko/rodauth-openapi
|
|
64
63
|
licenses:
|
65
64
|
- MIT
|
66
65
|
metadata: {}
|
67
|
-
post_install_message:
|
68
66
|
rdoc_options: []
|
69
67
|
require_paths:
|
70
68
|
- lib
|
@@ -79,8 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
77
|
- !ruby/object:Gem::Version
|
80
78
|
version: '0'
|
81
79
|
requirements: []
|
82
|
-
rubygems_version: 3.
|
83
|
-
signing_key:
|
80
|
+
rubygems_version: 3.6.2
|
84
81
|
specification_version: 4
|
85
82
|
summary: Allows dynamically generating OpenAPI documentation based on Rodauth configuration.
|
86
83
|
test_files: []
|