in crlVerification/main.go [40:115]
func (i *Input) UnmarshalJSON(data []byte) error {
intermediate := make(map[string]interface{})
err := json.Unmarshal(data, &intermediate)
if err != nil {
i.errs = append(i.errs, err)
return nil
}
if c, ok := intermediate["crl"]; ok {
switch t := c.(type) {
case []interface{}:
for _, crlInterface := range t {
switch crl := crlInterface.(type) {
case string:
i.Crls = append(i.Crls, crl)
default:
i.errs = append(i.errs, errors.New(fmt.Sprintf(`unexpected type for "crl", got %T from value "%v"`, crl, crl)))
}
}
case string:
// The old interface was built for
// only one CRL, so let's honor that just in case
i.Crls = append(i.Crls, t)
case nil:
// The old interface allowed for a null entry
// so let's leave that in place by leaving the array empty.
default:
i.errs = append(i.errs, errors.New(fmt.Sprintf(`unexpected type for "crl", got %T from value "%v"`, t, t)))
}
}
if s, ok := intermediate["serial"]; ok {
switch t := s.(type) {
case string:
serial, err := utils.BigIntFromHexString(t)
if err != nil {
i.errs = append(i.errs, err)
} else {
i.Serial = serial
}
default:
i.errs = append(i.errs, errors.New(fmt.Sprintf(`unexpected type for "serial", got %T from value "%v"`, t, t)))
}
} else {
i.errs = append(i.errs, errors.New(`"serial" is a required field`))
}
if d, ok := intermediate["revocationDate"]; ok {
switch t := d.(type) {
case string:
date, err := utils.TimeFromString(t)
if err != nil {
i.errs = append(i.errs, err)
} else {
i.Date = date
}
default:
i.errs = append(i.errs, errors.New(fmt.Sprintf(`unexpected type for "revocationData", got %T from value "%v"`, t, t)))
}
} else {
i.errs = append(i.errs, errors.New(`"revocationDate" is a required field`))
}
if r, ok := intermediate["revocationReason"]; ok {
switch t := r.(type) {
case string:
reason, err := utils.FromString(&t)
if err != nil {
i.errs = append(i.errs, err)
} else {
i.Reason = reason
}
default:
i.errs = append(i.errs, errors.New(fmt.Sprintf(`unexpected type for "revocationReason", got %T from value "%v"`, t, t)))
}
} else {
i.Reason = utils.NOT_GIVEN
}
return nil
}