diff options
Diffstat (limited to 'builder/builder.go')
| -rw-r--r-- | builder/builder.go | 45 |
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 } |
