Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/util/messages/messages.go
akuma06 ee0e611d11 Replaced hardcoded message errors in email validation
Added some translation string
Improved the way the emails and usernames are checked (less conditions)
Minor fix on clear error functions
2017-06-10 00:58:34 +02:00

152 lignes
4,6 Kio
Go

package Messages
import (
"fmt"
"net/http"
"github.com/NyaaPantsu/nyaa/util/publicSettings"
"github.com/gorilla/context"
"github.com/nicksnyder/go-i18n/i18n"
)
// MessagesKey : use for context
const MessagesKey = "nyaapantsu.messages"
// Messages struct
type Messages struct {
Errors map[string][]string
Infos map[string][]string
r *http.Request
T i18n.TranslateFunc
}
// GetMessages : Initialize or return the messages object from context
func GetMessages(r *http.Request) *Messages {
if rv := context.Get(r, MessagesKey); rv != nil {
mes := rv.(*Messages)
T, _ := publicSettings.GetTfuncAndLanguageFromRequest(r)
mes.T = T
mes.r = r
return mes
}
context.Set(r, MessagesKey, &Messages{})
T, _ := publicSettings.GetTfuncAndLanguageFromRequest(r)
return &Messages{make(map[string][]string), make(map[string][]string), r, T}
}
// AddError : Add an error in category name with message msg
func (mes *Messages) AddError(name string, msg string) {
if mes.Errors == nil {
mes.Errors = make(map[string][]string)
}
mes.Errors[name] = append(mes.Errors[name], msg)
mes.setMessagesInContext()
}
// AddErrorf : Add an error in category name with message msg formatted with args
func (mes *Messages) AddErrorf(name string, msg string, args ...interface{}) {
mes.AddError(name, fmt.Sprintf(msg, args...))
}
// AddErrorTf : Add an error in category name with translation string id formatted with args
func (mes *Messages) AddErrorTf(name string, id string, args ...interface{}) {
mes.AddErrorf(name, mes.T(id), args...)
}
// AddErrorT : Add an error in category name with translation string id
func (mes *Messages) AddErrorT(name string, id string) {
mes.AddError(name, mes.T(id))
}
// ImportFromError : Add an error in category name with message msg imported from type error
func (mes *Messages) ImportFromError(name string, err error) {
mes.AddError(name, err.Error())
}
// AddInfo : Add an info in category name with message msg
func (mes *Messages) AddInfo(name string, msg string) {
if mes.Infos == nil {
mes.Infos = make(map[string][]string)
}
mes.Infos[name] = append(mes.Infos[name], msg)
mes.setMessagesInContext()
}
// AddInfof : Add an info in category name with message msg formatted with args
func (mes *Messages) AddInfof(name string, msg string, args ...interface{}) {
mes.AddInfo(name, fmt.Sprintf(msg, args...))
}
// AddInfoTf : Add an info in category name with translation string id formatted with args
func (mes *Messages) AddInfoTf(name string, id string, args ...interface{}) {
mes.AddInfof(name, mes.T(id), args...)
}
// AddInfoT : Add an info in category name with translation string id
func (mes *Messages) AddInfoT(name string, id string) {
mes.AddInfo(name, mes.T(id))
}
// ClearAllErrors : Erase all errors in messages
func (mes *Messages) ClearAllErrors() {
mes.Errors = nil
mes.setMessagesInContext()
}
// ClearAllInfos : Erase all infos in messages
func (mes *Messages) ClearAllInfos() {
mes.Infos = nil
mes.setMessagesInContext()
}
// ClearErrors : Erase all errors in messages
func (mes *Messages) ClearErrors(name string) {
mes.Errors[name] = nil
mes.setMessagesInContext()
}
// ClearInfos : Erase all infos in messages
func (mes *Messages) ClearInfos(name string) {
mes.Infos[name] = nil
mes.setMessagesInContext()
}
// GetAllErrors : Get all errors
func (mes *Messages) GetAllErrors() map[string][]string {
mes = GetMessages(mes.r) // We need to look if any new errors from other functions has updated context
return mes.Errors
}
// GetErrors : Get all errors in category name
func (mes *Messages) GetErrors(name string) []string {
mes = GetMessages(mes.r) // We need to look if any new errors from other functions has updated context
return mes.Errors[name]
}
// GetAllInfos : Get all infos
func (mes *Messages) GetAllInfos() map[string][]string {
mes = GetMessages(mes.r) // We need to look if any new errors from other functions has updated context
return mes.Infos
}
// GetInfos : Get all infos in category name
func (mes *Messages) GetInfos(name string) []string {
mes = GetMessages(mes.r) // We need to look if any new errors from other functions has updated context
return mes.Infos[name]
}
// HasErrors : Check if there are errors
func (mes *Messages) HasErrors() bool {
mes = GetMessages(mes.r) // We need to look if any new errors from other functions has updated context
return len(mes.Errors) > 0
}
// HasInfos : Check if there are infos
func (mes *Messages) HasInfos() bool {
mes = GetMessages(mes.r) // We need to look if any new errors from other functions has updated context
return len(mes.Infos) > 0
}
func (mes *Messages) setMessagesInContext() {
context.Set(mes.r, MessagesKey, mes)
}