// Code generated by protoc-gen-validate. DO NOT EDIT. // source: pkg/apis/common/v2/common.proto package common import ( "bytes" "errors" "fmt" "net" "net/mail" "net/url" "regexp" "sort" "strings" "time" "unicode/utf8" "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used var ( _ = bytes.MinRead _ = errors.New("") _ = fmt.Print _ = utf8.UTFMax _ = (*regexp.Regexp)(nil) _ = (*strings.Reader)(nil) _ = net.IPv4len _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) _ = anypb.Any{} _ = sort.Sort ) // Validate checks the field values on Peer with the rules defined in the proto // definition for this message. If any rules are violated, the first error // encountered is returned, or nil if there are no violations. func (m *Peer) Validate() error { return m.validate(false) } // ValidateAll checks the field values on Peer with the rules defined in the // proto definition for this message. If any rules are violated, the result is // a list of violation errors wrapped in PeerMultiError, or nil if none found. func (m *Peer) ValidateAll() error { return m.validate(true) } func (m *Peer) validate(all bool) error { if m == nil { return nil } var errors []error if utf8.RuneCountInString(m.GetId()) < 1 { err := PeerValidationError{ field: "Id", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if all { switch v := interface{}(m.GetRange()).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { errors = append(errors, PeerValidationError{ field: "Range", reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { errors = append(errors, PeerValidationError{ field: "Range", reason: "embedded message failed validation", cause: err, }) } } } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return PeerValidationError{ field: "Range", reason: "embedded message failed validation", cause: err, } } } if _, ok := Priority_name[int32(m.GetPriority())]; !ok { err := PeerValidationError{ field: "Priority", reason: "value must be one of the defined enum values", } if !all { return err } errors = append(errors, err) } if len(m.GetPieces()) > 0 { if len(m.GetPieces()) < 1 { err := PeerValidationError{ field: "Pieces", reason: "value must contain at least 1 item(s)", } if !all { return err } errors = append(errors, err) } for idx, item := range m.GetPieces() { _, _ = idx, item if all { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { errors = append(errors, PeerValidationError{ field: fmt.Sprintf("Pieces[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { errors = append(errors, PeerValidationError{ field: fmt.Sprintf("Pieces[%v]", idx), reason: "embedded message failed validation", cause: err, }) } } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return PeerValidationError{ field: fmt.Sprintf("Pieces[%v]", idx), reason: "embedded message failed validation", cause: err, } } } } } if m.GetCost() == nil { err := PeerValidationError{ field: "Cost", reason: "value is required", } if !all { return err } errors = append(errors, err) } if utf8.RuneCountInString(m.GetState()) < 1 { err := PeerValidationError{ field: "State", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if m.GetTask() == nil { err := PeerValidationError{ field: "Task", reason: "value is required", } if !all { return err } errors = append(errors, err) } if all { switch v := interface{}(m.GetTask()).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { errors = append(errors, PeerValidationError{ field: "Task", reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { errors = append(errors, PeerValidationError{ field: "Task", reason: "embedded message failed validation", cause: err, }) } } } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return PeerValidationError{ field: "Task", reason: "embedded message failed validation", cause: err, } } } if m.GetHost() == nil { err := PeerValidationError{ field: "Host", reason: "value is required", } if !all { return err } errors = append(errors, err) } if all { switch v := interface{}(m.GetHost()).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { errors = append(errors, PeerValidationError{ field: "Host", reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { errors = append(errors, PeerValidationError{ field: "Host", reason: "embedded message failed validation", cause: err, }) } } } else if v, ok := interface{}(m.GetHost()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return PeerValidationError{ field: "Host", reason: "embedded message failed validation", cause: err, } } } // no validation rules for NeedBackToSource if m.GetCreatedAt() == nil { err := PeerValidationError{ field: "CreatedAt", reason: "value is required", } if !all { return err } errors = append(errors, err) } if m.GetUpdatedAt() == nil { err := PeerValidationError{ field: "UpdatedAt", reason: "value is required", } if !all { return err } errors = append(errors, err) } if len(errors) > 0 { return PeerMultiError(errors) } return nil } // PeerMultiError is an error wrapping multiple validation errors returned by // Peer.ValidateAll() if the designated constraints aren't met. type PeerMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m PeerMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m PeerMultiError) AllErrors() []error { return m } // PeerValidationError is the validation error returned by Peer.Validate if the // designated constraints aren't met. type PeerValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e PeerValidationError) Field() string { return e.field } // Reason function returns reason value. func (e PeerValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e PeerValidationError) Cause() error { return e.cause } // Key function returns key value. func (e PeerValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e PeerValidationError) ErrorName() string { return "PeerValidationError" } // Error satisfies the builtin error interface func (e PeerValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sPeer.%s: %s%s", key, e.field, e.reason, cause) } var _ error = PeerValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = PeerValidationError{} // Validate checks the field values on Task with the rules defined in the proto // definition for this message. If any rules are violated, the first error // encountered is returned, or nil if there are no violations. func (m *Task) Validate() error { return m.validate(false) } // ValidateAll checks the field values on Task with the rules defined in the // proto definition for this message. If any rules are violated, the result is // a list of violation errors wrapped in TaskMultiError, or nil if none found. func (m *Task) ValidateAll() error { return m.validate(true) } func (m *Task) validate(all bool) error { if m == nil { return nil } var errors []error if utf8.RuneCountInString(m.GetId()) < 1 { err := TaskValidationError{ field: "Id", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if _, ok := _Task_Type_InLookup[m.GetType()]; !ok { err := TaskValidationError{ field: "Type", reason: "value must be in list [normal super strong weak]", } if !all { return err } errors = append(errors, err) } if uri, err := url.Parse(m.GetUrl()); err != nil { err = TaskValidationError{ field: "Url", reason: "value must be a valid URI", cause: err, } if !all { return err } errors = append(errors, err) } else if !uri.IsAbs() { err := TaskValidationError{ field: "Url", reason: "value must be absolute", } if !all { return err } errors = append(errors, err) } if m.GetDigest() != "" { if !_Task_Digest_Pattern.MatchString(m.GetDigest()) { err := TaskValidationError{ field: "Digest", reason: "value does not match regex pattern \"^(md5)|(sha256):[A-Fa-f0-9]+$\"", } if !all { return err } errors = append(errors, err) } } // no validation rules for Tag // no validation rules for Application // no validation rules for Header if m.GetPieceLength() < 1 { err := TaskValidationError{ field: "PieceLength", reason: "value must be greater than or equal to 1", } if !all { return err } errors = append(errors, err) } if m.GetContentLength() < 1 { err := TaskValidationError{ field: "ContentLength", reason: "value must be greater than or equal to 1", } if !all { return err } errors = append(errors, err) } if m.GetPieceCount() < 0 { err := TaskValidationError{ field: "PieceCount", reason: "value must be greater than or equal to 0", } if !all { return err } errors = append(errors, err) } // no validation rules for SizeScope if len(m.GetPieces()) > 0 { if len(m.GetPieces()) < 1 { err := TaskValidationError{ field: "Pieces", reason: "value must contain at least 1 item(s)", } if !all { return err } errors = append(errors, err) } for idx, item := range m.GetPieces() { _, _ = idx, item if all { switch v := interface{}(item).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { errors = append(errors, TaskValidationError{ field: fmt.Sprintf("Pieces[%v]", idx), reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { errors = append(errors, TaskValidationError{ field: fmt.Sprintf("Pieces[%v]", idx), reason: "embedded message failed validation", cause: err, }) } } } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TaskValidationError{ field: fmt.Sprintf("Pieces[%v]", idx), reason: "embedded message failed validation", cause: err, } } } } } if utf8.RuneCountInString(m.GetState()) < 1 { err := TaskValidationError{ field: "State", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if m.GetPeerCount() < 0 { err := TaskValidationError{ field: "PeerCount", reason: "value must be greater than or equal to 0", } if !all { return err } errors = append(errors, err) } // no validation rules for HasAvailablePeer if m.GetCreatedAt() == nil { err := TaskValidationError{ field: "CreatedAt", reason: "value is required", } if !all { return err } errors = append(errors, err) } if m.GetUpdatedAt() == nil { err := TaskValidationError{ field: "UpdatedAt", reason: "value is required", } if !all { return err } errors = append(errors, err) } if len(errors) > 0 { return TaskMultiError(errors) } return nil } // TaskMultiError is an error wrapping multiple validation errors returned by // Task.ValidateAll() if the designated constraints aren't met. type TaskMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m TaskMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m TaskMultiError) AllErrors() []error { return m } // TaskValidationError is the validation error returned by Task.Validate if the // designated constraints aren't met. type TaskValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e TaskValidationError) Field() string { return e.field } // Reason function returns reason value. func (e TaskValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e TaskValidationError) Cause() error { return e.cause } // Key function returns key value. func (e TaskValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e TaskValidationError) ErrorName() string { return "TaskValidationError" } // Error satisfies the builtin error interface func (e TaskValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sTask.%s: %s%s", key, e.field, e.reason, cause) } var _ error = TaskValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = TaskValidationError{} var _Task_Type_InLookup = map[string]struct{}{ "normal": {}, "super": {}, "strong": {}, "weak": {}, } var _Task_Digest_Pattern = regexp.MustCompile("^(md5)|(sha256):[A-Fa-f0-9]+$") // Validate checks the field values on Host with the rules defined in the proto // definition for this message. If any rules are violated, the first error // encountered is returned, or nil if there are no violations. func (m *Host) Validate() error { return m.validate(false) } // ValidateAll checks the field values on Host with the rules defined in the // proto definition for this message. If any rules are violated, the result is // a list of violation errors wrapped in HostMultiError, or nil if none found. func (m *Host) ValidateAll() error { return m.validate(true) } func (m *Host) validate(all bool) error { if m == nil { return nil } var errors []error if utf8.RuneCountInString(m.GetId()) < 1 { err := HostValidationError{ field: "Id", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if utf8.RuneCountInString(m.GetIp()) < 1 { err := HostValidationError{ field: "Ip", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if err := m._validateHostname(m.GetHostname()); err != nil { err = HostValidationError{ field: "Hostname", reason: "value must be a valid hostname", cause: err, } if !all { return err } errors = append(errors, err) } if val := m.GetPort(); val < 1024 || val >= 65535 { err := HostValidationError{ field: "Port", reason: "value must be inside range [1024, 65535)", } if !all { return err } errors = append(errors, err) } if val := m.GetDownloadPort(); val < 1024 || val >= 65535 { err := HostValidationError{ field: "DownloadPort", reason: "value must be inside range [1024, 65535)", } if !all { return err } errors = append(errors, err) } if m.GetSecurityDomain() != "" { if utf8.RuneCountInString(m.GetSecurityDomain()) < 1 { err := HostValidationError{ field: "SecurityDomain", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } } if m.GetLocation() != "" { if utf8.RuneCountInString(m.GetLocation()) < 1 { err := HostValidationError{ field: "Location", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } } if m.GetIdc() != "" { if utf8.RuneCountInString(m.GetIdc()) < 1 { err := HostValidationError{ field: "Idc", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } } if len(errors) > 0 { return HostMultiError(errors) } return nil } func (m *Host) _validateHostname(host string) error { s := strings.ToLower(strings.TrimSuffix(host, ".")) if len(host) > 253 { return errors.New("hostname cannot exceed 253 characters") } for _, part := range strings.Split(s, ".") { if l := len(part); l == 0 || l > 63 { return errors.New("hostname part must be non-empty and cannot exceed 63 characters") } if part[0] == '-' { return errors.New("hostname parts cannot begin with hyphens") } if part[len(part)-1] == '-' { return errors.New("hostname parts cannot end with hyphens") } for _, r := range part { if (r < 'a' || r > 'z') && (r < '0' || r > '9') && r != '-' { return fmt.Errorf("hostname parts can only contain alphanumeric characters or hyphens, got %q", string(r)) } } } return nil } // HostMultiError is an error wrapping multiple validation errors returned by // Host.ValidateAll() if the designated constraints aren't met. type HostMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m HostMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m HostMultiError) AllErrors() []error { return m } // HostValidationError is the validation error returned by Host.Validate if the // designated constraints aren't met. type HostValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e HostValidationError) Field() string { return e.field } // Reason function returns reason value. func (e HostValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e HostValidationError) Cause() error { return e.cause } // Key function returns key value. func (e HostValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e HostValidationError) ErrorName() string { return "HostValidationError" } // Error satisfies the builtin error interface func (e HostValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sHost.%s: %s%s", key, e.field, e.reason, cause) } var _ error = HostValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = HostValidationError{} // Validate checks the field values on Range with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. func (m *Range) Validate() error { return m.validate(false) } // ValidateAll checks the field values on Range with the rules defined in the // proto definition for this message. If any rules are violated, the result is // a list of violation errors wrapped in RangeMultiError, or nil if none found. func (m *Range) ValidateAll() error { return m.validate(true) } func (m *Range) validate(all bool) error { if m == nil { return nil } var errors []error // no validation rules for Start // no validation rules for Length if len(errors) > 0 { return RangeMultiError(errors) } return nil } // RangeMultiError is an error wrapping multiple validation errors returned by // Range.ValidateAll() if the designated constraints aren't met. type RangeMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m RangeMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m RangeMultiError) AllErrors() []error { return m } // RangeValidationError is the validation error returned by Range.Validate if // the designated constraints aren't met. type RangeValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e RangeValidationError) Field() string { return e.field } // Reason function returns reason value. func (e RangeValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e RangeValidationError) Cause() error { return e.cause } // Key function returns key value. func (e RangeValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e RangeValidationError) ErrorName() string { return "RangeValidationError" } // Error satisfies the builtin error interface func (e RangeValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sRange.%s: %s%s", key, e.field, e.reason, cause) } var _ error = RangeValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = RangeValidationError{} // Validate checks the field values on Download with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. func (m *Download) Validate() error { return m.validate(false) } // ValidateAll checks the field values on Download with the rules defined in // the proto definition for this message. If any rules are violated, the // result is a list of violation errors wrapped in DownloadMultiError, or nil // if none found. func (m *Download) ValidateAll() error { return m.validate(true) } func (m *Download) validate(all bool) error { if m == nil { return nil } var errors []error if uri, err := url.Parse(m.GetUrl()); err != nil { err = DownloadValidationError{ field: "Url", reason: "value must be a valid URI", cause: err, } if !all { return err } errors = append(errors, err) } else if !uri.IsAbs() { err := DownloadValidationError{ field: "Url", reason: "value must be absolute", } if !all { return err } errors = append(errors, err) } if m.GetDigest() != "" { if !_Download_Digest_Pattern.MatchString(m.GetDigest()) { err := DownloadValidationError{ field: "Digest", reason: "value does not match regex pattern \"^(md5)|(sha256):[A-Fa-f0-9]+$\"", } if !all { return err } errors = append(errors, err) } } if all { switch v := interface{}(m.GetRange()).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { errors = append(errors, DownloadValidationError{ field: "Range", reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { errors = append(errors, DownloadValidationError{ field: "Range", reason: "embedded message failed validation", cause: err, }) } } } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DownloadValidationError{ field: "Range", reason: "embedded message failed validation", cause: err, } } } if _, ok := TaskType_name[int32(m.GetType())]; !ok { err := DownloadValidationError{ field: "Type", reason: "value must be one of the defined enum values", } if !all { return err } errors = append(errors, err) } // no validation rules for Tag // no validation rules for Application if _, ok := Priority_name[int32(m.GetPriority())]; !ok { err := DownloadValidationError{ field: "Priority", reason: "value must be one of the defined enum values", } if !all { return err } errors = append(errors, err) } // no validation rules for Header if m.GetPieceLength() < 1 { err := DownloadValidationError{ field: "PieceLength", reason: "value must be greater than or equal to 1", } if !all { return err } errors = append(errors, err) } if m.GetOutputPath() != "" { if utf8.RuneCountInString(m.GetOutputPath()) < 1 { err := DownloadValidationError{ field: "OutputPath", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } } if m.GetTimeout() == nil { err := DownloadValidationError{ field: "Timeout", reason: "value is required", } if !all { return err } errors = append(errors, err) } if m.GetDownloadRateLimit() < 0 { err := DownloadValidationError{ field: "DownloadRateLimit", reason: "value must be greater than or equal to 0", } if !all { return err } errors = append(errors, err) } // no validation rules for NeedBackToSource if len(errors) > 0 { return DownloadMultiError(errors) } return nil } // DownloadMultiError is an error wrapping multiple validation errors returned // by Download.ValidateAll() if the designated constraints aren't met. type DownloadMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m DownloadMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m DownloadMultiError) AllErrors() []error { return m } // DownloadValidationError is the validation error returned by // Download.Validate if the designated constraints aren't met. type DownloadValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e DownloadValidationError) Field() string { return e.field } // Reason function returns reason value. func (e DownloadValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e DownloadValidationError) Cause() error { return e.cause } // Key function returns key value. func (e DownloadValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e DownloadValidationError) ErrorName() string { return "DownloadValidationError" } // Error satisfies the builtin error interface func (e DownloadValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sDownload.%s: %s%s", key, e.field, e.reason, cause) } var _ error = DownloadValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = DownloadValidationError{} var _Download_Digest_Pattern = regexp.MustCompile("^(md5)|(sha256):[A-Fa-f0-9]+$") // Validate checks the field values on Piece with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. func (m *Piece) Validate() error { return m.validate(false) } // ValidateAll checks the field values on Piece with the rules defined in the // proto definition for this message. If any rules are violated, the result is // a list of violation errors wrapped in PieceMultiError, or nil if none found. func (m *Piece) ValidateAll() error { return m.validate(true) } func (m *Piece) validate(all bool) error { if m == nil { return nil } var errors []error if m.GetNumber() < 0 { err := PieceValidationError{ field: "Number", reason: "value must be greater than or equal to 0", } if !all { return err } errors = append(errors, err) } if m.GetParentId() != "" { if utf8.RuneCountInString(m.GetParentId()) < 1 { err := PieceValidationError{ field: "ParentId", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } } if m.GetOffset() < 0 { err := PieceValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } if !all { return err } errors = append(errors, err) } if m.GetLength() <= 0 { err := PieceValidationError{ field: "Length", reason: "value must be greater than 0", } if !all { return err } errors = append(errors, err) } if m.GetDigest() != "" { if !_Piece_Digest_Pattern.MatchString(m.GetDigest()) { err := PieceValidationError{ field: "Digest", reason: "value does not match regex pattern \"^(md5)|(sha256):[A-Fa-f0-9]+$\"", } if !all { return err } errors = append(errors, err) } } // no validation rules for TrafficType if m.GetCost() == nil { err := PieceValidationError{ field: "Cost", reason: "value is required", } if !all { return err } errors = append(errors, err) } if m.GetCreatedAt() == nil { err := PieceValidationError{ field: "CreatedAt", reason: "value is required", } if !all { return err } errors = append(errors, err) } if len(errors) > 0 { return PieceMultiError(errors) } return nil } // PieceMultiError is an error wrapping multiple validation errors returned by // Piece.ValidateAll() if the designated constraints aren't met. type PieceMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m PieceMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m PieceMultiError) AllErrors() []error { return m } // PieceValidationError is the validation error returned by Piece.Validate if // the designated constraints aren't met. type PieceValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e PieceValidationError) Field() string { return e.field } // Reason function returns reason value. func (e PieceValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e PieceValidationError) Cause() error { return e.cause } // Key function returns key value. func (e PieceValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e PieceValidationError) ErrorName() string { return "PieceValidationError" } // Error satisfies the builtin error interface func (e PieceValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sPiece.%s: %s%s", key, e.field, e.reason, cause) } var _ error = PieceValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = PieceValidationError{} var _Piece_Digest_Pattern = regexp.MustCompile("^(md5)|(sha256):[A-Fa-f0-9]+$") // Validate checks the field values on ExtendAttribute with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. func (m *ExtendAttribute) Validate() error { return m.validate(false) } // ValidateAll checks the field values on ExtendAttribute with the rules // defined in the proto definition for this message. If any rules are // violated, the result is a list of violation errors wrapped in // ExtendAttributeMultiError, or nil if none found. func (m *ExtendAttribute) ValidateAll() error { return m.validate(true) } func (m *ExtendAttribute) validate(all bool) error { if m == nil { return nil } var errors []error // no validation rules for Header if val := m.GetStatusCode(); val < 100 || val >= 599 { err := ExtendAttributeValidationError{ field: "StatusCode", reason: "value must be inside range [100, 599)", } if !all { return err } errors = append(errors, err) } if utf8.RuneCountInString(m.GetStatus()) < 1 { err := ExtendAttributeValidationError{ field: "Status", reason: "value length must be at least 1 runes", } if !all { return err } errors = append(errors, err) } if len(errors) > 0 { return ExtendAttributeMultiError(errors) } return nil } // ExtendAttributeMultiError is an error wrapping multiple validation errors // returned by ExtendAttribute.ValidateAll() if the designated constraints // aren't met. type ExtendAttributeMultiError []error // Error returns a concatenation of all the error messages it wraps. func (m ExtendAttributeMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) } return strings.Join(msgs, "; ") } // AllErrors returns a list of validation violation errors. func (m ExtendAttributeMultiError) AllErrors() []error { return m } // ExtendAttributeValidationError is the validation error returned by // ExtendAttribute.Validate if the designated constraints aren't met. type ExtendAttributeValidationError struct { field string reason string cause error key bool } // Field function returns field value. func (e ExtendAttributeValidationError) Field() string { return e.field } // Reason function returns reason value. func (e ExtendAttributeValidationError) Reason() string { return e.reason } // Cause function returns cause value. func (e ExtendAttributeValidationError) Cause() error { return e.cause } // Key function returns key value. func (e ExtendAttributeValidationError) Key() bool { return e.key } // ErrorName returns error name. func (e ExtendAttributeValidationError) ErrorName() string { return "ExtendAttributeValidationError" } // Error satisfies the builtin error interface func (e ExtendAttributeValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) } key := "" if e.key { key = "key for " } return fmt.Sprintf( "invalid %sExtendAttribute.%s: %s%s", key, e.field, e.reason, cause) } var _ error = ExtendAttributeValidationError{} var _ interface { Field() string Reason() string Key() bool Cause() error ErrorName() string } = ExtendAttributeValidationError{}