in api/approval.go [100:124]
func (p *PRRHandler) Parse(in io.Reader) (*PRRApproval, error) {
scanner := bufio.NewScanner(in)
var body bytes.Buffer
for scanner.Scan() {
line := scanner.Text() + "\n"
body.WriteString(line)
}
approval := &PRRApproval{}
if err := scanner.Err(); err != nil {
return approval, errors.Wrap(err, "reading file")
}
if err := yaml.UnmarshalStrict(body.Bytes(), &approval); err != nil {
p.Errors = append(p.Errors, errors.Wrap(err, "error unmarshalling YAML"))
return approval, errors.Wrap(err, "unmarshalling YAML")
}
if valErr := approval.Validate(); valErr != nil {
p.Errors = append(p.Errors, errors.Wrap(valErr, "validating PRR"))
return approval, errors.Wrap(valErr, "validating PRR")
}
return approval, nil
}