yiigo

package module
v3.3.1 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2019 License: MIT Imports: 49 Imported by: 0

README

yiigo

golang GoDoc GitHub release MIT license

A simple and light library which makes Golang development easier !

Features

Requirements

Go1.11+

Installation

go get github.com/iiinsomnia/yiigo/v3

Usage

MySQL
// default db
yiigo.RegisterDB(yiigo.AsDefault, yiigo.MySQL, "root:root@tcp(localhost:3306)/test")

yiigo.DB().Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
yiigo.Orm().First(&User{}, 1)

// other db
yiigo.RegisterDB("foo", yiigo.MySQL, "root:root@tcp(localhost:3306)/foo")

yiigo.DB("foo").Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
yiigo.Orm("foo").First(&User{}, 1)
MongoDB
// default mongodb
yiigo.RegisterMongoDB(yiigo.AsDefault, "mongodb://localhost:27017")

ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
yiigo.Mongo().Database("test").Collection("numbers").InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})

// other mongodb
yiigo.RegisterMongoDB("foo", "mongodb://localhost:27017")

ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
yiigo.Mongo("foo").Database("test").Collection("numbers").InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})
Redis
// default redis
yiigo.RegisterRedis(yiigo.AsDefault, "localhost:6379")

conn, err := yiigo.Redis().Get()

if err != nil {
    log.Fatal(err)
}

defer yiigo.Redis().Put(conn)

conn.Do("SET", "test_key", "hello world")

// other redis
yiigo.RegisterRedis("foo", "localhost:6379")

conn, err := yiigo.Redis("foo").Get()

if err != nil {
    log.Fatal(err)
}

defer yiigo.Redis("foo").Put(conn)

conn.Do("SET", "test_key", "hello world")
Config
// env.toml
//
// [app]
// env = "dev"
// debug = true
// port = 50001

yiigo.SetEnvFile("env.toml")

yiigo.Env.Bool("app.debug", true)
yiigo.Env.Int("app.port", 12345)
yiigo.Env.String("app.env", "dev")
Zipkin
reporter := yiigo.NewZipkinHTTPReporter("http://localhost:9411/api/v2/spans")

err := yiigo.RegisterZipkinTracer(yiigo.AsDefault, reporter)

if err != nil {
    log.Fatal(err)
}

client, err := yiigo.ZTracer().HTTPClient()

if err != nil {
    log.Fatal(err)
}

b, err := client.Get(context.Background(), "url...",
    yiigo.WithRequestHeader("Content-Type", "application/json; charset=utf-8"),
    yiigo.WithRequestTimeout(5*time.Second),
)

if err != nil {
    log.Fatal(err)
}

fmt.Println(string(b))
Logger
// default logger
yiigo.RegisterLogger(yiigo.AsDefault, "app.log")
yiigo.Logger().Info("hello world")

// other logger
yiigo.RegisterLogger("foo", "foo.log")
yiigo.Logger("foo").Info("hello world")

Documentation

Enjoy 😊

Documentation

Overview

Package yiigo makes Golang development easier !

Basic usage

MySQL

// default db
yiigo.RegisterDB(yiigo.AsDefault, yiigo.MySQL, "root:root@tcp(localhost:3306)/test")

yiigo.DB().Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
yiigo.Orm().First(&User{}, 1)

// other db
yiigo.RegisterDB("foo", yiigo.MySQL, "root:root@tcp(localhost:3306)/foo")

yiigo.DB("foo").Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
yiigo.Orm("foo").First(&User{}, 1)

MongoDB

// default mongodb
yiigo.RegisterMongoDB(yiigo.AsDefault, "mongodb://localhost:27017")

ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
yiigo.Mongo().Database("test").Collection("numbers").InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})

// other mongodb
yiigo.RegisterMongoDB("foo", "mongodb://localhost:27017")

ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
yiigo.Mongo("foo").Database("test").Collection("numbers").InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})

Redis

// default redis
yiigo.RegisterRedis(yiigo.AsDefault, "localhost:6379")

conn, err := yiigo.Redis().Get()

if err != nil {
    log.Fatal(err)
}

defer yiigo.Redis().Put(conn)

conn.Do("SET", "test_key", "hello world")

// other redis
yiigo.RegisterRedis("foo", "localhost:6379")

conn, err := yiigo.Redis("foo").Get()

if err != nil {
    log.Fatal(err)
}

defer yiigo.Redis("foo").Put(conn)

conn.Do("SET", "test_key", "hello world")

Config

// env.toml
//
// [app]
// env = "dev"
// debug = true
// port = 50001

yiigo.SetEnvFile("env.toml")

yiigo.Env.GetBool("app.debug", true)
yiigo.Env.GetInt("app.port", 12345)
yiigo.Env.GetString("app.env", "dev")

Zipkin

reporter := yiigo.NewZipkinHTTPReporter("http://localhost:9411/api/v2/spans")

err := yiigo.RegisterZipkinTracer(yiigo.AsDefault, reporter)

if err != nil {
    log.Fatal(err)
}

client, err := yiigo.ZTracer().HTTPClient()

if err != nil {
    log.Fatal(err)
}

b, err := client.Get(context.Background(), "url...",
    yiigo.WithRequestHeader("Content-Type", "application/json"),
    yiigo.WithRequestTimeout(5*time.Second),
)

if err != nil {
    log.Fatal(err)
}

fmt.Println(string(b))

Logger

// default logger
yiigo.RegisterLogger(yiigo.AsDefault, "app.log")
yiigo.Logger().Info("hello world")

// other logger
yiigo.RegisterLogger("foo", "foo.log")
yiigo.Logger("foo").Info("hello world")

For more details, see the documentation for the types and methods.

Index

Constants

View Source
const AsDefault = "default"

AsDefault alias for "default"

Variables

View Source
var Env *env

Env enviroment

View Source
var ErrEnvNil = errors.New("yiigo: env config not found")

ErrEnvNil returned when config not found.

Functions

func AESCBCDecrypt

func AESCBCDecrypt(cipherText, key []byte, iv ...byte) ([]byte, error)

AESCBCDecrypt AES CBC decrypt with PKCS#7 unpadding

func AESCBCEncrypt

func AESCBCEncrypt(plainText, key []byte, iv ...byte) ([]byte, error)

AESCBCEncrypt AES CBC encrypt with PKCS#7 padding

func AddSlashes

func AddSlashes(s string) string

AddSlashes returns a string with backslashes added before characters that need to be escaped.

func DB

func DB(name ...string) *sqlx.DB

DB returns a db.

func Date

func Date(timestamp int64, layout ...string) string

Date format a local time/date and returns a string formatted according to the given format string using the given timestamp of int64. The default layout is: 2006-01-02 15:04:05.

func Float64sUnique

func Float64sUnique(a []float64) []float64

Float64sUnique takes an input slice of float64s and returns a new slice of float64s without duplicate values.

func HMAC added in v3.2.4

func HMAC(t, s, key string) string

HMAC Generate a keyed hash value, expects: MD5, SHA1, SHA224, SHA256, SHA384, SHA512.

func HTTPGet

func HTTPGet(url string, options ...HTTPRequestOption) ([]byte, error)

HTTPGet http get request

func HTTPPost

func HTTPPost(url string, body []byte, options ...HTTPRequestOption) ([]byte, error)

HTTPPost http post request

func Hash

func Hash(t, s string) string

Hash Generate a hash value, expects: MD5, SHA1, SHA224, SHA256, SHA384, SHA512.

func IP2Long

func IP2Long(ip string) uint32

IP2Long converts a string containing an (IPv4) Internet Protocol dotted address into a long integer.

func InArray

func InArray(x interface{}, y ...interface{}) bool

InArray checks if x exists in a slice and returns TRUE if x is found.

func InFloat64s

func InFloat64s(x float64, y ...float64) bool

InFloat64s checks if x exists in []float64s and returns TRUE if x is found.

func InInt16s

func InInt16s(x int16, y ...int16) bool

InInt16s checks if x exists in []int16s and returns TRUE if x is found.

func InInt32s

func InInt32s(x int32, y ...int32) bool

InInt32s checks if x exists in []int32s and returns TRUE if x is found.

func InInt64s

func InInt64s(x int64, y ...int64) bool

InInt64s checks if x exists in []int64s and returns TRUE if x is found.

func InInt8s

func InInt8s(x int8, y ...int8) bool

InInt8s checks if x exists in []int8s and returns TRUE if x is found.

func InInts

func InInts(x int, y ...int) bool

InInts checks if x exists in []ints and returns TRUE if x is found.

func InStrings

func InStrings(x string, y ...string) bool

InStrings checks if x exists in []strings and returns TRUE if x is found.

func InUint16s

func InUint16s(x uint16, y ...uint16) bool

InUint16s checks if x exists in []uint16s and returns TRUE if x is found.

func InUint32s

func InUint32s(x uint32, y ...uint32) bool

InUint32s checks if x exists in []uint32s and returns TRUE if x is found.

func InUint64s

func InUint64s(x uint64, y ...uint64) bool

InUint64s checks if x exists in []uint64s and returns TRUE if x is found.

func InUint8s

func InUint8s(x uint8, y ...uint8) bool

InUint8s checks if x exists in []uint8s and returns TRUE if x is found.

func InUints

func InUints(x uint, y ...uint) bool

InUints checks if x exists in []uints and returns TRUE if x is found.

func InsertSQL

func InsertSQL(table string, data interface{}) (string, []interface{})

InsertSQL returns mysql insert sql and binds. param data expects: `struct`, `*struct`, `[]struct`, `[]*struct`, `yiigo.X`, `[]yiigo.X`.

func Int16sUnique

func Int16sUnique(a []int16) []int16

Int16sUnique takes an input slice of int16s and returns a new slice of int16s without duplicate values.

func Int32sUnique

func Int32sUnique(a []int32) []int32

Int32sUnique takes an input slice of int32s and returns a new slice of int32s without duplicate values.

func Int64sUnique

func Int64sUnique(a []int64) []int64

Int64sUnique takes an input slice of int64s and returns a new slice of int64s without duplicate values.

func Int8sUnique

func Int8sUnique(a []int8) []int8

Int8sUnique takes an input slice of int8s and returns a new slice of int8s without duplicate values.

func IntsUnique

func IntsUnique(a []int) []int

IntsUnique takes an input slice of ints and returns a new slice of ints without duplicate values.

func Logger

func Logger(name ...string) *zap.Logger

Logger returns a logger

func Long2IP

func Long2IP(ip uint32) string

Long2IP converts an long integer address into a string in (IPv4) Internet standard dotted format.

func MD5

func MD5(s string) string

MD5 calculate the md5 hash of a string.

func Mongo

func Mongo(name ...string) *mongo.Client

Mongo returns a mongo client.

func MyTimeEncoder

func MyTimeEncoder(t time.Time, e zapcore.PrimitiveArrayEncoder)

MyTimeEncoder zap time encoder.

func NewZipkinHTTPReporter added in v3.2.4

func NewZipkinHTTPReporter(url string, options ...ZipkinReporterOption) reporter.Reporter

NewZipkinHTTPReporter returns a new zipin http reporter

func Orm added in v3.3.0

func Orm(name ...string) *gorm.DB

Orm returns an orm.

func PGInsertSQL

func PGInsertSQL(table string, data interface{}) (string, []interface{})

PGInsertSQL returns postgres insert sql and binds. param data expects: `struct`, `*struct`, `[]struct`, `[]*struct`, `yiigo.X`, `[]yiigo.X`.

func PGUpdateSQL

func PGUpdateSQL(query string, data interface{}, args ...interface{}) (string, []interface{})

PGUpdateSQL returns postgres update sql and binds. param query expects eg: "UPDATE `table` SET $1 WHERE `id` = $2". param data expects: `struct`, `*struct`, `yiigo.X`.

func PKCS7Padding

func PKCS7Padding(cipherText []byte, blockSize int) []byte

PKCS7Padding PKCS#7 padding

func PKCS7UnPadding

func PKCS7UnPadding(plainText []byte, blockSize int) []byte

PKCS7UnPadding PKCS#7 unpadding

func QuoteMeta

func QuoteMeta(s string) string

QuoteMeta returns a version of str with a backslash character (\) before every character that is among these: . \ + * ? [ ^ ] ( $ )

func RegisterDB

func RegisterDB(name string, driver DBDriver, dsn string, options ...DBOption) error

RegisterDB register a db, the param `dsn` eg:

MySQL: `username:password@tcp(localhost:3306)/dbname?timeout=10s&charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&loc=Local`;

Postgres: `host=localhost port=5432 user=root password=secret dbname=test connect_timeout=10 sslmode=disable`.

The default `MaxOpenConns` is 20; The default `MaxIdleConns` is 10; The default `ConnMaxLifetime` is 60s.

func RegisterLogger

func RegisterLogger(name, file string, options ...LogOption)

RegisterLogger register logger

func RegisterMailer

func RegisterMailer(name, host string, port int, account, password string)

RegisterMailer register a mailer

func RegisterMongoDB

func RegisterMongoDB(name, dsn string, options ...MongoOption) error

RegisterMongoDB register a mongodb, the param `dsn` eg: `mongodb://username:password@localhost:27017`.

The default `ConnTimeout` is 10s; The default `PoolSize` is 10; The default `MaxConnIdleTime` is 60s.

func RegisterRedis

func RegisterRedis(name, addr string, options ...RedisOption)

RegisterRedis register a redis.

The default `ConnTimeout` is 10s; The default `ReadTimeout` is 10s; The default `WriteTimeout` is 10s; The default `PoolSize` is 10; The default `PoolLimit` is 20; The default `IdleTimeout` is 60s; The default `WaitTimeout` is 10s; The default `PrefillParallelism` is 0.

func RegisterZipkinTracer added in v3.2.4

func RegisterZipkinTracer(name string, r reporter.Reporter, options ...zipkin.TracerOption) error

RegisterZipkinTracer register a zipkin tracer

func SHA1

func SHA1(s string) string

SHA1 calculate the sha1 hash of a string.

func SearchInt16s

func SearchInt16s(a []int16, x int16) int

SearchInt16s searches for x in a sorted slice of int16s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchInt32s

func SearchInt32s(a []int32, x int32) int

SearchInt32s searches for x in a sorted slice of int32s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchInt64s

func SearchInt64s(a []int64, x int64) int

SearchInt64s searches for x in a sorted slice of int64s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchInt8s

func SearchInt8s(a []int8, x int8) int

SearchInt8s searches for x in a sorted slice of int8s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchUint16s

func SearchUint16s(a []uint16, x uint16) int

SearchUints searches for x in a sorted slice of uint16s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchUint32s

func SearchUint32s(a []uint32, x uint32) int

SearchUint32s searches for x in a sorted slice of uint32s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchUint64s

func SearchUint64s(a []uint64, x uint64) int

SearchUint64s searches for x in a sorted slice of uint64s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchUint8s

func SearchUint8s(a []uint8, x uint8) int

SearchUint8s searches for x in a sorted slice of uint8s and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SearchUints

func SearchUints(a []uint, x uint) int

SearchUints searches for x in a sorted slice of uints and returns the index as specified by Search. The return value is the index to insert x if x is not present (it could be len(a)). The slice must be sorted in ascending order.

func SetEnvFile added in v3.3.0

func SetEnvFile(file string) error

SetEnvFile use `toml` config file.

func SortInt16s

func SortInt16s(a []int16)

SortInt16s sorts []int16s in increasing order.

func SortInt32s

func SortInt32s(a []int32)

SortInt32s sorts []int32s in increasing order.

func SortInt64s

func SortInt64s(a []int64)

SortInt64s sorts []int64s in increasing order.

func SortInt8s

func SortInt8s(a []int8)

SortInt8s sorts []int8s in increasing order.

func SortUint16s

func SortUint16s(a []uint16)

SortUint16s sorts []uint16s in increasing order.

func SortUint32s

func SortUint32s(a []uint32)

SortUint32s sorts []uint32s in increasing order.

func SortUint64s

func SortUint64s(a []uint64)

SortUint64s sorts []uint64s in increasing order.

func SortUint8s

func SortUint8s(a []uint8)

SortUint8s sorts []uint8s in increasing order.

func SortUints

func SortUints(a []uint)

SortUints sorts []uints in increasing order.

func StringsUnique

func StringsUnique(a []string) []string

StringsUnique takes an input slice of strings and returns a new slice of strings without duplicate values.

func StripSlashes

func StripSlashes(s string) string

StripSlashes returns a string with backslashes stripped off. (\' becomes ' and so on.) Double backslashes (\\) are made into a single backslash (\).

func Uint16sUnique

func Uint16sUnique(a []uint16) []uint16

Uint16sUnique takes an input slice of uint16s and returns a new slice of uint16s without duplicate values.

func Uint32sUnique

func Uint32sUnique(a []uint32) []uint32

Uint32sUnique takes an input slice of uint32s and returns a new slice of uint32s without duplicate values.

func Uint64sUnique

func Uint64sUnique(a []uint64) []uint64

Uint64sUnique takes an input slice of uint64s and returns a new slice of uint64s without duplicate values.

func Uint8sUnique

func Uint8sUnique(a []uint8) []uint8

Uint8sUnique takes an input slice of uint8s and returns a new slice of uint8s without duplicate values.

func UintsUnique

func UintsUnique(a []uint) []uint

UintsUnique takes an input slice of uints and returns a new slice of uints without duplicate values.

func UpdateSQL

func UpdateSQL(query string, data interface{}, args ...interface{}) (string, []interface{})

UpdateSQL returns mysql update sql and binds. param query expects eg: "UPDATE `table` SET ? WHERE `id` = ?". param data expects: `struct`, `*struct`, `yiigo.X`.

Types

type CDATA

type CDATA string

CDATA XML CDATA section which is defined as blocks of text that are not parsed by the parser, but are otherwise recognized as markup.

func (CDATA) MarshalXML

func (c CDATA) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML encodes the receiver as zero or more XML elements.

type Concern

type Concern int

Concern for replica sets and replica set shards determines which data to return from a query.

const (
	Local        Concern = 1 // the query should return the instance’s most recent data.
	Available    Concern = 2 // the query should return data from the instance with no guarantee that the data has been written to a majority of the replica set members (i.e. may be rolled back).
	Majority     Concern = 3 // the query should return the instance’s most recent data acknowledged as having been written to a majority of members in the replica set.
	Linearizable Concern = 4 // that the query should return data that reflects all successful writes issued with a write concern of "majority" and acknowledged prior to the start of the read operation.
	Snapshot     Concern = 5 // only available for operations within multi-document transactions.
)

type DBDriver added in v3.3.0

type DBDriver int

DBDriver indicates the db drivers.

const (
	MySQL    DBDriver = 1
	Postgres DBDriver = 2
)

type DBOption

type DBOption interface {
	// contains filtered or unexported methods
}

DBOption configures how we set up the db

func WithDBConnMaxLifetime

func WithDBConnMaxLifetime(d time.Duration) DBOption

WithDBConnMaxLifetime specifies the `ConnMaxLifetime` to db. ConnMaxLifetime sets the maximum amount of time a connection may be reused.

Expired connections may be closed lazily before reuse.

If d <= 0, connections are reused forever.

func WithDBDebug added in v3.3.0

func WithDBDebug(b bool) DBOption

WithDBDebug specifies the `LogMod` to orm.

func WithDBMaxIdleConns

func WithDBMaxIdleConns(n int) DBOption

WithDBMaxIdleConns specifies the `MaxIdleConns` to db. MaxIdleConns sets the maximum number of connections in the idle connection pool.

If MaxOpenConns is greater than 0 but less than the new MaxIdleConns, then the new MaxIdleConns will be reduced to match the MaxOpenConns limit.

If n <= 0, no idle connections are retained.

The default max idle connections is currently 2. This may change in a future release.

func WithDBMaxOpenConns

func WithDBMaxOpenConns(n int) DBOption

WithDBMaxOpenConns specifies the `MaxOpenConns` to db. MaxOpenConns sets the maximum number of open connections to the database.

If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than MaxIdleConns, then MaxIdleConns will be reduced to match the new MaxOpenConns limit.

If n <= 0, then there is no limit on the number of open connections. The default is 0 (unlimited).

type EMail

type EMail struct {
	Title   string
	Subject string
	From    string
	To      []string
	Cc      []string
	Content string
	Attach  []string
}

EMail email

type EMailDialer

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

EMailDialer email dialer

func Mailer

func Mailer(name ...string) *EMailDialer

Mailer returns a mailer

func (*EMailDialer) Send

func (m *EMailDialer) Send(e *EMail, options ...EMailOption) error

Send send an email.

type EMailOption

type EMailOption interface {
	// contains filtered or unexported methods
}

EMailOption configures how we set up the email

func WithEMailCharset

func WithEMailCharset(s string) EMailOption

WithEMailCharset specifies the `Charset` to email.

func WithEMailContentType

func WithEMailContentType(s string) EMailOption

WithEMailContentType specifies the `ContentType` to email.

func WithEMailEncoding

func WithEMailEncoding(e gomail.Encoding) EMailOption

WithEMailEncoding specifies the `Encoding` to email.

type HTTPClient

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

HTTPClient http client

func NewHTTPClient

func NewHTTPClient(options ...HTTPClientOption) *HTTPClient

NewHTTPClient returns a new http client

func (*HTTPClient) Get

func (h *HTTPClient) Get(url string, options ...HTTPRequestOption) ([]byte, error)

Get http get request

func (*HTTPClient) Post

func (h *HTTPClient) Post(url string, body []byte, options ...HTTPRequestOption) ([]byte, error)

Post http post request

type HTTPClientOption

type HTTPClientOption interface {
	// contains filtered or unexported methods
}

HTTPClientOption configures how we set up the http client

func WithHTTPDefaultTimeout added in v3.2.3

func WithHTTPDefaultTimeout(d time.Duration) HTTPClientOption

WithHTTPDefaultTimeout specifies the `DefaultTimeout` to http client.

func WithHTTPDialFallbackDelay

func WithHTTPDialFallbackDelay(d time.Duration) HTTPClientOption

WithHTTPDialFallbackDelay specifies the `FallbackDelay` to net.Dialer.

func WithHTTPDialKeepAlive

func WithHTTPDialKeepAlive(d time.Duration) HTTPClientOption

WithHTTPDialKeepAlive specifies the `KeepAlive` to net.Dialer.

func WithHTTPDialTimeout

func WithHTTPDialTimeout(d time.Duration) HTTPClientOption

WithHTTPDialTimeout specifies the `DialTimeout` to net.Dialer.

func WithHTTPExpectContinueTimeout

func WithHTTPExpectContinueTimeout(d time.Duration) HTTPClientOption

WithHTTPExpectContinueTimeout specifies the `ExpectContinueTimeout` to http client.

func WithHTTPIdleConnTimeout

func WithHTTPIdleConnTimeout(d time.Duration) HTTPClientOption

WithHTTPIdleConnTimeout specifies the `IdleConnTimeout` to http client.

func WithHTTPMaxConnsPerHost

func WithHTTPMaxConnsPerHost(n int) HTTPClientOption

WithHTTPMaxConnsPerHost specifies the `MaxConnsPerHost` to http client.

func WithHTTPMaxIdleConns

func WithHTTPMaxIdleConns(n int) HTTPClientOption

WithHTTPMaxIdleConns specifies the `MaxIdleConns` to http client.

func WithHTTPMaxIdleConnsPerHost

func WithHTTPMaxIdleConnsPerHost(n int) HTTPClientOption

WithHTTPMaxIdleConnsPerHost specifies the `MaxIdleConnsPerHost` to http client.

func WithHTTPTLSConfig

func WithHTTPTLSConfig(c *tls.Config) HTTPClientOption

WithHTTPTLSConfig specifies the `TLSClientConfig` to http client.

func WithHTTPTLSHandshakeTimeout

func WithHTTPTLSHandshakeTimeout(d time.Duration) HTTPClientOption

WithHTTPTLSHandshakeTimeout specifies the `TLSHandshakeTimeout` to http client.

type HTTPRequestOption

type HTTPRequestOption interface {
	// contains filtered or unexported methods
}

HTTPRequestOption configures how we set up the http request

func WithRequestClose

func WithRequestClose(b bool) HTTPRequestOption

WithRequestClose specifies close the connection after replying to this request (for servers) or after sending this request and reading its response (for clients).

func WithRequestCookies

func WithRequestCookies(cookies ...*http.Cookie) HTTPRequestOption

WithRequestCookies specifies the cookies to http request.

func WithRequestHeader

func WithRequestHeader(key, value string) HTTPRequestOption

WithRequestHeader specifies the header to http request.

func WithRequestTimeout

func WithRequestTimeout(d time.Duration) HTTPRequestOption

WithRequestTimeout specifies the timeout to http request.

func WithZipkinSpanTag added in v3.2.3

func WithZipkinSpanTag(key, value string) HTTPRequestOption

WithZipkinSpanTag specifies the zipkin span tag to zipkin http request.

type Int16Slice

type Int16Slice []int16

Int16Slice attaches the methods of Interface to []int16, sorting a increasing order.

func (Int16Slice) Len

func (p Int16Slice) Len() int

func (Int16Slice) Less

func (p Int16Slice) Less(i, j int) bool

func (Int16Slice) Swap

func (p Int16Slice) Swap(i, j int)

type Int32Slice

type Int32Slice []int32

Int32Slice attaches the methods of Interface to []int32, sorting a increasing order.

func (Int32Slice) Len

func (p Int32Slice) Len() int

func (Int32Slice) Less

func (p Int32Slice) Less(i, j int) bool

func (Int32Slice) Swap

func (p Int32Slice) Swap(i, j int)

type Int64Slice

type Int64Slice []int64

Int64Slice attaches the methods of Interface to []int64, sorting a increasing order.

func (Int64Slice) Len

func (p Int64Slice) Len() int

func (Int64Slice) Less

func (p Int64Slice) Less(i, j int) bool

func (Int64Slice) Swap

func (p Int64Slice) Swap(i, j int)

type Int8Slice

type Int8Slice []int8

Int8Slice attaches the methods of Interface to []int8, sorting a increasing order.

func (Int8Slice) Len

func (p Int8Slice) Len() int

func (Int8Slice) Less

func (p Int8Slice) Less(i, j int) bool

func (Int8Slice) Swap

func (p Int8Slice) Swap(i, j int)

type LogOption

type LogOption interface {
	// contains filtered or unexported methods
}

LogOption configures how we set up the logger

func WithLogCompress

func WithLogCompress(b bool) LogOption

WithLogCompress specifies the `Compress` to logger. Compress determines if the rotated log files should be compressed using gzip.

func WithLogDebug

func WithLogDebug(b bool) LogOption

WithLogDebug specifies the `Debug` mode to logger.

func WithLogMaxAge

func WithLogMaxAge(n int) LogOption

WithLogMaxAge specifies the `MaxAge` to logger. MaxAge is the maximum number of days to retain old log files based on the timestamp encoded in their filename. Note that a day is defined as 24 hours and may not exactly correspond to calendar days due to daylight savings, leap seconds, etc. The default is not to remove old log files based on age.

func WithLogMaxBackups

func WithLogMaxBackups(n int) LogOption

WithLogMaxBackups specifies the `MaxBackups` to logger. MaxBackups is the maximum number of old log files to retain. The default is to retain all old log files (though MaxAge may still cause them to get deleted.)

func WithLogMaxSize

func WithLogMaxSize(n int) LogOption

WithLogMaxSize specifies the `MaxSize` to logger. MaxSize is the maximum size in megabytes of the log file before it gets rotated. It defaults to 100 megabytes.

type Mode

type Mode int

Mode indicates the user's preference on reads.

const (
	Primary            Mode = 1 // Default mode. All operations read from the current replica set primary.
	PrimaryPreferred   Mode = 2 // Read from the primary if available. Read from the secondary otherwise.
	Secondary          Mode = 3 // Read from one of the nearest secondary members of the replica set.
	SecondaryPreferred Mode = 4 // Read from one of the nearest secondaries if available. Read from primary otherwise.
	Nearest            Mode = 5 // Read from one of the nearest members, irrespective of it being primary or secondary.
)

type MongoOption

type MongoOption interface {
	// contains filtered or unexported methods
}

MongoOption configures how we set up the mongo

func WithMongoAppName

func WithMongoAppName(s string) MongoOption

WithMongoAppName specifies the `AppName` to mongo. AppName sets the client application name. This value is used by MongoDB when it logs connection information and profile information, such as slow queries.

func WithMongoCompressors

func WithMongoCompressors(s ...string) MongoOption

WithMongoCompressors specifies the `Compressors` to mongo. Compressors sets the compressors that can be used when communicating with a server.

func WithMongoConnTimeout

func WithMongoConnTimeout(d time.Duration) MongoOption

WithMongoConnTimeout specifies the `ConnTimeout` to mongo. ConnectTimeout sets the timeout for an initial connection to a server.

func WithMongoDirect

func WithMongoDirect(b bool) MongoOption

WithMongoDirect specifies the `Direct` to mongo. Direct sets whether the driver should connect directly to the server instead of auto-discovering other servers in the cluster.

func WithMongoHeartbeatInterval

func WithMongoHeartbeatInterval(d time.Duration) MongoOption

WithMongoHeartbeatInterval specifies the `HeartbeatInterval` to mongo. HeartbeatInterval sets the interval to wait between server monitoring checks.

func WithMongoHosts

func WithMongoHosts(s ...string) MongoOption

WithMongoHosts specifies the `Hosts` to mongo. Hosts sets the initial list of addresses from which to discover the rest of the cluster.

func WithMongoLocalThreshold

func WithMongoLocalThreshold(d time.Duration) MongoOption

WithMongoLocalThreshold specifies the `LocalThreshold` to mongo. LocalThreshold sets how far to distribute queries, beyond the server with the fastest round-trip time. If a server's roundtrip time is more than LocalThreshold slower than the the fastest, the driver will not send queries to that server.

func WithMongoMaxConnIdleTime

func WithMongoMaxConnIdleTime(d time.Duration) MongoOption

WithMongoMaxConnIdleTime specifies the `MaxConnIdleTime` to mongo. MaxConnIdleTime sets the maximum number of milliseconds that a connection can remain idle in a connection pool before being removed and closed.

func WithMongoMode

func WithMongoMode(m Mode) MongoOption

WithMongoMode specifies the `Mode` to mongo. Mode sets the read preference.

func WithMongoPoolSize

func WithMongoPoolSize(n int) MongoOption

WithMongoPoolSize specifies the `PoolSize` to mongo. MaxPoolSize sets the max size of a server's connection pool.

func WithMongoReadConcern

func WithMongoReadConcern(c Concern) MongoOption

WithMongoReadConcern specifies the `ReadConcern` to mongo. ReadConcern sets the read concern.

func WithMongoReplicaSet

func WithMongoReplicaSet(s string) MongoOption

WithMongoReplicaSet specifies the `ReplicaSet` to mongo. ReplicaSet sets the name of the replica set of the cluster.

func WithMongoRetryWrites

func WithMongoRetryWrites(b bool) MongoOption

WithMongoRetryWrites specifies the `RetryWrites` to mongo. RetryWrites sets whether the client has retryable writes enabled.

func WithMongoServerSelectionTimeout

func WithMongoServerSelectionTimeout(d time.Duration) MongoOption

WithMongoServerSelectionTimeout specifies the `ServerSelectionTimeout` to mongo. ServerSelectionTimeout sets a timeout in milliseconds to block for server selection.

func WithMongoSocketTimeout

func WithMongoSocketTimeout(d time.Duration) MongoOption

WithMongoSocketTimeout specifies the `SocketTimeout` to mongo. SocketTimeout sets the time in milliseconds to attempt to send or receive on a socket before the attempt times out.

func WithMongoTLSConfig

func WithMongoTLSConfig(c *tls.Config) MongoOption

WithMongoTLSConfig specifies the `TLSConfig` to mongo. SetTLSConfig sets the tls.Config.

func WithMongoWriteConcern

func WithMongoWriteConcern(c ...writeconcern.Option) MongoOption

WithMongoWriteConcern specifies the `WriteConcern` to mongo. WriteConcern sets the write concern.

func WithMongoZlibLevel

func WithMongoZlibLevel(l int) MongoOption

WithMongoZlibLevel specifies the `ZlibLevel` to mongo. ZlibLevel sets the level for the zlib compressor.

type RedisConn

type RedisConn struct {
	redis.Conn
}

RedisConn redis connection resource

func (RedisConn) Close

func (r RedisConn) Close()

Close close connection resorce

type RedisOption

type RedisOption interface {
	// contains filtered or unexported methods
}

RedisOption configures how we set up the db

func WithRedisConnTimeout

func WithRedisConnTimeout(d time.Duration) RedisOption

WithRedisConnTimeout specifies the `ConnTimeout` to redis.

func WithRedisDatabase

func WithRedisDatabase(n int) RedisOption

WithRedisDatabase specifies the `Database` to redis.

func WithRedisIdleTimeout

func WithRedisIdleTimeout(d time.Duration) RedisOption

WithRedisIdleTimeout specifies the `IdleTimeout` to redis.

func WithRedisPassword

func WithRedisPassword(s string) RedisOption

WithRedisPassword specifies the `Password` to redis.

func WithRedisPoolLimit

func WithRedisPoolLimit(n int) RedisOption

WithRedisPoolLimit specifies the `PoolLimit` to redis.

func WithRedisPoolSize

func WithRedisPoolSize(n int) RedisOption

WithRedisPoolSize specifies the `PoolSize` to redis.

func WithRedisPrefillParallelism added in v3.2.2

func WithRedisPrefillParallelism(n int) RedisOption

WithRedisPrefillParallelism specifies the `PrefillParallelism` to redis. A non-zero value of prefillParallelism causes the pool to be pre-filled.

func WithRedisReadTimeout

func WithRedisReadTimeout(d time.Duration) RedisOption

WithRedisReadTimeout specifies the `ReadTimeout` to redis.

func WithRedisWaitTimeout added in v3.2.2

func WithRedisWaitTimeout(d time.Duration) RedisOption

WithRedisWaitTimeout specifies the `WaitTimeout` to redis. A timeout of 0 means an indefinite wait.

func WithRedisWriteTimeout

func WithRedisWriteTimeout(d time.Duration) RedisOption

WithRedisWriteTimeout specifies the `WriteTimeout` to redis.

type RedisPoolResource

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

RedisPoolResource redis pool resource

func Redis

func Redis(name ...string) *RedisPoolResource

Redis returns a redis pool.

func (*RedisPoolResource) Get

func (r *RedisPoolResource) Get() (RedisConn, error)

Get get a connection resource from the pool.

func (*RedisPoolResource) Put

func (r *RedisPoolResource) Put(rc RedisConn)

Put returns a connection resource to the pool.

type Uint16Slice

type Uint16Slice []uint16

Uint16Slice attaches the methods of Interface to []uint16, sorting a increasing order.

func (Uint16Slice) Len

func (p Uint16Slice) Len() int

func (Uint16Slice) Less

func (p Uint16Slice) Less(i, j int) bool

func (Uint16Slice) Swap

func (p Uint16Slice) Swap(i, j int)

type Uint32Slice

type Uint32Slice []uint32

Uint32Slice attaches the methods of Interface to []uint, sorting a increasing order.

func (Uint32Slice) Len

func (p Uint32Slice) Len() int

func (Uint32Slice) Less

func (p Uint32Slice) Less(i, j int) bool

func (Uint32Slice) Swap

func (p Uint32Slice) Swap(i, j int)

type Uint64Slice

type Uint64Slice []uint64

Uint64Slice attaches the methods of Interface to []uint64, sorting a increasing order.

func (Uint64Slice) Len

func (p Uint64Slice) Len() int

func (Uint64Slice) Less

func (p Uint64Slice) Less(i, j int) bool

func (Uint64Slice) Swap

func (p Uint64Slice) Swap(i, j int)

type Uint8Slice

type Uint8Slice []uint8

Uint8Slice attaches the methods of Interface to []uint8, sorting a increasing order.

func (Uint8Slice) Len

func (p Uint8Slice) Len() int

func (Uint8Slice) Less

func (p Uint8Slice) Less(i, j int) bool

func (Uint8Slice) Swap

func (p Uint8Slice) Swap(i, j int)

type UintSlice

type UintSlice []uint

UintSlice attaches the methods of Interface to []uint, sorting a increasing order.

func (UintSlice) Len

func (p UintSlice) Len() int

func (UintSlice) Less

func (p UintSlice) Less(i, j int) bool

func (UintSlice) Swap

func (p UintSlice) Swap(i, j int)

type X

type X map[string]interface{}

X is a convenient alias for a map[string]interface{}.

type ZipkinHTTPClient added in v3.2.4

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

ZipkinHTTPClient zipkin http client

func (*ZipkinHTTPClient) Get added in v3.2.4

func (z *ZipkinHTTPClient) Get(ctx context.Context, url string, options ...HTTPRequestOption) ([]byte, error)

Get zipkin http get request

func (*ZipkinHTTPClient) Post added in v3.2.4

func (z *ZipkinHTTPClient) Post(ctx context.Context, url string, body []byte, options ...HTTPRequestOption) ([]byte, error)

Post zipkin http post request

type ZipkinHTTPClientOption added in v3.2.4

type ZipkinHTTPClientOption interface {
	// contains filtered or unexported methods
}

ZipkinHTTPClientOption configures how we set up the zipkin http client

func WithZipkinClientOptions added in v3.2.4

func WithZipkinClientOptions(options ...zipkinHTTP.ClientOption) ZipkinHTTPClientOption

WithZipkinClientOptions specifies the `Options` to zipkin http client.

func WithZipkinHTTPClient added in v3.2.3

func WithZipkinHTTPClient(options ...HTTPClientOption) ZipkinHTTPClientOption

WithZipkinHTTPClient specifies the `Client` to zipkin http client.

func WithZipkinHTTPTransport added in v3.2.4

func WithZipkinHTTPTransport(options ...zipkinHTTP.TransportOption) ZipkinHTTPClientOption

WithZipkinHTTPTransport specifies the `Transport` to zipkin http client transport.

type ZipkinReporterOption added in v3.2.4

type ZipkinReporterOption interface {
	// contains filtered or unexported methods
}

ZipkinReporterOption configures how we set up the zipkin reporter

func WithZipkinReporterClient added in v3.2.3

func WithZipkinReporterClient(options ...HTTPClientOption) ZipkinReporterOption

WithZipkinReporterClient specifies the `Client` to zipkin reporter.

func WithZipkinReporterOptions added in v3.2.4

func WithZipkinReporterOptions(options ...zipkinHTTPReporter.ReporterOption) ZipkinReporterOption

WithZipkinReporterOptions specifies the `Options` to zipkin reporter.

type ZipkinTracer added in v3.2.4

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

ZipkinTracer zipkin tracer

func ZTracer added in v3.2.4

func ZTracer(name ...string) *ZipkinTracer

ZTracer returns a zipkin tracer

func (*ZipkinTracer) HTTPClient added in v3.2.4

func (z *ZipkinTracer) HTTPClient(options ...ZipkinHTTPClientOption) (*ZipkinHTTPClient, error)

HTTPClient returns a new zipkin http client

func (*ZipkinTracer) Start added in v3.2.4

func (z *ZipkinTracer) Start(req *http.Request) zipkin.Span

Start returns a new zipkin span

use as below:

span := yiigo.ZTracer.Start(r) defer span.Finish() ctx := zipkin.NewContext(r.Context(), span)

Jump to

Keyboard shortcuts

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