Path: blob/dev/pkg/input/formats/openapi/openapi.go
2070 views
package openapi12import (3"io"45"github.com/getkin/kin-openapi/openapi3"6"github.com/pkg/errors"7"github.com/projectdiscovery/nuclei/v3/pkg/input/formats"8)910// OpenAPIFormat is a OpenAPI Schema File parser11type OpenAPIFormat struct {12opts formats.InputFormatOptions13}1415// New creates a new OpenAPI format parser16func New() *OpenAPIFormat {17return &OpenAPIFormat{}18}1920var _ formats.Format = &OpenAPIFormat{}2122// Name returns the name of the format23func (j *OpenAPIFormat) Name() string {24return "openapi"25}2627func (j *OpenAPIFormat) SetOptions(options formats.InputFormatOptions) {28j.opts = options29}3031// Parse parses the input and calls the provided callback32// function for each RawRequest it discovers.33func (j *OpenAPIFormat) Parse(input io.Reader, resultsCb formats.ParseReqRespCallback, filePath string) error {34loader := openapi3.NewLoader()35schema, err := loader.LoadFromIoReader(input)36if err != nil {37return errors.Wrap(err, "could not decode openapi 3.0 schema")38}39return GenerateRequestsFromSchema(schema, j.opts, resultsCb)40}414243