codes

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2026 License: MIT Imports: 4 Imported by: 2

README

codes — central registry of error & success codes

import "github.com/downsized-devs/sdk-go/codes"

Stability: Stable — see STABILITY.md

Single source of truth for the numeric codes that flow through errors and into HTTP response bodies. Codes are uint32s grouped into reserved ranges so SDK packages can add codes without colliding.

Features

  • Code type (alias for uint32)
  • AppMessage map type for bilingual messages
  • DisplayMessage type used by HTTP responses
  • Compile(c Code, lang string) DisplayMessage — look up the human-readable text
  • Reserved code ranges enforced by convention (see codes/codes.go)

Code ranges

10   – 99    Success codes
1000 – 1299  Common / generic errors
1300 – 1399  SQL errors
1400 – 1499  NoSQL errors
1500 – 1599  Third-party / client errors
1600 – 1699  File I/O errors
1700 – 1799  Auth errors
1800 – 1899  (reserved)

When adding a new SDK group, append the next free 100-block at the bottom of codes.go and update this table.

Installation

go get github.com/downsized-devs/sdk-go/codes

Quick Start

import (
    "github.com/downsized-devs/sdk-go/codes"
    "github.com/downsized-devs/sdk-go/errors"
)

err := errors.NewWithCode(codes.CodeBadRequest, "missing field: %s", "email")
msg := errors.Compile(err, "en")
// msg.StatusCode == 400, msg.Body == "missing field: email"

API Reference

Symbol Purpose
Code uint32 alias.
AppMessage map[Code]Message — registry of messages per code.
DisplayMessage {StatusCode int, Title, Body string} used in HTTP responses.
Compile(c, lang) DisplayMessage Build a display message in the chosen language.
NoCode Sentinel meaning "no code attached".
ErrorMessages, ApplicationMessages Pre-populated maps for SDK codes.

Examples

Adding a new code
// codes/codes.go
const (
    CodeMyNewThing Code = 2000 // first code in a new reserved block
)

// codes/code_messages.go — add the human messages
var newThingMessages = AppMessage{
    CodeMyNewThing: {
        StatusCode: http.StatusBadRequest,
        TitleEn:    "My New Thing",
        BodyEn:     "...",
        TitleId:    "...",
        BodyId:     "...",
    },
}

Register the map by adding it to the package's initial set so Compile can find it.

Error Handling

Compile falls back to a generic "internal error" DisplayMessage when the code is unknown. Never panic on lookup.

Dependencies

Testing

go test ./codes/...

Contributing

See CONTRIBUTING.md. Never re-number an existing code — downstream services and clients persist them.

Documentation

Index

Constants

View Source
const (
	// Success codes
	CodeSuccess = Code(iota + 10)
	CodeAccepted
)
View Source
const (
	// common errors
	CodeInvalidValue = Code(iota + 1000)
	CodeContextDeadlineExceeded
	CodeContextCanceled
	CodeInternalServerError
	CodeServerUnavailable
	CodeNotImplemented
	CodeBadRequest
	CodeNotFound
	CodeConflict
	CodeUnauthorized
	CodeTooManyRequest
	CodeMarshal
	CodeUnmarshal
)
View Source
const (
	// SQL errors
	CodeSQL = Code(iota + 1300)
	CodeSQLInit
	CodeSQLBuilder
	CodeSQLTxBegin
	CodeSQLTxCommit
	CodeSQLTxRollback
	CodeSQLTxExec
	CodeSQLPrepareStmt
	CodeSQLRead
	CodeSQLRowScan
	CodeSQLRecordDoesNotExist
	CodeSQLUniqueConstraint
	CodeSQLConflict
	CodeSQLNoRowsAffected
)
View Source
const (
	// NoSQL errors
	CodeNoSQL = Code(iota + 1400)
	CodeNoSQLClose
	CodeNoSQLRead
	CodeNoSQLDecode
	CodeNoSQLInsert
	CodeNoSQLUpdate
)
View Source
const (
	// third party/client errors
	CodeClient = Code(iota + 1500)
	CodeClientMarshal
	CodeClientUnmarshal
	CodeClientErrorOnRequest
	CodeClientErrorOnReadBody
)
View Source
const (
	// general file I/O errors
	CodeFile = Code(iota + 1600)
	CodeFilePathOpenFailed
	CodeFileTooBig
)
View Source
const (
	// auth errors
	CodeAuth = Code(iota + 1700)
	CodeAuthRefreshTokenExpired
	CodeAuthAccessTokenExpired
	CodeAuthFailure
	CodeAuthInvalidToken
	CodeForbidden
	CodeAuthRevokeRefreshTokenFailed
)
View Source
const (
	// JSON encoding errors
	CodeJSONSchema = Code(iota + 1900)
	CodeJSONSchemaInvalid
	CodeJSONSchemaNotFound
	CodeJSONStructInvalid
	CodeJSONRawInvalid
	CodeJSONValidationError
	CodeJSONMarshalError
	CodeJSONUnmarshalError
)
View Source
const (
	// XML encoding errors
	CodeXMLSchema = Code(iota + 1950)
	CodeXMLMarshalError
	CodeXMLUnmarshalError
)
View Source
const (
	// Excel Errors
	CodeExcelFailedParsing = Code(iota + 2000)
	CodeExcelInvalidType
	CodeExcelFailedToSaveFile
)
View Source
const (
	// Storage Errors
	CodeStorage = Code(iota + 2100)
	CodeStorageS3Upload
	CodeStorageS3Download
	CodeStorageS3Delete
)
View Source
const (
	// data conversion error
	CodeConvert = Code(iota + 2200)
	CodeConvertTime
)
View Source
const (
	// Reset Password Error
	CodePasswordDoesNotMatch = Code(iota + 3800)
	CodeFailedResetPassword
	CodeResetPasswordTokenExpired
	CodeEmptyEmail
	CodeInvalidEmail
	CodeSameCurrentPassword
	CodePasswordIsNotFilled
	CodeResetPasswordTokenInvalid
	CodePasswordIsWeak
)
View Source
const (
	// Redis Cache Error
	CodeRedisGet = Code(iota + 3900)
	CodeRedisSetex
	CodeFailedLock
	CodeFailedReleaseLock
	CodeLockExist
	CodeCacheMarshal
	CodeCacheUnmarshal
	CodeCacheGetSimpleKey
	CodeCacheSetSimpleKey
	CodeCacheDeleteSimpleKey
	CodeCacheGetHashKey
	CodeCacheSetHashKey
	CodeCacheDeleteHashKey
	CodeCacheSetExpiration
	CodeCacheDecode
	CodeCacheLockNotAcquired
	CodeCacheInvalidCastType
	CodeCacheNotFound
)
View Source
const (
	CodeErrorHttpNewRequest = Code(iota + 4000)
	CodeErrorHttpDo
	CodeErrorIoutilReadAll
	CodeHttpUnmarshal
	CodeHttpMarshal
)
View Source
const (
	// Code Go-html template errors
	CodeExecuteTemplateFailed = Code(iota + 4200)
	CodeConvertMJMLToHTMLFailed
	CodePDFToJSONFailed
	CodePDFGeneratorFromJSONFailed
	CodeGeneratePDFFailed
	CodeParseHTMlTemplateFailed
)
View Source
const (
	// Security Error
	CodeErrorSecurityInvalidChipper = Code(iota + 4700)
)
View Source
const (
	// Slack Alert Error
	CodeErrorSlackAlert = Code(iota + 4600)
)
View Source
const (
	// Timelib error
	CodeErrorTimelib = Code(iota + 4800)
)
View Source
const (
	// Code Feature Flag Retriever Errors
	CodeFeatureFlagRetrieverFailed = Code(iota + 4100)
)
View Source
const (
	// Image Upload Error
	CodeImageUploadSizeTooBig = Code(iota + 5100)
)
View Source
const (
	// SES Errors
	CodeSendEmailFailed = Code(iota + 3700)
)
View Source
const (
	// Translator Error
	CodeTranslatorError = Code(iota + 5000)
)

Variables

View Source
var (
	// 4xx
	ErrMsgBadRequest = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusBadRequest),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusBadRequest),
		BodyEN:     "Invalid input. Please validate your input.",
		BodyID:     "Input data tidak valid. Mohon cek kembali input data anda.",
	}
	ErrMsgUnauthorized = Message{
		StatusCode: http.StatusUnauthorized,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusUnauthorized),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusUnauthorized),
		BodyEN:     "Unauthorized access. You are not authorized to access this resource.",
		BodyID:     "Akses ditolak. Anda tidak memiliki izin untuk mengakses laman ini.",
	}
	ErrMsgInvalidToken = Message{
		StatusCode: http.StatusUnauthorized,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusUnauthorized),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusUnauthorized),
		BodyEN:     "Invalid token. Please renew your session by reloading.",
		BodyID:     "Token tidak valid. Mohon perbarui sesi dengan memuat ulang laman.",
	}
	ErrMsgRefreshTokenExpired = Message{
		StatusCode: http.StatusUnauthorized,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusUnauthorized),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusUnauthorized),
		BodyEN:     "Session refresh token has expired. Please renew your session by reloading.",
		BodyID:     "Token pembaruan sudah tidak berlaku. Mohon perbarui sesi dengan memuat ulang laman.",
	}
	ErrMsgAccessTokenExpired = Message{
		StatusCode: http.StatusUnauthorized,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusUnauthorized),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusUnauthorized),
		BodyEN:     "Session access token has expired. Please renew your session by reloading.",
		BodyID:     "Token akses sudah tidak berlaku. Mohon perbarui sesi dengan memuat ulang laman.",
	}
	ErrMsgForbidden = Message{
		StatusCode: http.StatusForbidden,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusForbidden),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusForbidden),
		BodyEN:     "Forbidden. You don't have permission to access this resource.",
		BodyID:     "Terlarang. Anda tidak memiliki izin untuk mengakses laman ini.",
	}
	ErrMsgRevokeRefreshTokenFailed = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusInternalServerError),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusInternalServerError),
		BodyEN:     "Failed revoking refresh token.",
		BodyID:     "Gagal mencabut refresh token.",
	}
	ErrMsgNotFound = Message{
		StatusCode: http.StatusNotFound,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusNotFound),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusNotFound),
		BodyEN:     "Record does not exist. Please validate your input or contact the administrator.",
		BodyID:     "Data tidak ditemukan. Mohon cek kembali input data anda atau hubungi administrator.",
	}
	ErrMsgContextTimeout = Message{
		StatusCode: http.StatusRequestTimeout,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusRequestTimeout),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusRequestTimeout),
		BodyEN:     "Request time has been exceeded.",
		BodyID:     "Waktu permintaan telah habis.",
	}
	ErrMsgConflict = Message{
		StatusCode: http.StatusConflict,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusConflict),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusConflict),
		BodyEN:     "Record has existed. Please validate your input or contact the administrator.",
		BodyID:     "Data sudah ada. Mohon cek kembali input data anda atau hubungi administrator.",
	}
	ErrMsgTooManyRequest = Message{
		StatusCode: http.StatusTooManyRequests,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusTooManyRequests),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusTooManyRequests),
		BodyEN:     "Too many requests. Please wait and try again after a few moments.",
		BodyID:     "Terlalu banyak permintaan. Mohon tunggu dan coba lagi setelah beberapa saat.",
	}

	// 5xx
	ErrMsgInternalServerError = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusInternalServerError),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusInternalServerError),
		BodyEN:     "Internal server error. Please contact the administrator.",
		BodyID:     "Terjadi kendala pada server. Mohon hubungi administrator.",
	}
	ErrMsgNotImplemented = Message{
		StatusCode: http.StatusNotImplemented,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusNotImplemented),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusNotImplemented),
		BodyEN:     "Not Implemented. Please contact the administrator.",
		BodyID:     "Layanan tidak tersedia. Mohon hubungi administrator.",
	}
	ErrMsgServiceUnavailable = Message{
		StatusCode: http.StatusServiceUnavailable,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusServiceUnavailable),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusServiceUnavailable),
		BodyEN:     "Service is unavailable. Please contact the administrator.",
		BodyID:     "Layanan sedang tidak tersedia. Mohon hubungi administrator.",
	}

	// Application specific messages
	ErrMsgResetPassword = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Failed To Reset Password",
		TitleID:    "Gagal Mengatur Ulang Kata Sandi",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgPasswordDoesNotMatch = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Entered Password Does Not Match",
		TitleID:    "Kata Sandi Yang Dimasukkan Salah",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgPasswordIsWeak = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Entered Password Combination Is Weak. Please Choose a Stronger Password",
		TitleID:    "Kombinasi Kata Sandi Yang Dimasukkan Lemah. Mohon Masukkan Password yang Lebih Kuat",
		BodyEN:     "Password must be at least 8 characters and include at least one uppercase letter, one lowercase letter, and one special character",
		BodyID:     "Kata sandi minimal 8 karakter dan harus mengandung minimal satu huruf besar, satu huruf kecil, dan satu karakter khusus",
	}

	ErrMsgResetTokenExpired = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Reset Password Token Has Expired",
		TitleID:    "Token Atur Ulang Kata Sandi Sudah Kadaluwarsa",
		BodyEN:     "Please create a new password reset request",
		BodyID:     "Silakan lakukan permintaan pengaturan ulang kata sandi kembali",
	}

	ErrMsgEmptyEmail = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Your Email is Empty",
		TitleID:    "Alamat Email Kosong",
		BodyEN:     "Please input your email",
		BodyID:     "Silakan isi email anda",
	}

	ErrMsgInvalidEmail = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Your Email is Invalid",
		TitleID:    "Alamat Email Tidak Valid",
		BodyEN:     "Please input a valid email",
		BodyID:     "Silakan isi email yang valid",
	}

	ErrMsgSameCurrentPassword = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Your new password cannot be the same with your current password",
		TitleID:    "Kata sandi baru anda tidak boleh sama dengan kata sandi saat ini",
		BodyEN:     "Please input a new password",
		BodyID:     "Silakan isi password yang baru",
	}

	ErrMsgResetTokenInvalid = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Reset Password Token Is Invalid",
		TitleID:    "Token Reset Pasword Tidak Valid",
		BodyEN:     "Please check your token",
		BodyID:     "Silakan periksa kembali token anda",
	}

	ErrMsgLockExist = Message{
		StatusCode: http.StatusTooManyRequests,
		TitleEN:    "Please wait for a while before requesting a new password",
		TitleID:    "Mohon tunggu sejenak sebelum meminta password baru",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgExecuteTemplateFailed = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    "Failed to execute golang template",
		TitleID:    "Gagal mengeksekusi template golang",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgConvertMJMLToHTMLFailed = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    "Failed to convert MJML to HTML",
		TitleID:    "Gagal mengkonversi MJML ke HTML",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgConvertGoTemplateToPDFFailed = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    "Failed to convert (html/template) to PDF",
		TitleID:    "Gagal mengkonversi (html/template) ke PDF",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgGenerateToPDFFailed = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    "Failed to generate file PDF",
		TitleID:    "Gagal menghasilkan file PDF",
		BodyEN:     "",
		BodyID:     "",
	}

	ErrMsgPasswordIsNotFilled = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Your new password and new confirmation password must be filled",
		TitleID:    "Kata sandi baru anda dan konfirmasi kata sandi baru harus diisi",
		BodyEN:     "Please input a new password and the confirmation password",
		BodyID:     "Silakan isi password dan konfirmasi password",
	}

	ErrMsgCodeParseHTMlTemplateFailed = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    "Failed to parse HTML Template",
		TitleID:    "Gagal menyusun template HTML",
		BodyEN:     "",
		BodyID:     "",
	}

	// Slack Alert
	ErrMsgSlackAlert = Message{
		StatusCode: http.StatusBadRequest,
		TitleEN:    "Slack alerting failed",
		TitleID:    "Peringatan slack gagal",
		BodyEN:     "",
		BodyID:     "",
	}

	// Translator Error
	ErrMsgTranslatorlib = Message{
		StatusCode: http.StatusInternalServerError,
		TitleEN:    "Translator error",
		TitleID:    "Translator mengalami kegagalan",
	}

	// content too large common error
	ErrMsgContentTooLarge = Message{
		StatusCode: http.StatusRequestEntityTooLarge,
		TitleEN:    "File Content Too Large",
		TitleID:    "Konten File Terlalu Besar",
		BodyEN:     "",
		BodyID:     "",
	}

	// Image Too Big (10MB) error
	ErrMsgImageTooBig = Message{
		StatusCode: http.StatusRequestEntityTooLarge,
		TitleEN:    "Maximum Image size is 10 MB",
		TitleID:    "Maksimum ukuran gambar adalah 10 MB",
	}
)

HTTP message

View Source
var (
	// Files upload
	SuccessDefault = Message{
		StatusCode: http.StatusOK,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusOK),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusOK),
		BodyEN:     requestSuccessfulBodyEN,
		BodyID:     requestSuccessfulBodyID,
	}
	SuccessAccepted = Message{
		StatusCode: http.StatusAccepted,
		TitleEN:    language.HTTPStatusText(language.English, http.StatusAccepted),
		TitleID:    language.HTTPStatusText(language.Indonesian, http.StatusAccepted),
		BodyEN:     requestAcceptedBodyEN,
		BodyID:     requestAcceptedBodyID,
	}

	// Image
	SuccessUploadImage = Message{
		StatusCode: http.StatusOK,
		TitleEN:    "Image Upload Success",
		TitleID:    "Anda Telah Berhasil Mengunggah Gambar",
		BodyEN:     "",
		BodyID:     "",
	}

	// Verif Token
	SuccessResetPassword = Message{
		StatusCode: http.StatusOK,
		TitleEN:    "Reset password success. Please check your email.",
		TitleID:    "Pengaturan ulang kata sandi berhasil. Silakan cek email anda.",
		BodyEN:     "",
		BodyID:     "",
	}
	SuccessInputResetPassword = Message{
		StatusCode: http.StatusOK,
		TitleEN:    "Access Granted",
		TitleID:    "Akses Diberikan",
		BodyEN:     "",
		BodyID:     "",
	}
)

Application message

View Source
var ApplicationMessages = AppMessage{

	CodeAccepted: SuccessAccepted,
}

Successful messages only

View Source
var ErrorMessages = AppMessage{
	CodeInvalidValue:            ErrMsgBadRequest,
	CodeContextDeadlineExceeded: ErrMsgContextTimeout,
	CodeContextCanceled:         ErrMsgContextTimeout,
	CodeInternalServerError:     ErrMsgInternalServerError,
	CodeServerUnavailable:       ErrMsgServiceUnavailable,
	CodeNotImplemented:          ErrMsgNotImplemented,
	CodeBadRequest:              ErrMsgBadRequest,
	CodeNotFound:                ErrMsgNotFound,
	CodeConflict:                ErrMsgConflict,
	CodeUnauthorized:            ErrMsgUnauthorized,
	CodeTooManyRequest:          ErrMsgTooManyRequest,
	CodeMarshal:                 ErrMsgBadRequest,
	CodeUnmarshal:               ErrMsgBadRequest,
	CodeJSONMarshalError:        ErrMsgBadRequest,
	CodeJSONUnmarshalError:      ErrMsgBadRequest,
	CodeJSONValidationError:     ErrMsgBadRequest,

	CodeSQL:                   ErrMsgInternalServerError,
	CodeSQLInit:               ErrMsgInternalServerError,
	CodeSQLBuilder:            ErrMsgInternalServerError,
	CodeSQLTxBegin:            ErrMsgInternalServerError,
	CodeSQLTxCommit:           ErrMsgInternalServerError,
	CodeSQLTxRollback:         ErrMsgInternalServerError,
	CodeSQLTxExec:             ErrMsgInternalServerError,
	CodeSQLPrepareStmt:        ErrMsgInternalServerError,
	CodeSQLRead:               ErrMsgInternalServerError,
	CodeSQLRowScan:            ErrMsgInternalServerError,
	CodeSQLRecordDoesNotExist: ErrMsgNotFound,
	CodeSQLUniqueConstraint:   ErrMsgConflict,
	CodeSQLConflict:           ErrMsgConflict,
	CodeSQLNoRowsAffected:     ErrMsgInternalServerError,

	CodeClient:                ErrMsgInternalServerError,
	CodeClientMarshal:         ErrMsgInternalServerError,
	CodeClientUnmarshal:       ErrMsgInternalServerError,
	CodeClientErrorOnRequest:  ErrMsgBadRequest,
	CodeClientErrorOnReadBody: ErrMsgBadRequest,

	CodeAuth:                         ErrMsgUnauthorized,
	CodeAuthRefreshTokenExpired:      ErrMsgRefreshTokenExpired,
	CodeAuthAccessTokenExpired:       ErrMsgAccessTokenExpired,
	CodeAuthFailure:                  ErrMsgUnauthorized,
	CodeAuthInvalidToken:             ErrMsgInvalidToken,
	CodeForbidden:                    ErrMsgForbidden,
	CodeAuthRevokeRefreshTokenFailed: ErrMsgRevokeRefreshTokenFailed,

	CodeStorageS3Upload: ErrMsgBadRequest,

	CodeConvert:     ErrMsgInternalServerError,
	CodeConvertTime: ErrMsgInternalServerError,

	CodeFailedResetPassword:       ErrMsgResetPassword,
	CodePasswordDoesNotMatch:      ErrMsgPasswordDoesNotMatch,
	CodeResetPasswordTokenExpired: ErrMsgResetTokenExpired,
	CodeEmptyEmail:                ErrMsgEmptyEmail,
	CodeInvalidEmail:              ErrMsgInvalidEmail,
	CodeSameCurrentPassword:       ErrMsgSameCurrentPassword,
	CodePasswordIsNotFilled:       ErrMsgPasswordIsNotFilled,
	CodeResetPasswordTokenInvalid: ErrMsgResetTokenInvalid,
	CodePasswordIsWeak:            ErrMsgPasswordIsWeak,

	CodeLockExist:            ErrMsgLockExist,
	CodeRedisGet:             ErrMsgInternalServerError,
	CodeRedisSetex:           ErrMsgInternalServerError,
	CodeFailedLock:           ErrMsgInternalServerError,
	CodeFailedReleaseLock:    ErrMsgInternalServerError,
	CodeCacheMarshal:         ErrMsgInternalServerError,
	CodeCacheUnmarshal:       ErrMsgInternalServerError,
	CodeCacheGetSimpleKey:    ErrMsgInternalServerError,
	CodeCacheSetSimpleKey:    ErrMsgInternalServerError,
	CodeCacheDeleteSimpleKey: ErrMsgInternalServerError,
	CodeCacheGetHashKey:      ErrMsgInternalServerError,
	CodeCacheSetHashKey:      ErrMsgInternalServerError,
	CodeCacheDeleteHashKey:   ErrMsgInternalServerError,
	CodeCacheSetExpiration:   ErrMsgInternalServerError,
	CodeCacheDecode:          ErrMsgInternalServerError,
	CodeCacheLockNotAcquired: ErrMsgInternalServerError,
	CodeCacheInvalidCastType: ErrMsgInternalServerError,
	CodeCacheNotFound:        ErrMsgInternalServerError,

	CodeErrorHttpNewRequest: ErrMsgInternalServerError,
	CodeErrorHttpDo:         ErrMsgInternalServerError,
	CodeErrorIoutilReadAll:  ErrMsgInternalServerError,
	CodeHttpMarshal:         ErrMsgInternalServerError,
	CodeHttpUnmarshal:       ErrMsgInternalServerError,

	CodeFeatureFlagRetrieverFailed: ErrMsgInternalServerError,

	CodeExecuteTemplateFailed:      ErrMsgExecuteTemplateFailed,
	CodeConvertMJMLToHTMLFailed:    ErrMsgConvertMJMLToHTMLFailed,
	CodePDFToJSONFailed:            ErrMsgConvertGoTemplateToPDFFailed,
	CodePDFGeneratorFromJSONFailed: ErrMsgConvertGoTemplateToPDFFailed,
	CodeGeneratePDFFailed:          ErrMsgGenerateToPDFFailed,
	CodeParseHTMlTemplateFailed:    ErrMsgCodeParseHTMlTemplateFailed,

	CodeErrorSlackAlert: ErrMsgSlackAlert,

	CodeFile:               ErrMsgInternalServerError,
	CodeFilePathOpenFailed: ErrMsgInternalServerError,
	CodeFileTooBig:         ErrMsgContentTooLarge,

	CodeTranslatorError: ErrMsgTranslatorlib,

	CodeImageUploadSizeTooBig: ErrMsgImageTooBig,
}

Error messages only

Functions

This section is empty.

Types

type AppMessage

type AppMessage map[Code]Message

type Code

type Code uint32
const NoCode Code = math.MaxUint32

type DisplayMessage

type DisplayMessage struct {
	StatusCode int    `json:"statusCode"`
	Title      string `json:"title"`
	Body       string `json:"body"`
}

func Compile

func Compile(code Code, lang string) DisplayMessage

type Message

type Message struct {
	StatusCode int
	TitleEN    string
	TitleID    string
	BodyEN     string
	BodyID     string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL