diff --git a/internal/handlers/validate.go b/internal/handlers/validate.go index 9bd24d6..bdd83f8 100644 --- a/internal/handlers/validate.go +++ b/internal/handlers/validate.go @@ -9,24 +9,31 @@ import ( ) type PubliccodeymlValidatorHandler struct { - parser *publiccodeParser.Parser + parser *publiccodeParser.Parser + parserExternalChecks *publiccodeParser.Parser } func NewPubliccodeymlValidatorHandler() *PubliccodeymlValidatorHandler { - parser, err := publiccodeParser.NewDefaultParser() + parser, err := publiccodeParser.NewParser(publiccodeParser.ParserConfig{DisableExternalChecks: true}) if err != nil { panic("can't create a publiccode.yml parser: " + err.Error()) } - return &PubliccodeymlValidatorHandler{parser: parser} + parserExternalChecks, err := publiccodeParser.NewDefaultParser() + if err != nil { + panic("can't create a publiccode.yml parser: " + err.Error()) + } + + return &PubliccodeymlValidatorHandler{parser: parser, parserExternalChecks: parserExternalChecks} } func (vh *PubliccodeymlValidatorHandler) Query(ctx *fiber.Ctx) error { valid := true + parser := vh.parser - // if all := ctx.QueryBool("all", false); !all { - // stmt = stmt.Scopes(models.Active) - // } + if checks := ctx.QueryBool("external-checks", false); checks { + parser = vh.parserExternalChecks + } // ct := c.Get("Content-Type") // if !strings.Contains(ct, "yaml") && ct != "application/octet-stream" { @@ -41,12 +48,11 @@ func (vh *PubliccodeymlValidatorHandler) Query(ctx *fiber.Ctx) error { }) } - reader := bytes.NewReader(ctx.Body()) - results := make(publiccodeParser.ValidationResults, 0) - // parsed, err = parser.Parse(repository.FileRawURL) - _, err := vh.parser.ParseStream(reader) + reader := bytes.NewReader(ctx.Body()) + + _, err := parser.ParseStream(reader) if err != nil { var validationResults publiccodeParser.ValidationResults if errors.As(err, &validationResults) {