12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- package goai
- import (
- "github.com/gogf/gf/v2/errors/gerror"
- "github.com/gogf/gf/v2/internal/json"
- "github.com/gogf/gf/v2/util/gconv"
- )
- // Operation represents "operation" specified by OpenAPI/Swagger 3.0 standard.
- type Operation struct {
- Tags []string `json:"tags,omitempty"`
- Summary string `json:"summary,omitempty"`
- Description string `json:"description,omitempty"`
- OperationID string `json:"operationId,omitempty"`
- Parameters Parameters `json:"parameters,omitempty"`
- RequestBody *RequestBodyRef `json:"requestBody,omitempty"`
- Responses Responses `json:"responses"`
- Deprecated bool `json:"deprecated,omitempty"`
- Callbacks *Callbacks `json:"callbacks,omitempty"`
- Security *SecurityRequirements `json:"security,omitempty"`
- Servers *Servers `json:"servers,omitempty"`
- ExternalDocs *ExternalDocs `json:"externalDocs,omitempty"`
- XExtensions XExtensions `json:"-"`
- }
- func (oai *OpenApiV3) tagMapToOperation(tagMap map[string]string, operation *Operation) error {
- var mergedTagMap = oai.fileMapWithShortTags(tagMap)
- if err := gconv.Struct(mergedTagMap, operation); err != nil {
- return gerror.Wrap(err, `mapping struct tags to Operation failed`)
- }
- oai.tagMapToXExtensions(mergedTagMap, operation.XExtensions)
- return nil
- }
- func (o Operation) MarshalJSON() ([]byte, error) {
- var (
- b []byte
- m map[string]json.RawMessage
- err error
- )
- type tempOperation Operation // To prevent JSON marshal recursion error.
- if b, err = json.Marshal(tempOperation(o)); err != nil {
- return nil, err
- }
- if err = json.Unmarshal(b, &m); err != nil {
- return nil, err
- }
- for k, v := range o.XExtensions {
- if b, err = json.Marshal(v); err != nil {
- return nil, err
- }
- m[k] = b
- }
- return json.Marshal(m)
- }
|