Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/input/formats/openapi/openapi.go
2070 views
1
package openapi
2
3
import (
4
"io"
5
6
"github.com/getkin/kin-openapi/openapi3"
7
"github.com/pkg/errors"
8
"github.com/projectdiscovery/nuclei/v3/pkg/input/formats"
9
)
10
11
// OpenAPIFormat is a OpenAPI Schema File parser
12
type OpenAPIFormat struct {
13
opts formats.InputFormatOptions
14
}
15
16
// New creates a new OpenAPI format parser
17
func New() *OpenAPIFormat {
18
return &OpenAPIFormat{}
19
}
20
21
var _ formats.Format = &OpenAPIFormat{}
22
23
// Name returns the name of the format
24
func (j *OpenAPIFormat) Name() string {
25
return "openapi"
26
}
27
28
func (j *OpenAPIFormat) SetOptions(options formats.InputFormatOptions) {
29
j.opts = options
30
}
31
32
// Parse parses the input and calls the provided callback
33
// function for each RawRequest it discovers.
34
func (j *OpenAPIFormat) Parse(input io.Reader, resultsCb formats.ParseReqRespCallback, filePath string) error {
35
loader := openapi3.NewLoader()
36
schema, err := loader.LoadFromIoReader(input)
37
if err != nil {
38
return errors.Wrap(err, "could not decode openapi 3.0 schema")
39
}
40
return GenerateRequestsFromSchema(schema, j.opts, resultsCb)
41
}
42
43