summaryrefslogtreecommitdiff
path: root/builder/builder.go
diff options
context:
space:
mode:
Diffstat (limited to 'builder/builder.go')
-rw-r--r--builder/builder.go45
1 files changed, 31 insertions, 14 deletions
diff --git a/builder/builder.go b/builder/builder.go
index 16f28ed..3f16d71 100644
--- a/builder/builder.go
+++ b/builder/builder.go
@@ -1,36 +1,53 @@
package builder
-type Info struct {
- Title string `json:"title"`
- Version string `json:"version"`
+type Builder interface {
+ AddPath(string) PathBuilder
+ Build() *Document
}
-type Paths struct {
+type PathBuilder interface {
+ Get(string, string)
}
-type Document struct {
- Version string `json:"openapi"`
- Info *Info `json:"info"`
- Paths *Paths `json:"paths"`
+type builder struct {
+ doc *Document
}
-type Builder struct {
- doc *Document
+type pathBuilder struct {
+ root string
+ builder *builder
}
-func New(title, version string) *Builder {
- return &Builder{
+func (b *pathBuilder) Get(description string, summary string) {
+ paths := b.builder.doc.Paths
+ paths[b.root] = map[string]interface{}{
+ "get": map[string]interface{}{
+ "description": description,
+ "summary": summary,
+ },
+ }
+}
+
+func New(title, version string) Builder {
+ return &builder{
doc: &Document{
Version: "3.1.0",
Info: &Info{
Title: title,
Version: version,
},
- Paths: &Paths{},
+ Paths: Paths{},
},
}
}
-func (b *Builder) Build() *Document {
+func (b *builder) AddPath(path string) PathBuilder {
+ return &pathBuilder{
+ root: path,
+ builder: b,
+ }
+}
+
+func (b *builder) Build() *Document {
return b.doc
}