From 9f91f225b10358349d41491920b1c7a70994b02c Mon Sep 17 00:00:00 2001 From: Sasha Melentyev Date: Wed, 9 Feb 2022 15:46:52 +0300 Subject: [PATCH] feat(extension): add extension --- extension_test.go | 22 ++++++++++++++++++++++ extensions.go | 24 ++++++++++++++++++++++++ schema.go | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 extension_test.go create mode 100644 extensions.go diff --git a/extension_test.go b/extension_test.go new file mode 100644 index 0000000..8e7daa5 --- /dev/null +++ b/extension_test.go @@ -0,0 +1,22 @@ +package openapi_test + +import ( + "github.com/neotoolkit/openapi" + "github.com/stretchr/testify/require" + "testing" +) + +func TestGetExtensions(t *testing.T) { + s := openapi.Extensions{} + + s.Extensions = map[string]interface{}{ + "test": "test", + } + + e, err := s.GetExtensions() + if err != nil { + t.Fatal(err) + } + + require.Equal(t, "test", e["test"]) +} diff --git a/extensions.go b/extensions.go new file mode 100644 index 0000000..0d13eca --- /dev/null +++ b/extensions.go @@ -0,0 +1,24 @@ +package openapi + +import "github.com/goccy/go-yaml" + +// Extensions -. +type Extensions struct { + Extensions map[string]interface{} `json:"-" yaml:"-"` +} + +// GetExtensions -. +func (e Extensions) GetExtensions() (map[string]interface{}, error) { + bytes, err := yaml.Marshal(e.Extensions) + if err != nil { + return nil, err + } + + var extensions map[string]interface{} + + if err := yaml.Unmarshal(bytes, &extensions); err != nil { + return nil, err + } + + return extensions, nil +} diff --git a/schema.go b/schema.go index a76654d..2d9ee03 100644 --- a/schema.go +++ b/schema.go @@ -4,7 +4,7 @@ import "fmt" // Schema -. type Schema struct { - Extensions map[string]interface{} `json:"-" yaml:"-"` + Extensions Properties Schemas `json:"properties,omitempty" yaml:"properties,omitempty"` Type string `json:"type,omitempty" yaml:"type,omitempty"`