/
uzer_007
/
Rixea
Обзор
Документация
Войти
/
uzer_007
/
Rixea
Код
Запросы
0
Задачи
Вики
Пакеты
5
Релизы
2
CI/CD
Аналитика
Безопасность
master
modules/binding/errors.go
161 строка
5 KB
uzer_007
feat: первая версия Rixea
02 авг 2026, 22:16
02 авг 2026, 22:16
d4f7504
Код
Авторство
О чём код?
// Copyright 2014 Martini Authors // Copyright 2014 The Macaron Authors // Copyright 2026 Uzer_007. All rights reserved. // SPDX-License-Identifier: Apache-2.0 // // Licensed under the Apache License, Version 2.0 (the "License"): you may // not use this file except in compliance with the License. You may obtain // a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. package binding const ( // Type mismatch errors. ErrContentType = "ContentTypeError" ErrDeserialization = "DeserializationError" ErrIntegerType = "IntegerTypeError" ErrBooleanType = "BooleanTypeError" ErrFloatType = "FloatTypeError" // Validation errors. ErrRequired = "RequiredError" ErrAlphaDash = "AlphaDashError" ErrAlphaDashDot = "AlphaDashDotError" ErrSize = "SizeError" ErrMinSize = "MinSizeError" ErrMaxSize = "MaxSizeError" ErrRange = "RangeError" ErrEmail = "EmailError" ErrURL = "UrlError" ErrIn = "InError" ErrNotIn = "NotInError" ErrInclude = "IncludeError" ErrExclude = "ExcludeError" ErrDefault = "DefaultError" ) type ( // Errors may be generated during deserialization, binding, // or validation. This type is mapped to the context so you // can inject it into your own handlers and use it in your // application if you want all your errors to look the same. Errors []Error Error struct { // An error supports zero or more field names, because an // error can morph three ways: (1) it can indicate something // wrong with the request as a whole, (2) it can point to a // specific problem with a particular input field, or (3) it // can span multiple related input fields. FieldNames []string `json:"fieldNames,omitempty"` // The classification is like an error code, convenient to // use when processing or categorizing an error programmatically. // It may also be called the "kind" of error. Classification string `json:"classification,omitempty"` // Message should be human-readable and detailed enough to // pinpoint and resolve the problem, but it should be brief. For // example, a payload of 100 objects in a JSON array might have // an error in the 41st object. The message should help the // end user find and fix the error with their request. Message string `json:"message,omitempty"` } ) // Add adds an error associated with the fields indicated // by fieldNames, with the given classification and message. func (e *Errors) Add(fieldNames []string, classification, message string) { *e = append(*e, Error{ FieldNames: fieldNames, Classification: classification, Message: message, }) } // Len returns the number of errors. func (e *Errors) Len() int { return len(*e) } // Has determines whether an Errors slice has an Error with // a given classification in it; it does not search on messages // or field names. func (e *Errors) Has(class string) bool { for _, err := range *e { if err.Kind() == class { return true } } return false } /* // WithClass gets a copy of errors that are classified by the // the given classification. func (e *Errors) WithClass(classification string) Errors { var errs Errors for _, err := range *e { if err.Kind() == classification { errs = append(errs, err) } } return errs } // ForField gets a copy of errors that are associated with the // field by the given name. func (e *Errors) ForField(name string) Errors { var errs Errors for _, err := range *e { for _, fieldName := range err.Fields() { if fieldName == name { errs = append(errs, err) break } } } return errs } // Get gets errors of a particular class for the specified // field name. func (e *Errors) Get(class, fieldName string) Errors { var errs Errors for _, err := range *e { if err.Kind() == class { for _, nameOfField := range err.Fields() { if nameOfField == fieldName { errs = append(errs, err) break } } } } return errs } */ // Fields returns the list of field names this error is // associated with. func (e Error) Fields() []string { return e.FieldNames } // Kind returns this error's classification. func (e Error) Kind() string { return e.Classification } // Error returns this error's message. func (e Error) Error() string { return e.Message }