functions

package
v1.5.7-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2024 License: MIT Imports: 2 Imported by: 0

README

Kuma Functions

This document provides an overview of the functions available in this package. These functions are designed to extract and manipulate data from OpenAPI 2.0 files and convert data into YAML format for use in Go templates.

Table of Contents

Functions

Parser Functions
ToYaml

ToYaml converts a Go data structure into a YAML-formatted slice of strings, where each element represents a line of the resulting YAML. This function is useful for rendering data in a human-readable format for templating purposes.

Signature:

func ToYaml(data interface{}) []string

Parameters:

  • data: The data structure to be converted into YAML.

Returns:

A slice of strings containing the YAML representation of data.

Example

# input:
#    {
#         "items":  {
#             "subItems": [ "item1",   "item2",  "item3"],
#         },
#   }
data:
   {{ range toYaml . }}{{ . }}{{end}}
#output:
# data:
#   items:
#     subItems:
#         - item1
#         - item2
#         - item3

OpenAPI Functions
GetRefFrom

GetRefFrom extracts the reference identifier from an OpenAPI 2.0 object if it exists. The function expects the reference to be in the format of a JSON pointer within the OpenAPI specification.

Signature:

func GetRefFrom(object map[string]interface{}) string

Parameters:

  • object: A map representing an OpenAPI object which might contain a $ref field.

Returns:

A string containing the reference identifier or an empty string if no valid reference is found.

Example

# input:
# {
#     "schema": {
#         "$ref": "#/definitions/ApiResponse"
#     }
# }
"{{getRefFrom  .schema}}"
# output:
# "ApiResponse"

GetPathsByTag

GetPathsByTag filters OpenAPI paths by a specified tag. It returns a subset of paths that are associated with the provided tag, useful for generating documentation for specific sections of an API.

Signature:

func GetPathsByTag(paths map[string]interface{},
tag string) map[string]interface{}

Parameters:

  • paths: A map where keys are path names and values are path item objects.
  • tag: The tag used to filter paths.

Returns:

A map containing the paths that include the specified tag.

Example

# input:
# paths: {
#   "/pet/{petId}/uploadImage": {
#       "post": {
#         "tags": ["pet"],
#         "summary": "uploads an image",
#       }
#       ...
#   },
#   "/user": {
#       "post": {
#         "tags": ["user"],
#         "summary": "create a user",
#       },
#   },
#   "/user/{userId}": {
#       "put": {
#         "tags": ["user"],
#         "summary": "update user by id",
#       },
#       "get": {
#         "tags": ["user"],
#         "summary": "get user by id",
#       }
#       ...
#  }
#}
"{{ getPathsByTag .paths "user" }}"
# output:
# {
#   "/user": {
#       "post": {
#         "tags": ["user"],
#         "summary": "create a user",
#       },
#   },
#   "/user/{userId}": {
#       "put": {
#         "tags": ["user"],
#         "summary": "update user by id",
#       },
#       "get": {
#         "tags": ["user"],
#         "summary": "get user by id",
#       }
#       ...
#  }
#}

GetParamsByType

GetParamsByType filters parameters based on their in field type (e.g., query, header, path, formData). This function helps in extracting parameters of a certain type from an OpenAPI operation.

Signature:

func GetParamsByType(params []interface{},
paramType string) []interface{}

Parameters:

  • params: A slice of parameter objects.
  • paramType: The type of parameters to filter by (e.g., "query").

Returns:

A slice of parameters that match the specified type.

Example

# input:
#     {
#       "parameters": [
#             {
#                 "name": "petId",
#                 "in": "path",
#             },
#             {
#                 "name": "body",
#                 "in": "body",
#             },
#             {
#                 "name": "userId",
#                 "in": "path,
#             }
#     ],
# }
"{{ getParamsByType $data.parameters "path" }}"
# output:
# [
#     {
#         "name": "userId"
#     },
#      {
#        "name": "petId"
#      }
#  ]

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetParamsByType

func GetParamsByType(params []interface{}, paramType string) []interface{}

func GetPathsByTag

func GetPathsByTag(paths map[string]interface{}, tag string) map[string]interface{}

func GetRefFrom

func GetRefFrom(object map[string]interface{}) string

func ToYaml

func ToYaml(data interface{}) []string

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL