示例#1
0
文件: contexts.go 项目: cw2018/goa
// UnmarshalRateBottlePayload unmarshals and validates a raw interface{} into an instance of RateBottlePayload
func UnmarshalRateBottlePayload(source interface{}, inErr error) (target *RateBottlePayload, err error) {
	err = inErr
	if val, ok := source.(map[string]interface{}); ok {
		target = new(RateBottlePayload)
		if v, ok := val["rating"]; ok {
			var tmp12 int
			if f, ok := v.(float64); ok {
				tmp12 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Rating`, v, "int", err)
			}
			if err == nil {
				if tmp12 < 1 {
					err = goa.InvalidRangeError(`payload.Rating`, tmp12, 1, true, err)
				}
				if tmp12 > 5 {
					err = goa.InvalidRangeError(`payload.Rating`, tmp12, 5, false, err)
				}
			}
			target.Rating = tmp12
		} else {
			err = goa.MissingAttributeError(`payload`, "rating", err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, source, "dictionary", err)
	}
	return
}
示例#2
0
// NewCreateSeriesPayload instantiates a CreateSeriesPayload from a raw request body.
// It validates each field and returns an error if any validation fails.
func NewCreateSeriesPayload(raw interface{}) (*CreateSeriesPayload, error) {
	var err error
	var p *CreateSeriesPayload
	if val, ok := raw.(map[string]interface{}); ok {
		p = new(CreateSeriesPayload)
		if v, ok := val["name"]; ok {
			var tmp3 string
			if val, ok := v.(string); ok {
				tmp3 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Name`, v, "string", err)
			}
			if err == nil {
				if len(tmp3) < 2 {
					err = goa.InvalidLengthError(`payload.Name`, tmp3, 2, true, err)
				}
			}
			p.Name = tmp3
		} else {
			err = goa.MissingAttributeError(`payload`, "name", err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, raw, "map[string]interface{}", err)
	}
	return p, err
}
示例#3
0
文件: contexts.go 项目: harboe/goa
// NewRateBottlePayload instantiates a RateBottlePayload from a raw request body.
// It validates each field and returns an error if any validation fails.
func NewRateBottlePayload(raw interface{}) (*RateBottlePayload, error) {
	var err error
	var p *RateBottlePayload
	if val, ok := raw.(map[string]interface{}); ok {
		p = new(RateBottlePayload)
		if v, ok := val["rating"]; ok {
			var tmp12 int
			if f, ok := v.(float64); ok {
				tmp12 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Rating`, v, "int", err)
			}
			if err == nil {
				if tmp12 < 1 {
					err = goa.InvalidRangeError(`payload.Rating`, tmp12, 1, true, err)
				}
				if tmp12 > 5 {
					err = goa.InvalidRangeError(`payload.Rating`, tmp12, 5, false, err)
				}
			}
			p.Rating = tmp12
		} else {
			err = goa.MissingAttributeError(`payload`, "rating", err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, raw, "map[string]interface{}", err)
	}
	return p, err
}
示例#4
0
// NewCreateUserPayload instantiates a CreateUserPayload from a raw request body.
// It validates each field and returns an error if any validation fails.
func NewCreateUserPayload(raw interface{}) (*CreateUserPayload, error) {
	var err error
	var p *CreateUserPayload
	if val, ok := raw.(map[string]interface{}); ok {
		p = new(CreateUserPayload)
		if v, ok := val["email"]; ok {
			var tmp5 string
			if val, ok := v.(string); ok {
				tmp5 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Email`, v, "string", err)
			}
			if err == nil {
				if len(tmp5) < 2 {
					err = goa.InvalidLengthError(`payload.Email`, tmp5, 2, true, err)
				}
			}
			p.Email = tmp5
		}
		if v, ok := val["first_name"]; ok {
			var tmp6 string
			if val, ok := v.(string); ok {
				tmp6 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.FirstName`, v, "string", err)
			}
			if err == nil {
				if len(tmp6) < 2 {
					err = goa.InvalidLengthError(`payload.FirstName`, tmp6, 2, true, err)
				}
			}
			p.FirstName = tmp6
		} else {
			err = goa.MissingAttributeError(`payload`, "first_name", err)
		}
		if v, ok := val["last_name"]; ok {
			var tmp7 string
			if val, ok := v.(string); ok {
				tmp7 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.LastName`, v, "string", err)
			}
			if err == nil {
				if len(tmp7) < 2 {
					err = goa.InvalidLengthError(`payload.LastName`, tmp7, 2, true, err)
				}
			}
			p.LastName = tmp7
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, raw, "map[string]interface{}", err)
	}
	return p, err
}
示例#5
0
// NewUpdateUserPayload instantiates a UpdateUserPayload from a raw request body.
// It validates each field and returns an error if any validation fails.
func NewUpdateUserPayload(raw interface{}) (*UpdateUserPayload, error) {
	var err error
	var p *UpdateUserPayload
	if val, ok := raw.(map[string]interface{}); ok {
		p = new(UpdateUserPayload)
		if v, ok := val["email"]; ok {
			var tmp8 string
			if val, ok := v.(string); ok {
				tmp8 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Email`, v, "string", err)
			}
			if err == nil {
				if len(tmp8) < 2 {
					err = goa.InvalidLengthError(`payload.Email`, tmp8, 2, true, err)
				}
			}
			p.Email = tmp8
		}
		if v, ok := val["first_name"]; ok {
			var tmp9 string
			if val, ok := v.(string); ok {
				tmp9 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.FirstName`, v, "string", err)
			}
			if err == nil {
				if len(tmp9) < 2 {
					err = goa.InvalidLengthError(`payload.FirstName`, tmp9, 2, true, err)
				}
			}
			p.FirstName = tmp9
		}
		if v, ok := val["last_name"]; ok {
			var tmp10 string
			if val, ok := v.(string); ok {
				tmp10 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.LastName`, v, "string", err)
			}
			if err == nil {
				if len(tmp10) < 2 {
					err = goa.InvalidLengthError(`payload.LastName`, tmp10, 2, true, err)
				}
			}
			p.LastName = tmp10
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, raw, "map[string]interface{}", err)
	}
	return p, err
}
示例#6
0
文件: contexts.go 项目: cw2018/goa
// UnmarshalCreateAccountPayload unmarshals and validates a raw interface{} into an instance of CreateAccountPayload
func UnmarshalCreateAccountPayload(source interface{}, inErr error) (target *CreateAccountPayload, err error) {
	err = inErr
	if val, ok := source.(map[string]interface{}); ok {
		target = new(CreateAccountPayload)
		if v, ok := val["name"]; ok {
			var tmp1 string
			if val, ok := v.(string); ok {
				tmp1 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Name`, v, "string", err)
			}
			target.Name = tmp1
		} else {
			err = goa.MissingAttributeError(`payload`, "name", err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, source, "dictionary", err)
	}
	return
}
示例#7
0
文件: contexts.go 项目: harboe/goa
// NewCreateAccountPayload instantiates a CreateAccountPayload from a raw request body.
// It validates each field and returns an error if any validation fails.
func NewCreateAccountPayload(raw interface{}) (*CreateAccountPayload, error) {
	var err error
	var p *CreateAccountPayload
	if val, ok := raw.(map[string]interface{}); ok {
		p = new(CreateAccountPayload)
		if v, ok := val["name"]; ok {
			var tmp1 string
			if val, ok := v.(string); ok {
				tmp1 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Name`, v, "string", err)
			}
			p.Name = tmp1
		} else {
			err = goa.MissingAttributeError(`payload`, "name", err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, raw, "map[string]interface{}", err)
	}
	return p, err
}
示例#8
0
文件: media_types.go 项目: tylerb/goa
// UnmarshalBottleCollection unmarshals and validates a raw interface{} into an instance of BottleCollection
func UnmarshalBottleCollection(source interface{}, inErr error) (target BottleCollection, err error) {
	err = inErr
	if val, ok := source.([]interface{}); ok {
		target = make([]*Bottle, len(val))
		for tmp51, v := range val {
			target[tmp51], err = UnmarshalBottle(v, err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`load`, source, "array", err)
	}
	return
}
示例#9
0
文件: media_types.go 项目: harboe/goa
// LoadBottle loads raw data into an instance of Bottle running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadBottle(raw interface{}) (*Bottle, error) {
	var err error
	var res *Bottle
	if val, ok := raw.(map[string]interface{}); ok {
		res = new(Bottle)
		if v, ok := val["account"]; ok {
			var tmp29 *Account
			if val, ok := v.(map[string]interface{}); ok {
				tmp29 = new(Account)
				if v, ok := val["created_at"]; ok {
					var tmp30 string
					if val, ok := v.(string); ok {
						tmp30 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.CreatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp30 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp30); err2 != nil {
								err = goa.InvalidFormatError(`.Account.CreatedAt`, tmp30, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp29.CreatedAt = tmp30
				}
				if v, ok := val["created_by"]; ok {
					var tmp31 string
					if val, ok := v.(string); ok {
						tmp31 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.CreatedBy`, v, "string", err)
					}
					if err == nil {
						if tmp31 != "" {
							if err2 := goa.ValidateFormat(goa.FormatEmail, tmp31); err2 != nil {
								err = goa.InvalidFormatError(`.Account.CreatedBy`, tmp31, goa.FormatEmail, err2, err)
							}
						}
					}
					tmp29.CreatedBy = tmp31
				}
				if v, ok := val["href"]; ok {
					var tmp32 string
					if val, ok := v.(string); ok {
						tmp32 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.Href`, v, "string", err)
					}
					tmp29.Href = tmp32
				}
				if v, ok := val["id"]; ok {
					var tmp33 int
					if f, ok := v.(float64); ok {
						tmp33 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.ID`, v, "int", err)
					}
					tmp29.ID = tmp33
				}
				if v, ok := val["name"]; ok {
					var tmp34 string
					if val, ok := v.(string); ok {
						tmp34 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.Name`, v, "string", err)
					}
					tmp29.Name = tmp34
				}
			} else {
				err = goa.InvalidAttributeTypeError(`.Account`, v, "map[string]interface{}", err)
			}
			res.Account = tmp29
		}
		if v, ok := val["color"]; ok {
			var tmp35 string
			if val, ok := v.(string); ok {
				tmp35 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Color`, v, "string", err)
			}
			if err == nil {
				if tmp35 != "" {
					if !(tmp35 == "red" || tmp35 == "white" || tmp35 == "rose" || tmp35 == "yellow" || tmp35 == "sparkling") {
						err = goa.InvalidEnumValueError(`.Color`, tmp35, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err)
					}
				}
			}
			res.Color = tmp35
		}
		if v, ok := val["country"]; ok {
			var tmp36 string
			if val, ok := v.(string); ok {
				tmp36 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Country`, v, "string", err)
			}
			if err == nil {
				if len(tmp36) < 2 {
					err = goa.InvalidLengthError(`.Country`, tmp36, 2, true, err)
				}
			}
			res.Country = tmp36
		}
		if v, ok := val["created_at"]; ok {
			var tmp37 string
			if val, ok := v.(string); ok {
				tmp37 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.CreatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp37 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp37); err2 != nil {
						err = goa.InvalidFormatError(`.CreatedAt`, tmp37, goa.FormatDateTime, err2, err)
					}
				}
			}
			res.CreatedAt = tmp37
		}
		if v, ok := val["href"]; ok {
			var tmp38 string
			if val, ok := v.(string); ok {
				tmp38 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Href`, v, "string", err)
			}
			res.Href = tmp38
		}
		if v, ok := val["id"]; ok {
			var tmp39 int
			if f, ok := v.(float64); ok {
				tmp39 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.ID`, v, "int", err)
			}
			res.ID = tmp39
		}
		if v, ok := val["name"]; ok {
			var tmp40 string
			if val, ok := v.(string); ok {
				tmp40 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Name`, v, "string", err)
			}
			if err == nil {
				if len(tmp40) < 2 {
					err = goa.InvalidLengthError(`.Name`, tmp40, 2, true, err)
				}
			}
			res.Name = tmp40
		}
		if v, ok := val["rating"]; ok {
			var tmp41 int
			if f, ok := v.(float64); ok {
				tmp41 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.Rating`, v, "int", err)
			}
			if err == nil {
				if tmp41 < 1 {
					err = goa.InvalidRangeError(`.Rating`, tmp41, 1, true, err)
				}
				if tmp41 > 5 {
					err = goa.InvalidRangeError(`.Rating`, tmp41, 5, false, err)
				}
			}
			res.Rating = tmp41
		}
		if v, ok := val["region"]; ok {
			var tmp42 string
			if val, ok := v.(string); ok {
				tmp42 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Region`, v, "string", err)
			}
			res.Region = tmp42
		}
		if v, ok := val["review"]; ok {
			var tmp43 string
			if val, ok := v.(string); ok {
				tmp43 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Review`, v, "string", err)
			}
			if err == nil {
				if len(tmp43) < 10 {
					err = goa.InvalidLengthError(`.Review`, tmp43, 10, true, err)
				}
				if len(tmp43) > 300 {
					err = goa.InvalidLengthError(`.Review`, tmp43, 300, false, err)
				}
			}
			res.Review = tmp43
		}
		if v, ok := val["sweetness"]; ok {
			var tmp44 int
			if f, ok := v.(float64); ok {
				tmp44 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.Sweetness`, v, "int", err)
			}
			if err == nil {
				if tmp44 < 1 {
					err = goa.InvalidRangeError(`.Sweetness`, tmp44, 1, true, err)
				}
				if tmp44 > 5 {
					err = goa.InvalidRangeError(`.Sweetness`, tmp44, 5, false, err)
				}
			}
			res.Sweetness = tmp44
		}
		if v, ok := val["updated_at"]; ok {
			var tmp45 string
			if val, ok := v.(string); ok {
				tmp45 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.UpdatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp45 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp45); err2 != nil {
						err = goa.InvalidFormatError(`.UpdatedAt`, tmp45, goa.FormatDateTime, err2, err)
					}
				}
			}
			res.UpdatedAt = tmp45
		}
		if v, ok := val["varietal"]; ok {
			var tmp46 string
			if val, ok := v.(string); ok {
				tmp46 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Varietal`, v, "string", err)
			}
			if err == nil {
				if len(tmp46) < 4 {
					err = goa.InvalidLengthError(`.Varietal`, tmp46, 4, true, err)
				}
			}
			res.Varietal = tmp46
		}
		if v, ok := val["vineyard"]; ok {
			var tmp47 string
			if val, ok := v.(string); ok {
				tmp47 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Vineyard`, v, "string", err)
			}
			if err == nil {
				if len(tmp47) < 2 {
					err = goa.InvalidLengthError(`.Vineyard`, tmp47, 2, true, err)
				}
			}
			res.Vineyard = tmp47
		}
		if v, ok := val["vintage"]; ok {
			var tmp48 int
			if f, ok := v.(float64); ok {
				tmp48 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.Vintage`, v, "int", err)
			}
			if err == nil {
				if tmp48 < 1900 {
					err = goa.InvalidRangeError(`.Vintage`, tmp48, 1900, true, err)
				}
				if tmp48 > 2020 {
					err = goa.InvalidRangeError(`.Vintage`, tmp48, 2020, false, err)
				}
			}
			res.Vintage = tmp48
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "map[string]interface{}", err)
	}
	return res, err
}
示例#10
0
文件: error_test.go 项目: harboe/goa
		})
	})
})

var _ = Describe("InvalidAttributeTypeError", func() {
	var valErr, err error
	ctx := "ctx"
	val := 42
	expected := "43"

	BeforeEach(func() {
		err = nil
	})

	JustBeforeEach(func() {
		valErr = goa.InvalidAttributeTypeError(ctx, val, expected, err)
	})

	It("creates a multi error", func() {
		Ω(valErr).ShouldNot(BeNil())
		Ω(valErr).Should(BeAssignableToTypeOf(goa.MultiError{}))
		mErr := valErr.(goa.MultiError)
		Ω(mErr).Should(HaveLen(1))
		Ω(mErr[0]).Should(BeAssignableToTypeOf(&goa.TypedError{}))
		tErr := mErr[0].(*goa.TypedError)
		Ω(tErr.ID).Should(Equal(goa.ErrorID((goa.ErrInvalidAttributeType))))
		Ω(tErr.Mesg).Should(ContainSubstring(ctx))
		Ω(tErr.Mesg).Should(ContainSubstring("%d", val))
		Ω(tErr.Mesg).Should(ContainSubstring(expected))
	})
示例#11
0
// LoadUserCollection loads raw data into an instance of UserCollection running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadUserCollection(raw interface{}) (UserCollection, error) {
	var err error
	var res UserCollection
	if val, ok := raw.([]interface{}); ok {
		res = make([]*User, len(val))
		for i, v := range val {
			var tmp62 *User
			if val, ok := v.(map[string]interface{}); ok {
				tmp62 = new(User)
				if v, ok := val["created_at"]; ok {
					var tmp63 string
					if val, ok := v.(string); ok {
						tmp63 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].CreatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp63 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp63); err2 != nil {
								err = goa.InvalidFormatError(`[*].CreatedAt`, tmp63, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp62.CreatedAt = tmp63
				}
				if v, ok := val["email"]; ok {
					var tmp64 string
					if val, ok := v.(string); ok {
						tmp64 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Email`, v, "string", err)
					}
					if err == nil {
						if tmp64 != "" {
							if err2 := goa.ValidateFormat(goa.FormatEmail, tmp64); err2 != nil {
								err = goa.InvalidFormatError(`[*].Email`, tmp64, goa.FormatEmail, err2, err)
							}
						}
					}
					tmp62.Email = tmp64
				}
				if v, ok := val["first_name"]; ok {
					var tmp65 string
					if val, ok := v.(string); ok {
						tmp65 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].FirstName`, v, "string", err)
					}
					tmp62.FirstName = tmp65
				}
				if v, ok := val["href"]; ok {
					var tmp66 string
					if val, ok := v.(string); ok {
						tmp66 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Href`, v, "string", err)
					}
					tmp62.Href = tmp66
				}
				if v, ok := val["id"]; ok {
					var tmp67 int
					if f, ok := v.(float64); ok {
						tmp67 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`[*].ID`, v, "int", err)
					}
					tmp62.ID = tmp67
				}
				if v, ok := val["last_name"]; ok {
					var tmp68 string
					if val, ok := v.(string); ok {
						tmp68 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].LastName`, v, "string", err)
					}
					tmp62.LastName = tmp68
				}
			} else {
				err = goa.InvalidAttributeTypeError(`[*]`, v, "map[string]interface{}", err)
			}
			res[i] = tmp62
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "[]interface{}", err)
	}
	return res, err
}
示例#12
0
// LoadUser loads raw data into an instance of User running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadUser(raw interface{}) (*User, error) {
	var err error
	var res *User
	if val, ok := raw.(map[string]interface{}); ok {
		res = new(User)
		if v, ok := val["created_at"]; ok {
			var tmp54 string
			if val, ok := v.(string); ok {
				tmp54 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.CreatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp54 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp54); err2 != nil {
						err = goa.InvalidFormatError(`.CreatedAt`, tmp54, goa.FormatDateTime, err2, err)
					}
				}
			}
			res.CreatedAt = tmp54
		}
		if v, ok := val["email"]; ok {
			var tmp55 string
			if val, ok := v.(string); ok {
				tmp55 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Email`, v, "string", err)
			}
			if err == nil {
				if tmp55 != "" {
					if err2 := goa.ValidateFormat(goa.FormatEmail, tmp55); err2 != nil {
						err = goa.InvalidFormatError(`.Email`, tmp55, goa.FormatEmail, err2, err)
					}
				}
			}
			res.Email = tmp55
		}
		if v, ok := val["first_name"]; ok {
			var tmp56 string
			if val, ok := v.(string); ok {
				tmp56 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.FirstName`, v, "string", err)
			}
			res.FirstName = tmp56
		}
		if v, ok := val["href"]; ok {
			var tmp57 string
			if val, ok := v.(string); ok {
				tmp57 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Href`, v, "string", err)
			}
			res.Href = tmp57
		}
		if v, ok := val["id"]; ok {
			var tmp58 int
			if f, ok := v.(float64); ok {
				tmp58 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.ID`, v, "int", err)
			}
			res.ID = tmp58
		}
		if v, ok := val["last_name"]; ok {
			var tmp59 string
			if val, ok := v.(string); ok {
				tmp59 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.LastName`, v, "string", err)
			}
			res.LastName = tmp59
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "map[string]interface{}", err)
	}
	return res, err
}
示例#13
0
// LoadSeriesCollection loads raw data into an instance of SeriesCollection running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadSeriesCollection(raw interface{}) (SeriesCollection, error) {
	var err error
	var res SeriesCollection
	if val, ok := raw.([]interface{}); ok {
		res = make([]*Series, len(val))
		for i, v := range val {
			var tmp36 *Series
			if val, ok := v.(map[string]interface{}); ok {
				tmp36 = new(Series)
				if v, ok := val["account"]; ok {
					var tmp37 *Account
					if val, ok := v.(map[string]interface{}); ok {
						tmp37 = new(Account)
						if v, ok := val["created_at"]; ok {
							var tmp38 string
							if val, ok := v.(string); ok {
								tmp38 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.CreatedAt`, v, "string", err)
							}
							if err == nil {
								if tmp38 != "" {
									if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp38); err2 != nil {
										err = goa.InvalidFormatError(`[*].Account.CreatedAt`, tmp38, goa.FormatDateTime, err2, err)
									}
								}
							}
							tmp37.CreatedAt = tmp38
						}
						if v, ok := val["created_by"]; ok {
							var tmp39 string
							if val, ok := v.(string); ok {
								tmp39 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.CreatedBy`, v, "string", err)
							}
							if err == nil {
								if tmp39 != "" {
									if err2 := goa.ValidateFormat(goa.FormatEmail, tmp39); err2 != nil {
										err = goa.InvalidFormatError(`[*].Account.CreatedBy`, tmp39, goa.FormatEmail, err2, err)
									}
								}
							}
							tmp37.CreatedBy = tmp39
						}
						if v, ok := val["href"]; ok {
							var tmp40 string
							if val, ok := v.(string); ok {
								tmp40 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.Href`, v, "string", err)
							}
							tmp37.Href = tmp40
						}
						if v, ok := val["id"]; ok {
							var tmp41 int
							if f, ok := v.(float64); ok {
								tmp41 = int(f)
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.ID`, v, "int", err)
							}
							tmp37.ID = tmp41
						}
						if v, ok := val["name"]; ok {
							var tmp42 string
							if val, ok := v.(string); ok {
								tmp42 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.Name`, v, "string", err)
							}
							tmp37.Name = tmp42
						}
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Account`, v, "map[string]interface{}", err)
					}
					tmp36.Account = tmp37
				}
				if v, ok := val["created_at"]; ok {
					var tmp43 string
					if val, ok := v.(string); ok {
						tmp43 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].CreatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp43 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp43); err2 != nil {
								err = goa.InvalidFormatError(`[*].CreatedAt`, tmp43, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp36.CreatedAt = tmp43
				}
				if v, ok := val["href"]; ok {
					var tmp44 string
					if val, ok := v.(string); ok {
						tmp44 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Href`, v, "string", err)
					}
					tmp36.Href = tmp44
				}
				if v, ok := val["id"]; ok {
					var tmp45 int
					if f, ok := v.(float64); ok {
						tmp45 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`[*].ID`, v, "int", err)
					}
					tmp36.ID = tmp45
				}
				if v, ok := val["name"]; ok {
					var tmp46 string
					if val, ok := v.(string); ok {
						tmp46 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Name`, v, "string", err)
					}
					if err == nil {
						if len(tmp46) < 2 {
							err = goa.InvalidLengthError(`[*].Name`, tmp46, 2, true, err)
						}
					}
					tmp36.Name = tmp46
				}
				if v, ok := val["updated_at"]; ok {
					var tmp47 string
					if val, ok := v.(string); ok {
						tmp47 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].UpdatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp47 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp47); err2 != nil {
								err = goa.InvalidFormatError(`[*].UpdatedAt`, tmp47, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp36.UpdatedAt = tmp47
				}
			} else {
				err = goa.InvalidAttributeTypeError(`[*]`, v, "map[string]interface{}", err)
			}
			res[i] = tmp36
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "[]interface{}", err)
	}
	return res, err
}
示例#14
0
// LoadSeries loads raw data into an instance of Series running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadSeries(raw interface{}) (*Series, error) {
	var err error
	var res *Series
	if val, ok := raw.(map[string]interface{}); ok {
		res = new(Series)
		if v, ok := val["account"]; ok {
			var tmp18 *Account
			if val, ok := v.(map[string]interface{}); ok {
				tmp18 = new(Account)
				if v, ok := val["created_at"]; ok {
					var tmp19 string
					if val, ok := v.(string); ok {
						tmp19 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.CreatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp19 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp19); err2 != nil {
								err = goa.InvalidFormatError(`.Account.CreatedAt`, tmp19, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp18.CreatedAt = tmp19
				}
				if v, ok := val["created_by"]; ok {
					var tmp20 string
					if val, ok := v.(string); ok {
						tmp20 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.CreatedBy`, v, "string", err)
					}
					if err == nil {
						if tmp20 != "" {
							if err2 := goa.ValidateFormat(goa.FormatEmail, tmp20); err2 != nil {
								err = goa.InvalidFormatError(`.Account.CreatedBy`, tmp20, goa.FormatEmail, err2, err)
							}
						}
					}
					tmp18.CreatedBy = tmp20
				}
				if v, ok := val["href"]; ok {
					var tmp21 string
					if val, ok := v.(string); ok {
						tmp21 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.Href`, v, "string", err)
					}
					tmp18.Href = tmp21
				}
				if v, ok := val["id"]; ok {
					var tmp22 int
					if f, ok := v.(float64); ok {
						tmp22 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.ID`, v, "int", err)
					}
					tmp18.ID = tmp22
				}
				if v, ok := val["name"]; ok {
					var tmp23 string
					if val, ok := v.(string); ok {
						tmp23 = val
					} else {
						err = goa.InvalidAttributeTypeError(`.Account.Name`, v, "string", err)
					}
					tmp18.Name = tmp23
				}
			} else {
				err = goa.InvalidAttributeTypeError(`.Account`, v, "map[string]interface{}", err)
			}
			res.Account = tmp18
		}
		if v, ok := val["created_at"]; ok {
			var tmp24 string
			if val, ok := v.(string); ok {
				tmp24 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.CreatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp24 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp24); err2 != nil {
						err = goa.InvalidFormatError(`.CreatedAt`, tmp24, goa.FormatDateTime, err2, err)
					}
				}
			}
			res.CreatedAt = tmp24
		}
		if v, ok := val["href"]; ok {
			var tmp25 string
			if val, ok := v.(string); ok {
				tmp25 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Href`, v, "string", err)
			}
			res.Href = tmp25
		}
		if v, ok := val["id"]; ok {
			var tmp26 int
			if f, ok := v.(float64); ok {
				tmp26 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.ID`, v, "int", err)
			}
			res.ID = tmp26
		}
		if v, ok := val["name"]; ok {
			var tmp27 string
			if val, ok := v.(string); ok {
				tmp27 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Name`, v, "string", err)
			}
			if err == nil {
				if len(tmp27) < 2 {
					err = goa.InvalidLengthError(`.Name`, tmp27, 2, true, err)
				}
			}
			res.Name = tmp27
		}
		if v, ok := val["updated_at"]; ok {
			var tmp28 string
			if val, ok := v.(string); ok {
				tmp28 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.UpdatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp28 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp28); err2 != nil {
						err = goa.InvalidFormatError(`.UpdatedAt`, tmp28, goa.FormatDateTime, err2, err)
					}
				}
			}
			res.UpdatedAt = tmp28
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "map[string]interface{}", err)
	}
	return res, err
}
示例#15
0
文件: media_types.go 项目: tylerb/goa
// UnmarshalAccount unmarshals and validates a raw interface{} into an instance of Account
func UnmarshalAccount(source interface{}, inErr error) (target *Account, err error) {
	err = inErr
	if val, ok := source.(map[string]interface{}); ok {
		target = new(Account)
		if v, ok := val["created_at"]; ok {
			var tmp24 string
			if val, ok := v.(string); ok {
				tmp24 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.CreatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp24 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp24); err2 != nil {
						err = goa.InvalidFormatError(`load.CreatedAt`, tmp24, goa.FormatDateTime, err2, err)
					}
				}
			}
			target.CreatedAt = tmp24
		}
		if v, ok := val["created_by"]; ok {
			var tmp25 string
			if val, ok := v.(string); ok {
				tmp25 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.CreatedBy`, v, "string", err)
			}
			if err == nil {
				if tmp25 != "" {
					if err2 := goa.ValidateFormat(goa.FormatEmail, tmp25); err2 != nil {
						err = goa.InvalidFormatError(`load.CreatedBy`, tmp25, goa.FormatEmail, err2, err)
					}
				}
			}
			target.CreatedBy = tmp25
		}
		if v, ok := val["href"]; ok {
			var tmp26 string
			if val, ok := v.(string); ok {
				tmp26 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Href`, v, "string", err)
			}
			target.Href = tmp26
		}
		if v, ok := val["id"]; ok {
			var tmp27 int
			if f, ok := v.(float64); ok {
				tmp27 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`load.ID`, v, "int", err)
			}
			target.ID = tmp27
		}
		if v, ok := val["name"]; ok {
			var tmp28 string
			if val, ok := v.(string); ok {
				tmp28 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Name`, v, "string", err)
			}
			target.Name = tmp28
		}
	} else {
		err = goa.InvalidAttributeTypeError(`load`, source, "dictionary", err)
	}
	return
}
示例#16
0
文件: contexts.go 项目: cw2018/goa
// UnmarshalCreateBottlePayload unmarshals and validates a raw interface{} into an instance of CreateBottlePayload
func UnmarshalCreateBottlePayload(source interface{}, inErr error) (target *CreateBottlePayload, err error) {
	err = inErr
	if val, ok := source.(map[string]interface{}); ok {
		target = new(CreateBottlePayload)
		if v, ok := val["color"]; ok {
			var tmp3 string
			if val, ok := v.(string); ok {
				tmp3 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Color`, v, "string", err)
			}
			if err == nil {
				if tmp3 != "" {
					if !(tmp3 == "red" || tmp3 == "white" || tmp3 == "rose" || tmp3 == "yellow" || tmp3 == "sparkling") {
						err = goa.InvalidEnumValueError(`payload.Color`, tmp3, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err)
					}
				}
			}
			target.Color = tmp3
		} else {
			err = goa.MissingAttributeError(`payload`, "color", err)
		}
		if v, ok := val["country"]; ok {
			var tmp4 string
			if val, ok := v.(string); ok {
				tmp4 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Country`, v, "string", err)
			}
			if err == nil {
				if len(tmp4) < 2 {
					err = goa.InvalidLengthError(`payload.Country`, tmp4, len(tmp4), 2, true, err)
				}
			}
			target.Country = tmp4
		}
		if v, ok := val["name"]; ok {
			var tmp5 string
			if val, ok := v.(string); ok {
				tmp5 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Name`, v, "string", err)
			}
			if err == nil {
				if len(tmp5) < 2 {
					err = goa.InvalidLengthError(`payload.Name`, tmp5, len(tmp5), 2, true, err)
				}
			}
			target.Name = tmp5
		} else {
			err = goa.MissingAttributeError(`payload`, "name", err)
		}
		if v, ok := val["region"]; ok {
			var tmp6 string
			if val, ok := v.(string); ok {
				tmp6 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Region`, v, "string", err)
			}
			target.Region = tmp6
		}
		if v, ok := val["review"]; ok {
			var tmp7 string
			if val, ok := v.(string); ok {
				tmp7 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Review`, v, "string", err)
			}
			if err == nil {
				if len(tmp7) < 10 {
					err = goa.InvalidLengthError(`payload.Review`, tmp7, len(tmp7), 10, true, err)
				}
				if len(tmp7) > 300 {
					err = goa.InvalidLengthError(`payload.Review`, tmp7, len(tmp7), 300, false, err)
				}
			}
			target.Review = tmp7
		}
		if v, ok := val["sweetness"]; ok {
			var tmp8 int
			if f, ok := v.(float64); ok {
				tmp8 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Sweetness`, v, "int", err)
			}
			if err == nil {
				if tmp8 < 1 {
					err = goa.InvalidRangeError(`payload.Sweetness`, tmp8, 1, true, err)
				}
				if tmp8 > 5 {
					err = goa.InvalidRangeError(`payload.Sweetness`, tmp8, 5, false, err)
				}
			}
			target.Sweetness = tmp8
		}
		if v, ok := val["varietal"]; ok {
			var tmp9 string
			if val, ok := v.(string); ok {
				tmp9 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Varietal`, v, "string", err)
			}
			if err == nil {
				if len(tmp9) < 4 {
					err = goa.InvalidLengthError(`payload.Varietal`, tmp9, len(tmp9), 4, true, err)
				}
			}
			target.Varietal = tmp9
		} else {
			err = goa.MissingAttributeError(`payload`, "varietal", err)
		}
		if v, ok := val["vineyard"]; ok {
			var tmp10 string
			if val, ok := v.(string); ok {
				tmp10 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Vineyard`, v, "string", err)
			}
			if err == nil {
				if len(tmp10) < 2 {
					err = goa.InvalidLengthError(`payload.Vineyard`, tmp10, len(tmp10), 2, true, err)
				}
			}
			target.Vineyard = tmp10
		} else {
			err = goa.MissingAttributeError(`payload`, "vineyard", err)
		}
		if v, ok := val["vintage"]; ok {
			var tmp11 int
			if f, ok := v.(float64); ok {
				tmp11 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Vintage`, v, "int", err)
			}
			if err == nil {
				if tmp11 < 1900 {
					err = goa.InvalidRangeError(`payload.Vintage`, tmp11, 1900, true, err)
				}
				if tmp11 > 2020 {
					err = goa.InvalidRangeError(`payload.Vintage`, tmp11, 2020, false, err)
				}
			}
			target.Vintage = tmp11
		} else {
			err = goa.MissingAttributeError(`payload`, "vintage", err)
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, source, "dictionary", err)
	}
	return
}
示例#17
0
文件: media_types.go 项目: tylerb/goa
// UnmarshalBottle unmarshals and validates a raw interface{} into an instance of Bottle
func UnmarshalBottle(source interface{}, inErr error) (target *Bottle, err error) {
	err = inErr
	if val, ok := source.(map[string]interface{}); ok {
		target = new(Bottle)
		if v, ok := val["account"]; ok {
			var tmp32 *Account
			tmp32, err = UnmarshalAccount(v, err)
			target.Account = tmp32
		}
		if v, ok := val["color"]; ok {
			var tmp33 string
			if val, ok := v.(string); ok {
				tmp33 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Color`, v, "string", err)
			}
			if err == nil {
				if tmp33 != "" {
					if !(tmp33 == "red" || tmp33 == "white" || tmp33 == "rose" || tmp33 == "yellow" || tmp33 == "sparkling") {
						err = goa.InvalidEnumValueError(`load.Color`, tmp33, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err)
					}
				}
			}
			target.Color = tmp33
		}
		if v, ok := val["country"]; ok {
			var tmp34 string
			if val, ok := v.(string); ok {
				tmp34 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Country`, v, "string", err)
			}
			if err == nil {
				if len(tmp34) < 2 {
					err = goa.InvalidLengthError(`load.Country`, tmp34, len(tmp34), 2, true, err)
				}
			}
			target.Country = tmp34
		}
		if v, ok := val["created_at"]; ok {
			var tmp35 string
			if val, ok := v.(string); ok {
				tmp35 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.CreatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp35 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp35); err2 != nil {
						err = goa.InvalidFormatError(`load.CreatedAt`, tmp35, goa.FormatDateTime, err2, err)
					}
				}
			}
			target.CreatedAt = tmp35
		}
		if v, ok := val["href"]; ok {
			var tmp36 string
			if val, ok := v.(string); ok {
				tmp36 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Href`, v, "string", err)
			}
			target.Href = tmp36
		}
		if v, ok := val["id"]; ok {
			var tmp37 int
			if f, ok := v.(float64); ok {
				tmp37 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`load.ID`, v, "int", err)
			}
			target.ID = tmp37
		}
		if v, ok := val["name"]; ok {
			var tmp38 string
			if val, ok := v.(string); ok {
				tmp38 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Name`, v, "string", err)
			}
			if err == nil {
				if len(tmp38) < 2 {
					err = goa.InvalidLengthError(`load.Name`, tmp38, len(tmp38), 2, true, err)
				}
			}
			target.Name = tmp38
		}
		if v, ok := val["rating"]; ok {
			var tmp39 int
			if f, ok := v.(float64); ok {
				tmp39 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`load.Rating`, v, "int", err)
			}
			if err == nil {
				if tmp39 < 1 {
					err = goa.InvalidRangeError(`load.Rating`, tmp39, 1, true, err)
				}
				if tmp39 > 5 {
					err = goa.InvalidRangeError(`load.Rating`, tmp39, 5, false, err)
				}
			}
			target.Rating = tmp39
		}
		if v, ok := val["region"]; ok {
			var tmp40 string
			if val, ok := v.(string); ok {
				tmp40 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Region`, v, "string", err)
			}
			target.Region = tmp40
		}
		if v, ok := val["review"]; ok {
			var tmp41 string
			if val, ok := v.(string); ok {
				tmp41 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Review`, v, "string", err)
			}
			if err == nil {
				if len(tmp41) < 10 {
					err = goa.InvalidLengthError(`load.Review`, tmp41, len(tmp41), 10, true, err)
				}
				if len(tmp41) > 300 {
					err = goa.InvalidLengthError(`load.Review`, tmp41, len(tmp41), 300, false, err)
				}
			}
			target.Review = tmp41
		}
		if v, ok := val["sweetness"]; ok {
			var tmp42 int
			if f, ok := v.(float64); ok {
				tmp42 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`load.Sweetness`, v, "int", err)
			}
			if err == nil {
				if tmp42 < 1 {
					err = goa.InvalidRangeError(`load.Sweetness`, tmp42, 1, true, err)
				}
				if tmp42 > 5 {
					err = goa.InvalidRangeError(`load.Sweetness`, tmp42, 5, false, err)
				}
			}
			target.Sweetness = tmp42
		}
		if v, ok := val["updated_at"]; ok {
			var tmp43 string
			if val, ok := v.(string); ok {
				tmp43 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.UpdatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp43 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp43); err2 != nil {
						err = goa.InvalidFormatError(`load.UpdatedAt`, tmp43, goa.FormatDateTime, err2, err)
					}
				}
			}
			target.UpdatedAt = tmp43
		}
		if v, ok := val["varietal"]; ok {
			var tmp44 string
			if val, ok := v.(string); ok {
				tmp44 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Varietal`, v, "string", err)
			}
			if err == nil {
				if len(tmp44) < 4 {
					err = goa.InvalidLengthError(`load.Varietal`, tmp44, len(tmp44), 4, true, err)
				}
			}
			target.Varietal = tmp44
		}
		if v, ok := val["vineyard"]; ok {
			var tmp45 string
			if val, ok := v.(string); ok {
				tmp45 = val
			} else {
				err = goa.InvalidAttributeTypeError(`load.Vineyard`, v, "string", err)
			}
			if err == nil {
				if len(tmp45) < 2 {
					err = goa.InvalidLengthError(`load.Vineyard`, tmp45, len(tmp45), 2, true, err)
				}
			}
			target.Vineyard = tmp45
		}
		if v, ok := val["vintage"]; ok {
			var tmp46 int
			if f, ok := v.(float64); ok {
				tmp46 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`load.Vintage`, v, "int", err)
			}
			if err == nil {
				if tmp46 < 1900 {
					err = goa.InvalidRangeError(`load.Vintage`, tmp46, 1900, true, err)
				}
				if tmp46 > 2020 {
					err = goa.InvalidRangeError(`load.Vintage`, tmp46, 2020, false, err)
				}
			}
			target.Vintage = tmp46
		}
	} else {
		err = goa.InvalidAttributeTypeError(`load`, source, "dictionary", err)
	}
	return
}
示例#18
0
文件: media_types.go 项目: harboe/goa
// LoadAccount loads raw data into an instance of Account running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadAccount(raw interface{}) (*Account, error) {
	var err error
	var res *Account
	if val, ok := raw.(map[string]interface{}); ok {
		res = new(Account)
		if v, ok := val["created_at"]; ok {
			var tmp22 string
			if val, ok := v.(string); ok {
				tmp22 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.CreatedAt`, v, "string", err)
			}
			if err == nil {
				if tmp22 != "" {
					if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp22); err2 != nil {
						err = goa.InvalidFormatError(`.CreatedAt`, tmp22, goa.FormatDateTime, err2, err)
					}
				}
			}
			res.CreatedAt = tmp22
		}
		if v, ok := val["created_by"]; ok {
			var tmp23 string
			if val, ok := v.(string); ok {
				tmp23 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.CreatedBy`, v, "string", err)
			}
			if err == nil {
				if tmp23 != "" {
					if err2 := goa.ValidateFormat(goa.FormatEmail, tmp23); err2 != nil {
						err = goa.InvalidFormatError(`.CreatedBy`, tmp23, goa.FormatEmail, err2, err)
					}
				}
			}
			res.CreatedBy = tmp23
		}
		if v, ok := val["href"]; ok {
			var tmp24 string
			if val, ok := v.(string); ok {
				tmp24 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Href`, v, "string", err)
			}
			res.Href = tmp24
		}
		if v, ok := val["id"]; ok {
			var tmp25 int
			if f, ok := v.(float64); ok {
				tmp25 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`.ID`, v, "int", err)
			}
			res.ID = tmp25
		}
		if v, ok := val["name"]; ok {
			var tmp26 string
			if val, ok := v.(string); ok {
				tmp26 = val
			} else {
				err = goa.InvalidAttributeTypeError(`.Name`, v, "string", err)
			}
			res.Name = tmp26
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "map[string]interface{}", err)
	}
	return res, err
}
示例#19
0
文件: media_types.go 项目: harboe/goa
// LoadBottleCollection loads raw data into an instance of BottleCollection running all the
// validations. Raw data is defined by data that the JSON unmarshaler would create when unmarshaling
// into a variable of type interface{}. See https://golang.org/pkg/encoding/json/#Unmarshal for the
// complete list of supported data types.
func LoadBottleCollection(raw interface{}) (BottleCollection, error) {
	var err error
	var res BottleCollection
	if val, ok := raw.([]interface{}); ok {
		res = make([]*Bottle, len(val))
		for i, v := range val {
			var tmp56 *Bottle
			if val, ok := v.(map[string]interface{}); ok {
				tmp56 = new(Bottle)
				if v, ok := val["account"]; ok {
					var tmp57 *Account
					if val, ok := v.(map[string]interface{}); ok {
						tmp57 = new(Account)
						if v, ok := val["created_at"]; ok {
							var tmp58 string
							if val, ok := v.(string); ok {
								tmp58 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.CreatedAt`, v, "string", err)
							}
							if err == nil {
								if tmp58 != "" {
									if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp58); err2 != nil {
										err = goa.InvalidFormatError(`[*].Account.CreatedAt`, tmp58, goa.FormatDateTime, err2, err)
									}
								}
							}
							tmp57.CreatedAt = tmp58
						}
						if v, ok := val["created_by"]; ok {
							var tmp59 string
							if val, ok := v.(string); ok {
								tmp59 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.CreatedBy`, v, "string", err)
							}
							if err == nil {
								if tmp59 != "" {
									if err2 := goa.ValidateFormat(goa.FormatEmail, tmp59); err2 != nil {
										err = goa.InvalidFormatError(`[*].Account.CreatedBy`, tmp59, goa.FormatEmail, err2, err)
									}
								}
							}
							tmp57.CreatedBy = tmp59
						}
						if v, ok := val["href"]; ok {
							var tmp60 string
							if val, ok := v.(string); ok {
								tmp60 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.Href`, v, "string", err)
							}
							tmp57.Href = tmp60
						}
						if v, ok := val["id"]; ok {
							var tmp61 int
							if f, ok := v.(float64); ok {
								tmp61 = int(f)
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.ID`, v, "int", err)
							}
							tmp57.ID = tmp61
						}
						if v, ok := val["name"]; ok {
							var tmp62 string
							if val, ok := v.(string); ok {
								tmp62 = val
							} else {
								err = goa.InvalidAttributeTypeError(`[*].Account.Name`, v, "string", err)
							}
							tmp57.Name = tmp62
						}
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Account`, v, "map[string]interface{}", err)
					}
					tmp56.Account = tmp57
				}
				if v, ok := val["color"]; ok {
					var tmp63 string
					if val, ok := v.(string); ok {
						tmp63 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Color`, v, "string", err)
					}
					if err == nil {
						if tmp63 != "" {
							if !(tmp63 == "red" || tmp63 == "white" || tmp63 == "rose" || tmp63 == "yellow" || tmp63 == "sparkling") {
								err = goa.InvalidEnumValueError(`[*].Color`, tmp63, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err)
							}
						}
					}
					tmp56.Color = tmp63
				}
				if v, ok := val["country"]; ok {
					var tmp64 string
					if val, ok := v.(string); ok {
						tmp64 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Country`, v, "string", err)
					}
					if err == nil {
						if len(tmp64) < 2 {
							err = goa.InvalidLengthError(`[*].Country`, tmp64, 2, true, err)
						}
					}
					tmp56.Country = tmp64
				}
				if v, ok := val["created_at"]; ok {
					var tmp65 string
					if val, ok := v.(string); ok {
						tmp65 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].CreatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp65 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp65); err2 != nil {
								err = goa.InvalidFormatError(`[*].CreatedAt`, tmp65, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp56.CreatedAt = tmp65
				}
				if v, ok := val["href"]; ok {
					var tmp66 string
					if val, ok := v.(string); ok {
						tmp66 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Href`, v, "string", err)
					}
					tmp56.Href = tmp66
				}
				if v, ok := val["id"]; ok {
					var tmp67 int
					if f, ok := v.(float64); ok {
						tmp67 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`[*].ID`, v, "int", err)
					}
					tmp56.ID = tmp67
				}
				if v, ok := val["name"]; ok {
					var tmp68 string
					if val, ok := v.(string); ok {
						tmp68 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Name`, v, "string", err)
					}
					if err == nil {
						if len(tmp68) < 2 {
							err = goa.InvalidLengthError(`[*].Name`, tmp68, 2, true, err)
						}
					}
					tmp56.Name = tmp68
				}
				if v, ok := val["rating"]; ok {
					var tmp69 int
					if f, ok := v.(float64); ok {
						tmp69 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Rating`, v, "int", err)
					}
					if err == nil {
						if tmp69 < 1 {
							err = goa.InvalidRangeError(`[*].Rating`, tmp69, 1, true, err)
						}
						if tmp69 > 5 {
							err = goa.InvalidRangeError(`[*].Rating`, tmp69, 5, false, err)
						}
					}
					tmp56.Rating = tmp69
				}
				if v, ok := val["region"]; ok {
					var tmp70 string
					if val, ok := v.(string); ok {
						tmp70 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Region`, v, "string", err)
					}
					tmp56.Region = tmp70
				}
				if v, ok := val["review"]; ok {
					var tmp71 string
					if val, ok := v.(string); ok {
						tmp71 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Review`, v, "string", err)
					}
					if err == nil {
						if len(tmp71) < 10 {
							err = goa.InvalidLengthError(`[*].Review`, tmp71, 10, true, err)
						}
						if len(tmp71) > 300 {
							err = goa.InvalidLengthError(`[*].Review`, tmp71, 300, false, err)
						}
					}
					tmp56.Review = tmp71
				}
				if v, ok := val["sweetness"]; ok {
					var tmp72 int
					if f, ok := v.(float64); ok {
						tmp72 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Sweetness`, v, "int", err)
					}
					if err == nil {
						if tmp72 < 1 {
							err = goa.InvalidRangeError(`[*].Sweetness`, tmp72, 1, true, err)
						}
						if tmp72 > 5 {
							err = goa.InvalidRangeError(`[*].Sweetness`, tmp72, 5, false, err)
						}
					}
					tmp56.Sweetness = tmp72
				}
				if v, ok := val["updated_at"]; ok {
					var tmp73 string
					if val, ok := v.(string); ok {
						tmp73 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].UpdatedAt`, v, "string", err)
					}
					if err == nil {
						if tmp73 != "" {
							if err2 := goa.ValidateFormat(goa.FormatDateTime, tmp73); err2 != nil {
								err = goa.InvalidFormatError(`[*].UpdatedAt`, tmp73, goa.FormatDateTime, err2, err)
							}
						}
					}
					tmp56.UpdatedAt = tmp73
				}
				if v, ok := val["varietal"]; ok {
					var tmp74 string
					if val, ok := v.(string); ok {
						tmp74 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Varietal`, v, "string", err)
					}
					if err == nil {
						if len(tmp74) < 4 {
							err = goa.InvalidLengthError(`[*].Varietal`, tmp74, 4, true, err)
						}
					}
					tmp56.Varietal = tmp74
				}
				if v, ok := val["vineyard"]; ok {
					var tmp75 string
					if val, ok := v.(string); ok {
						tmp75 = val
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Vineyard`, v, "string", err)
					}
					if err == nil {
						if len(tmp75) < 2 {
							err = goa.InvalidLengthError(`[*].Vineyard`, tmp75, 2, true, err)
						}
					}
					tmp56.Vineyard = tmp75
				}
				if v, ok := val["vintage"]; ok {
					var tmp76 int
					if f, ok := v.(float64); ok {
						tmp76 = int(f)
					} else {
						err = goa.InvalidAttributeTypeError(`[*].Vintage`, v, "int", err)
					}
					if err == nil {
						if tmp76 < 1900 {
							err = goa.InvalidRangeError(`[*].Vintage`, tmp76, 1900, true, err)
						}
						if tmp76 > 2020 {
							err = goa.InvalidRangeError(`[*].Vintage`, tmp76, 2020, false, err)
						}
					}
					tmp56.Vintage = tmp76
				}
			} else {
				err = goa.InvalidAttributeTypeError(`[*]`, v, "map[string]interface{}", err)
			}
			res[i] = tmp56
		}
	} else {
		err = goa.InvalidAttributeTypeError(``, raw, "[]interface{}", err)
	}
	return res, err
}
示例#20
0
文件: contexts.go 项目: cw2018/goa
// UnmarshalUpdateBottlePayload unmarshals and validates a raw interface{} into an instance of UpdateBottlePayload
func UnmarshalUpdateBottlePayload(source interface{}, inErr error) (target *UpdateBottlePayload, err error) {
	err = inErr
	if val, ok := source.(map[string]interface{}); ok {
		target = new(UpdateBottlePayload)
		if v, ok := val["color"]; ok {
			var tmp13 string
			if val, ok := v.(string); ok {
				tmp13 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Color`, v, "string", err)
			}
			if err == nil {
				if tmp13 != "" {
					if !(tmp13 == "red" || tmp13 == "white" || tmp13 == "rose" || tmp13 == "yellow" || tmp13 == "sparkling") {
						err = goa.InvalidEnumValueError(`payload.Color`, tmp13, []interface{}{"red", "white", "rose", "yellow", "sparkling"}, err)
					}
				}
			}
			target.Color = tmp13
		}
		if v, ok := val["country"]; ok {
			var tmp14 string
			if val, ok := v.(string); ok {
				tmp14 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Country`, v, "string", err)
			}
			if err == nil {
				if len(tmp14) < 2 {
					err = goa.InvalidLengthError(`payload.Country`, tmp14, len(tmp14), 2, true, err)
				}
			}
			target.Country = tmp14
		}
		if v, ok := val["name"]; ok {
			var tmp15 string
			if val, ok := v.(string); ok {
				tmp15 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Name`, v, "string", err)
			}
			if err == nil {
				if len(tmp15) < 2 {
					err = goa.InvalidLengthError(`payload.Name`, tmp15, len(tmp15), 2, true, err)
				}
			}
			target.Name = tmp15
		}
		if v, ok := val["region"]; ok {
			var tmp16 string
			if val, ok := v.(string); ok {
				tmp16 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Region`, v, "string", err)
			}
			target.Region = tmp16
		}
		if v, ok := val["review"]; ok {
			var tmp17 string
			if val, ok := v.(string); ok {
				tmp17 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Review`, v, "string", err)
			}
			if err == nil {
				if len(tmp17) < 10 {
					err = goa.InvalidLengthError(`payload.Review`, tmp17, len(tmp17), 10, true, err)
				}
				if len(tmp17) > 300 {
					err = goa.InvalidLengthError(`payload.Review`, tmp17, len(tmp17), 300, false, err)
				}
			}
			target.Review = tmp17
		}
		if v, ok := val["sweetness"]; ok {
			var tmp18 int
			if f, ok := v.(float64); ok {
				tmp18 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Sweetness`, v, "int", err)
			}
			if err == nil {
				if tmp18 < 1 {
					err = goa.InvalidRangeError(`payload.Sweetness`, tmp18, 1, true, err)
				}
				if tmp18 > 5 {
					err = goa.InvalidRangeError(`payload.Sweetness`, tmp18, 5, false, err)
				}
			}
			target.Sweetness = tmp18
		}
		if v, ok := val["varietal"]; ok {
			var tmp19 string
			if val, ok := v.(string); ok {
				tmp19 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Varietal`, v, "string", err)
			}
			if err == nil {
				if len(tmp19) < 4 {
					err = goa.InvalidLengthError(`payload.Varietal`, tmp19, len(tmp19), 4, true, err)
				}
			}
			target.Varietal = tmp19
		}
		if v, ok := val["vineyard"]; ok {
			var tmp20 string
			if val, ok := v.(string); ok {
				tmp20 = val
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Vineyard`, v, "string", err)
			}
			if err == nil {
				if len(tmp20) < 2 {
					err = goa.InvalidLengthError(`payload.Vineyard`, tmp20, len(tmp20), 2, true, err)
				}
			}
			target.Vineyard = tmp20
		}
		if v, ok := val["vintage"]; ok {
			var tmp21 int
			if f, ok := v.(float64); ok {
				tmp21 = int(f)
			} else {
				err = goa.InvalidAttributeTypeError(`payload.Vintage`, v, "int", err)
			}
			if err == nil {
				if tmp21 < 1900 {
					err = goa.InvalidRangeError(`payload.Vintage`, tmp21, 1900, true, err)
				}
				if tmp21 > 2020 {
					err = goa.InvalidRangeError(`payload.Vintage`, tmp21, 2020, false, err)
				}
			}
			target.Vintage = tmp21
		}
	} else {
		err = goa.InvalidAttributeTypeError(`payload`, source, "dictionary", err)
	}
	return
}