|
Packit Service |
3a6627 |
package openapi3
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
import (
|
|
Packit Service |
3a6627 |
"context"
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
"github.com/getkin/kin-openapi/jsoninfo"
|
|
Packit Service |
3a6627 |
)
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
// MediaType is specified by OpenAPI/Swagger 3.0 standard.
|
|
Packit Service |
3a6627 |
type MediaType struct {
|
|
Packit Service |
3a6627 |
ExtensionProps
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
Schema *SchemaRef `json:"schema,omitempty" yaml:"schema,omitempty"`
|
|
Packit Service |
3a6627 |
Example interface{} `json:"example,omitempty" yaml:"example,omitempty"`
|
|
Packit Service |
3a6627 |
Examples map[string]*ExampleRef `json:"examples,omitempty" yaml:"examples,omitempty"`
|
|
Packit Service |
3a6627 |
Encoding map[string]*Encoding `json:"encoding,omitempty" yaml:"encoding,omitempty"`
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func NewMediaType() *MediaType {
|
|
Packit Service |
3a6627 |
return &MediaType{}
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) WithSchema(schema *Schema) *MediaType {
|
|
Packit Service |
3a6627 |
if schema == nil {
|
|
Packit Service |
3a6627 |
mediaType.Schema = nil
|
|
Packit Service |
3a6627 |
} else {
|
|
Packit Service |
3a6627 |
mediaType.Schema = &SchemaRef{
|
|
Packit Service |
3a6627 |
Value: schema,
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
return mediaType
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) WithSchemaRef(schema *SchemaRef) *MediaType {
|
|
Packit Service |
3a6627 |
mediaType.Schema = schema
|
|
Packit Service |
3a6627 |
return mediaType
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) WithExample(name string, value interface{}) *MediaType {
|
|
Packit Service |
3a6627 |
example := mediaType.Examples
|
|
Packit Service |
3a6627 |
if example == nil {
|
|
Packit Service |
3a6627 |
example = make(map[string]*ExampleRef)
|
|
Packit Service |
3a6627 |
mediaType.Examples = example
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
example[name] = &ExampleRef{
|
|
Packit Service |
3a6627 |
Value: NewExample(value),
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
return mediaType
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) WithEncoding(name string, enc *Encoding) *MediaType {
|
|
Packit Service |
3a6627 |
encoding := mediaType.Encoding
|
|
Packit Service |
3a6627 |
if encoding == nil {
|
|
Packit Service |
3a6627 |
encoding = make(map[string]*Encoding)
|
|
Packit Service |
3a6627 |
mediaType.Encoding = encoding
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
encoding[name] = enc
|
|
Packit Service |
3a6627 |
return mediaType
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) MarshalJSON() ([]byte, error) {
|
|
Packit Service |
3a6627 |
return jsoninfo.MarshalStrictStruct(mediaType)
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) UnmarshalJSON(data []byte) error {
|
|
Packit Service |
3a6627 |
return jsoninfo.UnmarshalStrictStruct(data, mediaType)
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
|
|
Packit Service |
3a6627 |
func (mediaType *MediaType) Validate(c context.Context) error {
|
|
Packit Service |
3a6627 |
if mediaType == nil {
|
|
Packit Service |
3a6627 |
return nil
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
if schema := mediaType.Schema; schema != nil {
|
|
Packit Service |
3a6627 |
if err := schema.Validate(c); err != nil {
|
|
Packit Service |
3a6627 |
return err
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
}
|
|
Packit Service |
3a6627 |
return nil
|
|
Packit Service |
3a6627 |
}
|