vcago

package module
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: Mar 18, 2022 License: MIT Imports: 29 Imported by: 1

README

vcago

The package contains standard functions that are used in the Viva-con-Agua API services and is on the echo web framework

PACKAGE

Basic Webserver
Setup in server.go
func main() {
    e := echo.New()
    e.HTTPErrorHandler = vcago.HTTPErrorHandler    
    e.Validator = vcago.JSONValidator
    e.Use(vcago.CORS.Init())
    e.Use(vcago.Logger.Init()) 
    ...

    ...
	appPort := vcago.Config.GetEnvString("APP_PORT", "n", "1323")
	e.Logger.Fatal(e.Start(":" + appPort))

}
edit the .env file
SERVICE_NAME=default  //service name, default default
APP_PORT=1323           // default port 1323
LOGGING_OUTPUT=strout  // pretty, nats default strout
ALLOW_ORIGINS="https://example.com,https://api.example.com"
...
output logger pretty
{
    "id": "",  //not implemented
    "service": "example",
    "time": "2022-02-07T19:50:08.971851362+01:00",
    "remote_ip": "127.0.0.1",
    "host": "localhost:1323",
    "method": "POST",
    "uri": "/example",
    "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0",
    "status": 500,
    "error": {
        "status_message": "example error",
        "status_type": "internal_error"
    },
    "latency": 2002915,
    "latency_human": "2.002915ms",
    "byte_in": "",
    "byte_out": "",
    "modified": {
        "updated": 1644259808,
        "created": 1644259808
    }
}
Use in handler

BindAndValidate follows this documentation. In the event of an error, an ValidationError will always be returned, which can be processed by the HTTPErrorHandler.

func Example(c echo.Context) (err error) {
	...
	//Validate JSON
	body := new(dao.Example)
	if vcago.BindAndValidate(c, body); err != nil {
		return
	}
    ...
func main() {
	e := echo.New()
	e.Debug = false
	// Middleware
	e.Use(vcago.Logger.Init())
	e.Use(vcago.CORS.Init())

	//error
	e.HTTPErrorHandler = vcago.HTTPErrorHandler
	e.Validator = vcago.JSONValidator
	handlers.CreateClient()
	login := e.Group("/v1/auth")
	login.POST("/callback", handlers.CallbackHandler)

	//server
	appPort := vcago.Config.GetEnvString("APP_PORT", "n", "1323")
	e.Logger.Fatal(e.Start(":" + appPort))
CONSTANTS

const (
	colorRed    = "\033[31m"
	colorGreen  = "\033[32m"
	colorYellow = "\033[33m"
	colorBlue   = "\033[34m"
	colorPurple = "\033[35m"
	colorCyan   = "\033[36m"
	colorWhite  = "\033[37m"
)

VARIABLES

var CORSConfig = middleware.CORSWithConfig(middleware.CORSConfig{
	AllowOrigins:     strings.Split(os.Getenv("ALLOW_ORIGINS"), ","),
	AllowHeaders:     []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept},
	AllowCredentials: true,
})
    CORSConfig for api services. Can be configured via .env.


FUNCTIONS

func DeleteSession(c echo.Context)
    DeleteSession remove sessin for context c from Redis.

func GetSessionUser(c echo.Context) (u *vmod.User, contains bool)
    GetSessionUser return user for c or false if c has no user in Redis

func InitSession(c echo.Context, user *vmod.User)
    InitSession initial a session for a vmod.User via Redis

func JSONErrorHandler(c echo.Context, i interface{}) (rErr *verr.ResponseError)
    JSONErrorHandler formats JsonError to ResponseError

func LogAPIError(e *verr.ApiError, c echo.Context, i interface{})
    LogApiError via log.Print

func RedisSession() echo.MiddlewareFunc
    RedisSession middleware initial redis store for session handling

func ResponseErrorHandler(c echo.Context, apiErr *verr.ApiError, i interface{}) (rErr *verr.ResponseError)
    ResponseErrorHandler handles ApiError

func SessionAuth(next echo.HandlerFunc) echo.HandlerFunc
    SessionAuth go to next if the request has a session else return 401.

func formatRequestPrint(r *http.Request) string

TYPES

type Validator struct {
	Validator *validator.Validate
}
    Validator represents a Json validator

func (cv *Validator) Validate(i interface{}) error
    Validate interface i

Documentation

Overview

Package handles error logs via nats message broker

Index

Constants

View Source
const StatusBADREQUEST = "bad_request"
View Source
const StatusCREATED = "created"
View Source
const StatusDONE = "done"
View Source
const StatusFAILED = "failed"
View Source
const StatusINTERNAL = "internal_error"
View Source
const StatusOPEN = "open"
View Source
const StatusPROCESS = "process"

Variables

View Source
var APIKey = Config.GetEnvString("API_KEY", "w", "secret")

APIKey represents the api Bearer token

View Source
var CORS = new(CORSConfig)
View Source
var Config = LoadConfig()

Config represents the global configuration variables.

View Source
var ErrMongoDelete = errors.New("no delete document")

ErrMongoDelete represents an delete error in mongo case

View Source
var ErrMongoUpdate = errors.New("no updated document")

ErrMongoUpdate represents an update error in mongo case

View Source
var JSONValidator = NewValidator()
View Source
var Nats = new(NatsDAO)

Nats used for Nats connection

Functions

func AccessCookieConfig added in v0.1.6

func AccessCookieConfig() echo.MiddlewareFunc

AccessCookieConfig can with echo for middleware.JWTWithConfig(vmod.AccessConfig) to handling access controll The token is reachable with c.Get("token")

func BindAndValidate added in v1.0.2

func BindAndValidate(c echo.Context, i interface{}) error

func HTTPErrorHandler added in v1.0.2

func HTTPErrorHandler(err error, c echo.Context)

HTTPErrorHandler handles echo.HTTPError and return the correct response.

func KeyAuthMiddleware added in v1.1.14

func KeyAuthMiddleware() echo.MiddlewareFunc

KeyAuthMiddleware middleware function for handling authentication via key.

func MongoNoDeleted added in v1.1.16

func MongoNoDeleted(err error) bool

func MongoNoDocuments added in v1.1.2

func MongoNoDocuments(err error) bool

func MongoNoUpdated added in v1.1.16

func MongoNoUpdated(err error) bool

func RandomBase64 added in v1.0.2

func RandomBase64(n int) (string, error)

RandomBase64 generate random Base64 string

func RandomBytes added in v1.0.2

func RandomBytes(n int) ([]byte, error)

RandomBytes return random bytes

func RefreshCookieConfig added in v0.1.6

func RefreshCookieConfig() echo.MiddlewareFunc

RefreshCookieConfig can with echo for middleware.JWTWithConfig(vmod.AccessConfig) to handling access controll The token is reachable with c.Get("token")

func RefreshCookieUserID added in v1.1.6

func RefreshCookieUserID(c echo.Context) (string, error)

func ResetAccessCookie added in v1.1.6

func ResetAccessCookie() *http.Cookie

ResetAccessCookie returns an cookie for reset the access_token.

func ResetRefreshCookie added in v1.1.6

func ResetRefreshCookie() *http.Cookie

ResetRefreshCookie returns an cookie for reset the refresh_token.

func SliceContains added in v1.1.6

func SliceContains(list []string, element string) bool

Types

type AccessToken added in v1.1.6

type AccessToken struct {
	ID            string         `json:"id,omitempty" bson:"_id"`
	Email         string         `json:"email" bson:"email" validate:"required,email"`
	FirstName     string         `json:"first_name" validate:"required"`
	LastName      string         `json:"last_name" validate:"required"`
	FullName      string         `json:"full_name"`
	DisplayName   string         `json:"display_name"`
	Roles         RoleListCookie `json:"system_roles"`
	Country       string         `json:"country"`
	PrivacyPolicy bool           `json:"privacy_policy"`
	Confirmed     bool           `json:"confirmed"`
	LastUpdate    string         `json:"last_update"`
	jwt.StandardClaims
}

func AccessCookieUser added in v1.1.6

func AccessCookieUser(c echo.Context) (r *AccessToken, err error)

func NewAccessToken added in v1.1.6

func NewAccessToken(user *User) *AccessToken

func (*AccessToken) SignedString added in v1.1.6

func (i *AccessToken) SignedString(secret string) (string, error)

type AuthToken added in v1.1.6

type AuthToken struct {
	AccessToken  string `json:"access_token" bson:"access_token"`
	RefreshToken string `json:"refresh_token" bson:"refresh_token"`
	ExpiresAt    int64  `json:"expires_at" bson:"expires_at"`
}

AuthToken represents the authentication tokens for handling access via jwt.

func NewAuthToken added in v1.1.6

func NewAuthToken(user *User) (r *AuthToken, err error)

NewAuthToken creates an new access and refresh token for the given user.

func (*AuthToken) AccessCookie added in v1.1.6

func (i *AuthToken) AccessCookie() (r *http.Cookie)

AccessCookie return an cookie conains the access_token.

func (*AuthToken) RefreshCookie added in v1.1.6

func (i *AuthToken) RefreshCookie() *http.Cookie

RefreshCookie returns an cookie conains the refresh_token.

type CORSConfig added in v0.0.7

type CORSConfig struct {
	// contains filtered or unexported fields
}

func (*CORSConfig) Init added in v1.1.2

func (i *CORSConfig) Init() echo.MiddlewareFunc

NewCORSConfig create a echo middleware for cors handling.

type Callback added in v1.1.4

type Callback struct {
	Code string `json:"code"`
}

type CookieConfig added in v1.2.0

type CookieConfig struct {
	SameSite http.SameSite
	Secure   bool
	HttpOnly bool
}

CookieConfig represents the cookie parameters

func NewCookieConfig added in v1.2.0

func NewCookieConfig() *CookieConfig

NewCookieConfig loads the cookie parameters from the .env file and return a new CookieConfig.

func (*CookieConfig) Cookie added in v1.2.0

func (i *CookieConfig) Cookie(name string, value string) *http.Cookie

Cookie returns an http.Cookie using the CookieConfig parameters. @param name cookie name @param value cookie value

type CycularMail added in v1.2.4

type CycularMail struct {
	Email   string   `json:"email"`
	Emails  []string `json:"emails"`
	Subject string   `json:"subject"`
	Message string   `json:"message"`
}

func NewCycularMail added in v1.2.4

func NewCycularMail(email string, emails []string, subject string, message string) *CycularMail

type ErrorResponse added in v1.0.2

type ErrorResponse struct {
	Status  int         `json:"-"`
	Message string      `json:"message"`
	Body    interface{} `json:"body,omitempty"`
	Coll    string      `json:"collection,omitempty"`
	Model   string      `json:"model,omitempty"`
}

Response represents an response json in case of an error.

func BadRequest added in v1.0.2

func BadRequest(message string, body ...interface{}) (int, *ErrorResponse)

BadRequest creates an echo.HTTPError with the status http.StatusBadRequest

func Conflict added in v1.0.2

func Conflict(message string, body ...interface{}) (int, *ErrorResponse)

Conflict creates an echo.HTTPError with the status http.StatusConflict

func InternalServerError added in v1.0.2

func InternalServerError() (int, ErrorResponse)

InternalServerError creates an echo.HTTPError with the status http.StatusInternalServerError

func NotFound added in v1.0.2

func NotFound(message string, body ...interface{}) (int, *ErrorResponse)

NotFound creates an echo.HTTPError with the status http.StatusNotFound

type HydraClient added in v1.1.4

type HydraClient struct {
	Oauth2Config oauth2.Config
	Verifier     *oidc.IDTokenVerifier
}

func NewHydraClient added in v1.1.4

func NewHydraClient() (r *HydraClient)

func (*HydraClient) Callback added in v1.1.4

func (i *HydraClient) Callback(ctx context.Context, callback *Callback) (r *User, err error)

type IDjango added in v1.0.2

type IDjango struct {
	URL    string
	Key    string
	Export bool
}

Mongo represents the initial struct for an Mongo connection.

func (*IDjango) LoadEnv added in v1.0.2

func (i *IDjango) LoadEnv()

LoadEnv loads the Host and Port From .env file. Host can be set via NATS_HOST Port can be set via NATS_PORT

func (*IDjango) Post added in v1.0.2

func (i *IDjango) Post(data interface{}, path string) (err error)

type IDjangoError added in v1.0.2

type IDjangoError struct {
	Err     error       `json:"error" bson:"error"`
	Message string      `json:"message" bson:"message"`
	Code    int         `json:"code" bson:"code"`
	Body    interface{} `json:"body" bson:"body"`
	Line    int         `json:"line" bson:"line"`
	File    string      `json:"file" bson:"file"`
}

func NewIDjangoError added in v1.0.2

func NewIDjangoError(err error, code int, body interface{}) *IDjangoError

func (*IDjangoError) Error added in v1.0.2

func (i *IDjangoError) Error() string

type LinkToken added in v1.0.2

type LinkToken struct {
	ID        string   `json:"id" bson:"_id"`
	Code      string   `json:"code" bson:"code"`
	ExpiresAt int64    `json:"expires_at" bson:"expires_at"`
	Scope     string   `json:"scope" bson:"scope"`
	UserID    string   `json:"user_id" bson:"user_id"`
	Modified  Modified `json:"modified" bson:"modified"`
}

LinkToken is used for handling link with token

func NewLinkToken added in v1.0.2

func NewLinkToken(expired time.Duration, userID string, scope string) (*LinkToken, error)

NewLinkToken initial a Token with a 32bit random string Base64 encoded for Web handling. Set expired time max 1 month.

func (*LinkToken) NewCode added in v1.0.2

func (l *LinkToken) NewCode(expired time.Duration) (*LinkToken, error)

NewCode generate a new code for LinkTokens

type LoadEnv added in v0.1.1

type LoadEnv []bool

LoadEnv used for loading environment variables.

func LoadConfig added in v1.0.2

func LoadConfig() *LoadEnv

LoadConfig loads the .env file and return an LoadEnv type

func (LoadEnv) GetEnvBool added in v0.1.1

func (l LoadEnv) GetEnvBool(key string, lvl string, dVal bool) bool

GetEnvBool load a key from environment variables as bool.

func (LoadEnv) GetEnvInt added in v0.1.1

func (l LoadEnv) GetEnvInt(key string, lvl string, dVal int) int

GetEnvInt loads a key from enviroment variables as int. The lvl param defines the log level. For warnings set "w" and for error set "e". If the variable is not used or can be ignored use n for do nothing. The default value can be set by the dVal param.

func (LoadEnv) GetEnvString added in v0.1.1

func (l LoadEnv) GetEnvString(key string, lvl string, dVal string) string

GetEnvString loads a key from enviroment variables as string. The lvl param defines the log level. For warnings set "w" and for error set "e". If the variable is not used or can be ignored use n for do nothing. The default value can be set by the dVal param.

func (LoadEnv) GetEnvStringList added in v0.1.1

func (l LoadEnv) GetEnvStringList(key string, lvl string, dVal []string) []string

GetEnvStringList as

func (LoadEnv) Validate added in v0.1.1

func (l LoadEnv) Validate()

Validate check if LoadEnv is valid and log.Fatal if on entry is false.

type LogError added in v1.0.2

type LogError struct {
	ID           string      `json:"id" bson:"_id"`
	Service      string      `json:"service" bson:"service"`
	Time         string      `json:"time" bson:"time"`
	RemoteIP     string      `json:"remote_ip" bson:"remote_io"`
	Host         string      `json:"host" bson:"host"`
	Method       string      `json:"method" bson:"method"`
	Uri          string      `json:"uri" bson:"uri"`
	UserAgent    string      `json:"user_agent" bson:"user_agent"`
	Status       int         `json:"status" bson:"status"`
	Error        interface{} `json:"error" bson:"error"`
	Latency      int64       `json:"latency" bson:"latency"`
	LatencyHuman string      `json:"latency_human" bson:"latency_human"`
	ByteIn       string      `json:"byte_in" bson:"byte_in"`
	ByteOut      string      `json:"byte_out" bson:"byte_out"`
	ErrorType    string      `json:"error_type" bson:"error_type"`
	Modified     Modified    `json:"modified" bson:"modified"`
}

LogError represents the an LogError for handling via nats and store into mongo databases. The struct matches the Config Format string as json.

type LoggingHandler added in v1.0.2

type LoggingHandler struct {
	// contains filtered or unexported fields
}

Logger struct for handling the nats connection.

func (*LoggingHandler) Init added in v1.1.2

func (i *LoggingHandler) Init(service string) echo.MiddlewareFunc

Config for echo middleware Logger. Use logger for handle Nats connection.

func (*LoggingHandler) Log added in v1.0.2

func (i *LoggingHandler) Log(logError *LogError)

Log publish the LogError to nats route "logger.log".

func (*LoggingHandler) Write added in v1.0.2

func (i *LoggingHandler) Write(data []byte) (n int, err error)

Write is an IOWriter for handling the middleware Logger output.

type MailData added in v1.1.6

type MailData struct {
	TO          string    `json:"to" bson:"to"`
	Service     string    `json:"service" bson:"service"`
	Scope       string    `json:"scope" bson:"scope"`
	Lang        string    `json:"lang" bson:"lang"`
	User        User      `json:"user" bson:"user"`
	LinkToken   LinkToken `json:"link_token" bson:"link_token"`
	CurrentUser MailUser  `json:"current_user" bson:"current_user"`
	ContactUser MailUser  `json:"contact_user" bson:"contact_user"`
}

func NewMailData added in v1.1.6

func NewMailData(to string, service string, scope string, lang string) *MailData

func (*MailData) AddContactUser added in v1.2.3

func (i *MailData) AddContactUser(id string, email string, firstName string, lastName string)

func (*MailData) AddCurrentUser added in v1.2.3

func (i *MailData) AddCurrentUser(id string, email string, firstName string, lastName string)

func (*MailData) AddLinkToken added in v1.1.6

func (i *MailData) AddLinkToken(token *LinkToken)

func (*MailData) AddUser added in v1.1.6

func (i *MailData) AddUser(user *User)

func (*MailData) Send added in v1.1.6

func (i *MailData) Send() (err error)

type MailSend added in v1.1.14

type MailSend struct {
	URL  string
	Key  string
	Mode string
}

func NewMailSend added in v1.1.14

func NewMailSend() *MailSend

func (*MailSend) Nats added in v1.1.14

func (i *MailSend) Nats(mail *MailData)

func (*MailSend) Post added in v1.1.14

func (i *MailSend) Post(mailData *MailData)

func (*MailSend) PostCycularMail added in v1.2.4

func (i *MailSend) PostCycularMail(data *CycularMail)

func (*MailSend) Print added in v1.1.14

func (i *MailSend) Print(mail *MailData)

func (*MailSend) Send added in v1.1.14

func (i *MailSend) Send(mail *MailData)

func (*MailSend) Subscribe added in v1.1.14

func (i *MailSend) Subscribe()

type MailUser added in v1.2.3

type MailUser struct {
	ID        string `json:"id"`
	Email     string `json:"email"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`
}

type Modified

type Modified struct {
	Updated int64 `json:"updated" bson:"updated"`
	Created int64 `json:"created" bson:"created"`
}

func NewModified added in v1.1.2

func NewModified() Modified

NewModified initial Modified model, cTime is the current time Unix format.

func (*Modified) Update added in v1.1.2

func (i *Modified) Update()

type ModifiedQuery added in v1.1.5

type ModifiedQuery struct {
	UpdateFrom string `query:"update_from"`
	UpdateTo   string `query:"update_to"`
	CreateFrom string `query:"create_from"`
	CreateTo   string `query:"create_to"`
}

func (*ModifiedQuery) Filter added in v1.1.5

func (i *ModifiedQuery) Filter(filter *MongoFilterM)

type Money added in v1.0.3

type Money struct {
	Amount   int64  `bson:"amount" json:"amount" validate:"required"`
	Currency string `bson:"currency" json:"currency" validate:"required"`
}

func (*Money) ValidateAmount added in v1.0.3

func (i *Money) ValidateAmount(minAmount int64) (err error)

func (*Money) ValidateCurrency added in v1.0.3

func (i *Money) ValidateCurrency(currency string) (err error)

type MongoColl added in v1.0.5

type MongoColl struct {
	Name         string
	DatabaseName string
	Collection   *mongo.Collection
}

MongoColl represents an mongo db database collection

func (*MongoColl) Aggregate added in v1.0.5

func (i *MongoColl) Aggregate(ctx context.Context, filter []bson.D, value interface{}) (err error)

Aggregate provide using aggregations.

func (*MongoColl) CreateIndex added in v1.0.5

func (i *MongoColl) CreateIndex(field string, unique bool) *MongoColl

CreateIndex creates an index for a given collection.

func (*MongoColl) CreateMultiIndex added in v1.1.10

func (i *MongoColl) CreateMultiIndex(filter bson.D, unique bool) *MongoColl

func (*MongoColl) DeleteMany added in v1.1.16

func (i *MongoColl) DeleteMany(ctx context.Context, filter bson.M) (err error)

func (*MongoColl) DeleteOne added in v1.0.5

func (i *MongoColl) DeleteOne(ctx context.Context, filter bson.M) (err error)

DeleteOne deletes an element from given collection by the bson.M filter.

func (*MongoColl) Find added in v1.0.5

func (i *MongoColl) Find(ctx context.Context, filter bson.M, value interface{}) (err error)

Find return a list of objects by given filter

func (*MongoColl) FindOne added in v1.0.5

func (i *MongoColl) FindOne(ctx context.Context, filter bson.M, value interface{}) (err error)

FindOne select an element form database by using a given filter. The element will bind to the value interface{}. In error case it return an MongoError as error.

func (*MongoColl) InsertOne added in v1.0.5

func (i *MongoColl) InsertOne(ctx context.Context, value interface{}) (err error)

InsertOne inserts a value and return an MongoError as error.

func (*MongoColl) InsertOrUpdate added in v1.1.2

func (i *MongoColl) InsertOrUpdate(ctx context.Context, filter bson.M, value interface{}) (err error)

InsertOrUpdate updates a value via "$set" and the given bson.M filter. Return an MongoError in case that no element has updated.

func (*MongoColl) Permission added in v1.1.13

func (i *MongoColl) Permission(ctx context.Context, filter bson.M, value interface{}) (err error)

func (*MongoColl) UpdateOne added in v1.0.5

func (i *MongoColl) UpdateOne(ctx context.Context, filter bson.M, value interface{}) (err error)

UpdateOne updates a value via "$set" and the given bson.M filter. Return an MongoError in case that no element has updated.

type MongoDB added in v1.0.5

type MongoDB struct {
	Host     string
	Port     string
	Name     string
	Database *mongo.Database
}

Mongo represents the initial struct for an Mongo connection.

func NewMongoDB added in v1.0.5

func NewMongoDB(name string) (r *MongoDB)

NewMongoDB creates a new MongoDB connects to mongoDB and return an Mongo struct.

func (*MongoDB) Collection added in v1.0.5

func (i *MongoDB) Collection(name string) *MongoColl

type MongoError added in v1.0.2

type MongoError struct {
	ErrorType  string      `json:"error_type" bson:"error_type"`
	Err        error       `json:"-" bson:"-"`
	Message    string      `json:"message" bson:"message"`
	Filter     interface{} `json:"filter" bson:"filter"`
	Value      interface{} `json:"value" bson:"value"`
	Database   string      `json:"database" bson:"database"`
	Collection string      `json:"collection" bson:"collection"`
	Line       int         `json:"line" bson:"line"`
	File       string      `json:"file" bson:"file"`
}

MongoError represents the struct of an mongo Error type.

func NewMongoError added in v1.0.2

func NewMongoError(err error, value interface{}, filter bson.M, database string, collection string) *MongoError

NewMongoError creates an mongo Error for an given parameter set

func (*MongoError) Error added in v1.0.2

func (i *MongoError) Error() string

Error return string of the error

func (*MongoError) Response added in v1.0.2

func (i *MongoError) Response() (int, interface{})

Response return the ErrorResponse for handling in httpErrorHandler

type MongoErrorResponse added in v1.1.12

type MongoErrorResponse struct {
	Filter     interface{} `json:"filter" bson:"filter"`
	Collection string      `json:"collection" bson:"collection"`
}

type MongoFilterM added in v1.1.5

type MongoFilterM struct {
	Filter bson.M
}

func NewMongoFilterM added in v1.1.5

func NewMongoFilterM() *MongoFilterM

func (*MongoFilterM) Equal added in v1.1.5

func (i *MongoFilterM) Equal(key string, value string)

func (*MongoFilterM) EqualIn64 added in v1.1.5

func (i *MongoFilterM) EqualIn64(key string, value string)

func (*MongoFilterM) EqualInt added in v1.1.5

func (i *MongoFilterM) EqualInt(key string, value string)

func (*MongoFilterM) GteInt added in v1.1.5

func (i *MongoFilterM) GteInt(key string, value string)

func (*MongoFilterM) GteInt64 added in v1.1.5

func (i *MongoFilterM) GteInt64(key string, value string)

func (*MongoFilterM) Like added in v1.1.5

func (i *MongoFilterM) Like(key string, value string)

func (*MongoFilterM) LteInt added in v1.1.5

func (i *MongoFilterM) LteInt(key string, value string)

func (*MongoFilterM) LteInt64 added in v1.1.5

func (i *MongoFilterM) LteInt64(key string, value string)

type MongoMatch added in v1.2.4

type MongoMatch bson.D

func (*MongoMatch) AddString added in v1.2.4

func (i *MongoMatch) AddString(key string, value string)

func (*MongoMatch) AddStringList added in v1.2.4

func (i *MongoMatch) AddStringList(key string, value []string)

func (*MongoMatch) Init added in v1.2.4

func (i *MongoMatch) Init()

type MongoPipe added in v1.1.5

type MongoPipe struct {
	Pipe []bson.D
}

func NewMongoPipe added in v1.1.5

func NewMongoPipe() *MongoPipe

func (*MongoPipe) AddListAt added in v1.1.10

func (i *MongoPipe) AddListAt(from string, root string, child string, as string)

func (*MongoPipe) AddMatch added in v1.2.4

func (i *MongoPipe) AddMatch(m *MongoMatch)

func (*MongoPipe) AddModelAt added in v1.1.5

func (i *MongoPipe) AddModelAt(from string, root string, child string, as string)

type NatsDAO added in v1.0.2

type NatsDAO struct {
	// contains filtered or unexported fields
}

Nats represents the config struct for Nats service.

func (*NatsDAO) Connect added in v1.0.2

func (i *NatsDAO) Connect()

func (*NatsDAO) Publish added in v1.0.2

func (i *NatsDAO) Publish(message string, body interface{})

func (*NatsDAO) Subscribe added in v1.0.2

func (i *NatsDAO) Subscribe(message string, catch interface{})

type RefreshToken added in v1.1.6

type RefreshToken struct {
	UserID string `json:"user_id"`
	jwt.StandardClaims
}

func NewRefreshToken added in v1.1.6

func NewRefreshToken(userID string) *RefreshToken

func (*RefreshToken) SignedString added in v1.1.6

func (i *RefreshToken) SignedString(secret string) (string, error)

type Response added in v1.0.3

type Response struct {
	Message string      `json:"message" bson:"message"`
	Model   string      `json:"model,omitempty" bson:"model,omitempty"`
	Payload interface{} `json:"payload,omitempty" bson:"payload,omitempty"`
}

Response represents the default api response struct Message shows action information Model shows the collection that would be attached Payload contains the response model

func NewResponse added in v1.0.3

func NewResponse(model string, payload interface{}) *Response

NewResponse can be used for create Response struct

func (*Response) BadRequest added in v1.1.2

func (i *Response) BadRequest() (int, *Response)

func (*Response) Conflict added in v1.1.2

func (i *Response) Conflict() (int, *Response)

func (*Response) Created added in v1.0.3

func (i *Response) Created() (int, *Response)

func (*Response) Deleted added in v1.0.3

func (i *Response) Deleted() (int, *Response)

func (*Response) Executed added in v1.0.3

func (i *Response) Executed() (int, *Response)

func (*Response) InternalServerError added in v1.1.2

func (i *Response) InternalServerError() (int, *Response)

func (*Response) NotFound added in v1.1.2

func (i *Response) NotFound() (int, *Response)

func (*Response) Selected added in v1.0.3

func (i *Response) Selected() (int, *Response)

func (*Response) Updated added in v1.0.3

func (i *Response) Updated() (int, *Response)

type Role added in v1.1.8

type Role struct {
	ID     string `json:"id" bson:"_id"`
	Name   string `json:"name" bson:"name"`
	Label  string `json:"label" bson:"label"`
	Root   string `json:"root" bson:"root"`
	UserID string `json:"user_id" bson:"user_id"`
}

func RoleAdmin added in v1.1.8

func RoleAdmin(userID string) *Role

func RoleEmployee added in v1.1.8

func RoleEmployee(userID string) *Role

func RoleMember added in v1.1.8

func RoleMember(userID string) *Role

type RoleList added in v1.1.8

type RoleList []Role

func (*RoleList) Append added in v1.1.8

func (i *RoleList) Append(role *Role)
func (i *RoleList) Validate(roles string) bool {
	for n, _ := range *i {
		if strings.Contains(roles, (*i)[n].Name) {
			return true
		}
	}
	return false
}
func (i *RoleList) CheckRoot(role *Role) bool {
	for n, _ := range *i {
		if strings.Contains(role.Root, (*i)[n].Name) {
			return true
		}
	}
	return false
}

func (*RoleList) Cookie added in v1.2.2

func (i *RoleList) Cookie() (r *RoleListCookie)

func (*RoleList) In added in v1.1.8

func (i *RoleList) In(roles string) bool

type RoleListCookie added in v1.2.2

type RoleListCookie []string

func (*RoleListCookie) CheckRoot added in v1.2.2

func (i *RoleListCookie) CheckRoot(role *Role) bool

func (*RoleListCookie) Validate added in v1.2.2

func (i *RoleListCookie) Validate(roles string) bool

type Status added in v1.0.3

type Status struct {
	ErrorType     string `bson:"error_type" json:"error_type"`
	StatusType    string `bson:"status_type" json:"status_type"`
	StatusMessage string `bson:"status_message" json:"status_message"`
}

func NewStatus added in v1.0.3

func NewStatus() *Status

func NewStatusBadRequest added in v1.1.9

func NewStatusBadRequest(message error) *Status

func NewStatusInternal added in v1.0.3

func NewStatusInternal(message error) *Status

func NewStatusPermissionDenied added in v1.1.13

func NewStatusPermissionDenied() *Status

func (*Status) Created added in v1.0.3

func (i *Status) Created(message string)

func (*Status) Done added in v1.0.3

func (i *Status) Done(message string)

func (*Status) Error added in v1.0.3

func (i *Status) Error() string

func (*Status) Failed added in v1.0.3

func (i *Status) Failed(message string)

func (*Status) Internal added in v1.0.3

func (i *Status) Internal(message string)

func (*Status) Open added in v1.0.3

func (i *Status) Open(message string)

func (*Status) Process added in v1.0.3

func (i *Status) Process(message string)

func (*Status) Response added in v1.0.3

func (i *Status) Response() (int, interface{})

func (*Status) Set added in v1.0.3

func (i *Status) Set(t string, message string) *Status

func (*Status) ValidateDone added in v1.0.3

func (i *Status) ValidateDone() error

type User

type User struct {
	ID            string   `json:"id,omitempty" bson:"_id"`
	Email         string   `json:"email" bson:"email"`
	FirstName     string   `bson:"first_name" json:"first_name"`
	LastName      string   `bson:"last_name" json:"last_name"`
	FullName      string   `bson:"full_name" json:"full_name"`
	DisplayName   string   `bson:"display_name" json:"display_name"`
	Roles         RoleList `json:"system_roles" bson:"system_roles"`
	Country       string   `bson:"country" json:"country"`
	PrivacyPolicy bool     `bson:"privacy_policy" json:"privacy_policy"`
	Confirmd      bool     `bson:"confirmed" json:"confirmed"`
	LastUpdate    string   `bson:"last_update" json:"last_update"`
}

User represents the user model

func (*User) CheckUpdate added in v1.1.11

func (i *User) CheckUpdate(lastUpdate string) bool

func (*User) Load added in v1.1.2

func (i *User) Load(user interface{}) (err error)

Load loads an interface in an vcago.User model

type UserClaims added in v1.1.4

type UserClaims struct {
	User User `json:"user"`
}

type ValidationError added in v1.0.2

type ValidationError struct {
	ErrorType string   `json:"error_type"`
	Errors    []string `json:"errors"`
}

func NewValidationError added in v1.1.2

func NewValidationError(err string) *ValidationError

func (*ValidationError) Bind added in v1.0.2

func (i *ValidationError) Bind(err error)

func (*ValidationError) Error added in v1.0.2

func (i *ValidationError) Error() string

func (*ValidationError) Response added in v1.0.3

func (i *ValidationError) Response() (int, interface{})

func (*ValidationError) Valid added in v1.0.2

func (i *ValidationError) Valid(err error)

type Validator added in v1.0.2

type Validator struct {
	// contains filtered or unexported fields
}

func NewValidator added in v1.1.2

func NewValidator() (r *Validator)

func (*Validator) Validate added in v1.0.2

func (i *Validator) Validate(valid interface{}) error

Directories

Path Synopsis
api module

Jump to

Keyboard shortcuts

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