gokit-starter-pack

module
v0.0.0-...-fc8bcac Latest Latest
Warning

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

Go to latest
Published: Jun 17, 2019 License: GPL-3.0

README

gokit-starter-pack

starter pack for creating gokit project

Table of Contents
  1. Event Store
  2. Vault Client

Event Store Lib

Add library event for wrapping publish and subscribe nats

Publisher

Library for publishing event to nats (begin and commit) as a middleware in transport

Example
//Create publisher
eventPublisher := event.NewPublisher("nats_connection", "logger")

//Implementation in transport or as endpoint Go-Kit
eventPublisher.Store("domain", "model", "eventtype", "topic/subject", "event_source",
    func(ctx context.Context, request interface{}) (response interface{}, err error) {
        result, err := service.Create(reqData.Name, reqData.Code)
        if err != nil {
            return nil, err
        }
        return result, nil
    },
    func(metaBuilder interface{}) interface{} {
        //filter data or build meta data in here before data published into nats
        return metaBuilder
    },
)

Description :

NewPublisher

Param Description
nats_connection nats connection type stan.Conn
logger logger for logging type from gokit log

.Store

Param Description
domain Your domain ex: account, authorization
model Your model from your domain
eventtype Event Type ex: create, update
topic/subject Topic/Subject for nats
event_source Event Source befor this event
func Enpoint gokit
MetaBuilder func(metaBuilder interface{}) interface{}
Subscriber

Library for subscribe event from nats.

Example
assessmentApproveSub := event.NewSubscriber("nats_connection", "topic/subject", "qGroup", "durable_name", "startAt", "logger", func(msg *stan.Msg) {
    var tmp map[string]interface{}
    if err := json.Unmarshal(msg.Data, &tmp); err != nil {
        logger.Log(err)
    }
    logger.Log("nats", fmt.Sprintf("Incoming message from topic/subject with data %s", tmp))
}).Subscribe()

Description :

NewSubscriber

Param Description
nats_connection nats connection type stan.Conn
topic/subject Topic/Subject for nats
qGroup Queue Group fill this with your domain name
durable_name Durable subscription ex :authorization-sub
startat Start at
(avaliable option :
all,
seqno ex:sqno:100,
time ex:time:1559291755,
since (click here for information) ex:since:2h
logger logger for logging type from gokit log
func(msg *stan.Msg) Handler incoming message

Vault Client

Get Configuration

Library for getting configuration. This library will get k/v from 2 paths in Vault.

  1. From config/global
  2. From config/{user_defined_path}, existing keys from config/global will be replaced.
Example
//Defining configuration struct
type Config struct {
	DebugAddress       string
	NatsAddress        string
}

//Defining default configuration
var defaultConfig = &Config{
	DebugAddress:       ":9080",
	NatsAddress:        "nats://localhost:4222",
}

func main() {
   error err

   //Create Vault connection
   vaultConn, err := vault.New()

   //Get Configuration from Vault as map[string]string
   cfg, err := vaultConn.GetEnvOrDefaultConfig("path", "defaultConfig")
}

Description :

Param Description
path specific path in config
defaultConfig <map[string]string> default configuration if k/v not found
Write Encrypted

Library to write k/v with encrypted value.

Example
//Create Vault connection
vaultConn, err := vault.New()

//Write k/v
encryptedValue, err := vaultConn.WriteEncrypted("transitkey", "path", "value")

Description :

Param Description
transitkey key to encrypt value
path secret path in Vault
value <[]byte> secret value
Read Encrypted

Library to read k/v with encrypted value.

Example
//Create Vault connection
vaultConn, err := vault.New()

//Write k/v
value, err := vaultConn.ReadEncrypted("transitkey", "path")

Description :

Param Description
transitkey key to decrypt value
path secret path + key in Vault

Directories

Path Synopsis
pkg
db

Jump to

Keyboard shortcuts

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