// GenerateParameterValues generates Value for each Parameter of the given // Template that has Generate field specified where Value is not already // supplied. // // Examples: // // from | value // ----------------------------- // "test[0-9]{1}x" | "test7x" // "[0-1]{8}" | "01001100" // "0x[A-F0-9]{4}" | "0xB3AF" // "[a-zA-Z0-9]{8}" | "hW4yQU5i" // If an error occurs, the parameter that caused the error is returned along with the error message. func (p *Processor) GenerateParameterValues(t *api.Template) *field.Error { for i := range t.Parameters { param := &t.Parameters[i] if len(param.Value) > 0 { continue } templatePath := field.NewPath("template").Child("parameters").Index(i) if param.Generate != "" { generator, ok := p.Generators[param.Generate] if !ok { return field.NotFound(templatePath, param) } if generator == nil { err := fmt.Errorf("template.parameters[%v]: Invalid '%v' generator for parameter %s", i, param.Generate, param.Name) return field.Invalid(templatePath, param, err.Error()) } value, err := generator.GenerateValue(param.From) if err != nil { return field.Invalid(templatePath, param, err.Error()) } param.Value, ok = value.(string) if !ok { err := fmt.Errorf("template.parameters[%v]: Unable to convert the generated value '%#v' to string for parameter %s", i, value, param.Name) return field.Invalid(templatePath, param, err.Error()) } } if len(param.Value) == 0 && param.Required { err := fmt.Errorf("template.parameters[%v]: parameter %s is required and must be specified", i, param.Name) return field.Required(templatePath, err.Error()) } } return nil }
// GenerateParameterValues generates Value for each Parameter of the given // Template that has Generate field specified where Value is not already // supplied. // // Examples: // // from | value // ----------------------------- // "test[0-9]{1}x" | "test7x" // "[0-1]{8}" | "01001100" // "0x[A-F0-9]{4}" | "0xB3AF" // "[a-zA-Z0-9]{8}" | "hW4yQU5i" func (p *Processor) GenerateParameterValues(t *api.Template) error { for i := range t.Parameters { param := &t.Parameters[i] if len(param.Value) > 0 { continue } if param.Generate != "" { generator, ok := p.Generators[param.Generate] if !ok { return fmt.Errorf("template.parameters[%v]: Unable to find the '%v' generator", i, param.Generate) } if generator == nil { return fmt.Errorf("template.parameters[%v]: Invalid '%v' generator", i, param.Generate) } value, err := generator.GenerateValue(param.From) if err != nil { return err } param.Value, ok = value.(string) if !ok { return fmt.Errorf("template.parameters[%v]: Unable to convert the generated value '%#v' to string", i, value) } } if len(param.Value) == 0 && param.Required { err := fielderrors.NewFieldRequired(fmt.Sprintf("parameters[%d].value", i)) err.Detail = fmt.Sprintf("parameter %s is required and must be specified") return err } } return nil }
// GenerateParameterValues generates Value for each Parameter of the given // Template that has Generate field specified where Value is not already // supplied. // // Examples: // // from | value // ----------------------------- // "test[0-9]{1}x" | "test7x" // "[0-1]{8}" | "01001100" // "0x[A-F0-9]{4}" | "0xB3AF" // "[a-zA-Z0-9]{8}" | "hW4yQU5i" // If an error occurs, the parameter that caused the error is returned along with the error message. func (p *Processor) GenerateParameterValues(t *api.Template) (error, *api.Parameter) { for i := range t.Parameters { param := &t.Parameters[i] if len(param.Value) > 0 { continue } if param.Generate != "" { generator, ok := p.Generators[param.Generate] if !ok { return fmt.Errorf("template.parameters[%v]: Unable to find the '%v' generator for parameter %s", i, param.Generate, param.Name), param } if generator == nil { return fmt.Errorf("template.parameters[%v]: Invalid '%v' generator for parameter %s", i, param.Generate, param.Name), param } value, err := generator.GenerateValue(param.From) if err != nil { return fmt.Errorf("template.parameters[%v]: Error %v generating value for parameter %s", i, err.Error(), param.Name), param } param.Value, ok = value.(string) if !ok { return fmt.Errorf("template.parameters[%v]: Unable to convert the generated value '%#v' to string for parameter %s", i, value, param.Name), param } } if len(param.Value) == 0 && param.Required { return fmt.Errorf("template.parameters[%v]: parameter %s is required and must be specified", i, param.Name), param } } return nil, nil }
// GenerateParameterValues generates Value for each Parameter of the given // Template that has Generate field specified where Value is not already // supplied. // // Examples: // // from | value // ----------------------------- // "test[0-9]{1}x" | "test7x" // "[0-1]{8}" | "01001100" // "0x[A-F0-9]{4}" | "0xB3AF" // "[a-zA-Z0-9]{8}" | "hW4yQU5i" func (p *Processor) GenerateParameterValues(t *api.Template) error { for i := range t.Parameters { param := &t.Parameters[i] if len(param.Value) > 0 { continue } if param.Generate != "" { generator, ok := p.Generators[param.Generate] if !ok { return fmt.Errorf("template.parameters[%v]: Unable to find the '%v' generator", i, param.Generate) } if generator == nil { return fmt.Errorf("template.parameters[%v]: Invalid '%v' generator", i, param.Generate) } value, err := generator.GenerateValue(param.From) if err != nil { return err } param.Value, ok = value.(string) if !ok { return fmt.Errorf("template.parameters[%v]: Unable to convert the generated value '%#v' to string", i, value) } } } return nil }
// GenerateParameterValues generates Value for each Parameter of the given // Template that has Expression field specified and doesn't have any // Value yet. // // Examples (Expression => Value): // - "test[0-9]{1}x" => "test7x" // - "[0-1]{8}" => "01001100" // - "0x[A-F0-9]{4}" => "0xB3AF" // - "[a-zA-Z0-9]{8}" => "hW4yQU5i" func (p *TemplateProcessor) GenerateParameterValues(t *api.Template) error { for i, _ := range t.Parameters { param := &t.Parameters[i] if param.Expression != "" && param.Value == "" { generator, ok := p.Generators["expression"] if !ok { return fmt.Errorf("Can't find expression generator.") } value, err := generator.GenerateValue(param.Expression) if err != nil { return err } param.Value, ok = value.(string) if !ok { return fmt.Errorf("Can't convert the generated value %v to string.", value) } } } return nil }