util

module
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2022 License: MIT

README

各目录的介绍

his 包

使用Redis作为数据库,实现一些基本的缓存,队列,等等。

该包的实现,依赖于

github.com/garyburd/redigo/redis
NewQueue

创建一个队列

NewLimit 记录管理器
type Limit interface {
Add(key string, delta int) //记录量自增
Sub(key string, delta int) //记录量自减
Get(key string) (cur int, e error)                        //获取当前量
Reset(key string) (cur int, e error) //重置为0
IsToLimit(key string, max int) (b bool, cur int, e error) //是否达上限值
}
NewExist 键是否存在的管理器
type Exist interface {
IsExist(key string) (bool, error)     //key是否存在
Add(key string)                       //添加存在
Del(key string) //移除存在
Count() (sum int, err error) //一共有多少个key
GetAllKey() (all []string, err error) //返回所有的key
}
NewKeyValue kv键值的管理器
type KeyValue interface {
Set(key string, value string) //设置
Get(key string) (value string, err error) //获取
Del(key string)                           //删除
}
NewMapString 创建一个可批量存取的map
type Map interface {
SaddOne(id uint, value string)
Sadd(id uint, values []string) int
SpopOne(id uint) (string, error)
Spop(id uint, count int) ([]string, error)
SpopAll(id uint) ([]string, error)
RangeAll(id uint) ([]string, error)
DeleteKey(id uint)
Length(id uint) int
}

ht 包

主要就是发送http请求的包 可以发送基本的一些请求类型:GETPOSTPUTDELETE。 支持发送 表单jsonbody 的数据。

random 包

生成一些随机数据,对切片进行洗牌打乱。

rlog 包

日志打印包,主要是分颜色打印,不同打印等级,分不同的颜色。 可以自动删除旧日志。

  • SetAutoRemoveLogFile 设置自动删除多少天以前的日志

日志打印等级

const (
    ModelNoPath      PrintModel = 1 //不打印代码文件路径及行号
    ModelNoTime      PrintModel = 2 //不打印日期、时间、时区
    ModelNoPathTime  PrintModel = 3 //不打印代码文件路径及行号、不打印日期、时间、时区
    ModelMustConsole PrintModel = 4
    
    LogLevelDebug    LogLeve = 0 //日志等级debug,该等级打印所有级别的日志
    LogLevelInfo     LogLeve = 1 //日志等级info,该等级仅不打印debug日志
    LogLeveSuccess   LogLeve = 2 //日志等级success,该等级仅不打印debug日志
    LogLevelWarn     LogLeve = 3 //日志等级warn,该等级仅不打印debug,info日志
    LogLevelError    LogLeve = 4 //日志等级Error,该等级仅不打印debug,info,warn日志
    LogLevelPanic    LogLeve = 5 //日志等级Panic,该等级仅不打印debug,info,warn,error日志
    LogLevelNotPrint LogLeve = 6 //日志等级最高,该等级不打印任何日志
)

rui 包

这个包,主要就是建立 http 服务的包,精简版。 本包借鉴了 github.com/kataras/iris/v12 github.com/gin-gonic/gin 的一些常用特点。

OpenValidator() //开启验证器 ReadBodyJsonBindWhereFormValueBindPostFormValueBind 这3个绑定函数,默认采用验证器验证字段的值,主要,需要提前开启验证器,这里才会进行验证。 具体的验证规则,请查看:https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Multiple_Validators

const (
ContentTypeDownload = `application/force-download` //文件下载

ContentTypeDefault = `text/plain; charset=UTF-8` //文本
ContentTypeJSON    = `application/json; charset=UTF-8` //json
ContentTypeHTML = `text/html; charset=UTF-8`           //HTML
ContentTypeXJS = `application/x-javascript;charset=UTF-8` //JavaScript
ContentTypeJS = `text/javascript; charset=utf-8`          //JavaScript
ContentTypeCSS = `text/css; charset=utf-8`                //CSS

ContentTypeImageJPEG = `image/jpeg` //jpeg图片
ContentTypeImageJPG = `image/jpeg`  //jpg图片
ContentTypeImagePNG = `image/png`    //png图片
ContentTypeImageWEBP = `image/webp`  //webp图片
ContentTypeImageGIF = `image/gif`    //gif图片
ContentTypeImageICON = `image/x-icon` //icon图标

ContentTypeImageOctetStream = `application/octet-stream` //八位字节流
)

type Application interface {
RouterGroup
AllHandleFunc() []RouterItem //返回所有的请求信息
PrintAllRequest() //打印所有的请求信息
Run(host string, port uint) error //以http运行
RunTLS(host string, port uint, certFile string, keyFile string) error //以https方式运行
OpenValidator() //开启验证器
}


type RouterGroup interface {
Use(handle ...func (Context)) //中间件
Group(urlPath string) RouterGroup //请求分组

GET(urlPath string, handle func (Context)) //GET请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
HEAD(urlPath string, handle func (Context))    //HEAD请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
OPTIONS(urlPath string, handle func (Context)) //OPTIONS请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
options(urlPath string, handle func(Context)) //OPTIONS请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
POST(urlPath string, handle func (Context)) //POST请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
PUT(urlPath string, handle func (Context)) //PUT请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
PATCH(urlPath string, handle func (Context))   //PATCH请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
DELETE(urlPath string, handle func (Context)) //DELETE请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc
Any(urlPath string, handle func(Context)) //以上所有请求,自定义WebSocket链接请使用 WebSocket 或 Handler 或 HandlerFunc

WebSocket(urlPath string, CheckOrigin bool, fx func (*websocket.Conn)) //WebSocket服务,CheckOrigin是否允许跨域访问
StaticFile(urlPath string, filePath string) //一个文件的静态文件服务
ServeFiles(urlPath string, root http.FileSystem) //多个文件的静态文件服务;注意,静态文件服务,是不过中间件的。
Handler(method string, urlPath string, handler http.Handler) //原生http响应;注意,原生http响应,是不过中间件的。
HandlerFunc(method string, urlPath string, handler http.HandlerFunc)  //原生http响应函数;注意,原生http响应,是不过中间件的。
}

type Context interface {
Request() *http.Request //返回原生的请求指针。
ResponseHeader() http.Header //响应头管理。

StopNext() //终止后续响应函数。
SetKV(key string, value any) //设置key-value,可以供后续流程获取到。
GetKV(key string) (any, error) //根据key获取value。
GetKVInt(key string, def ...int) int //根据key获取value,并且转为int类型,如果不存在或出错则默认或def[0]。
GetKVUint(key string, def ...uint) uint          //根据key获取value,并且转为uint类型,如果不存在或出错则默认或def[0]。
GetKVInt64(key string, def ...int64) int64 //根据key获取value,并且转为int64类型,如果不存在或出错则默认或def[0]。
GetKVUint64(key string, def ...uint64) uint64 //根据key获取value,并且转为uint64类型,如果不存在或出错则默认或def[0]。
GetKVFloat64(key string, def ...float64) float64 //根据key获取value,并且转为float64类型,如果不存在或出错则默认或def[0]。
GetKVBool(key string, def ...bool) bool //根据key获取value,并且转为bool类型,如果不存在或出错则默认或def[0]。

SetStatusCode(code int)            //设置http状态码。
SetContentType(contentType string) //设置文档类型。

ReadBody() []byte //获取请求体内容。
ReadCopyBody() []byte                    //复制一份请求体出来。
ReadBodyJsonBind(pointer any) error      //读取请求体,json解码到结构体,参数pointer必须是地址类型。
ReadBodyJsonBindWhere(pointer any) error //读取请求体,json解码到结构体,参数pointer必须是地址类型。validator验证器。

Write(bs []byte) //写入响应体内容。该写入方式记录响应体内容。
WriteFile(bs []byte, contentType string) //写入响应体内容,文件内容,该写入方式,不被记录响应体。
WriteString(s string)                    //写入响应体内容。该写入方式记录响应体内容。
WriteJson(pointer any) //写入响应体内容并设置文档类型为json,参数pointer必须是指针类型。该写入方式记录响应体内容。
WriteStd(code int, msg string, data any, other any) //写入响应体内容并设置文档类型为json,会生成标准的json返回内容。该写入方式记录响应体内容。

GetIP() netip.AddrPort //获取IP地址,假如是反向代理过来的,获取的结果将会是反向代理服务器的IP。如果需要获取相对真实的IP,请使用GetFirstIP。
GetFirstIP() string     //获取相对真实的IP地址,获取优先级:X-Real-IP、X-Forwarded-For、RemoteAddr。
GetIpByXRealIP() string //获取请求头X-Real-IP。
GetIpByXForwardedFor() string //获取请求头X-Forwarded-For。

GetPath() string //获取请求路径。
GetURL() *url.URL //获取请求URL。

ParamsGet(key string, def ...string) string //获取请求路径参数,如果不存在或出错则默认或def[0],比如 /user/:id 获取这个id。
ParamsGetInt(key string, def ...int) int //获取请求路径参数,如果不存在或出错则默认或def[0],并转为int类型,比如 /user/:id 获取这个id。
ParamsGetInt64(key string, def ...int64) int64 //获取请求路径参数,如果不存在或出错则默认或def[0],并转为int64类型,比如 /user/:id 获取这个id。
ParamsGetUint(key string, def ...uint) uint //获取请求路径参数,如果不存在或出错则默认或def[0],并转为uint类型,比如 /user/:id 获取这个id。
ParamsGetUint64(key string, def ...uint64) uint64    //获取请求路径参数,如果不存在或出错则默认或def[0],并转为uint64类型,比如 /user/:id 获取这个id。
ParamsGetBool(key string, def ...bool) bool //获取请求路径参数,如果不存在或出错则默认或def[0],并转为bool类型,比如 /user/:id 获取这个id。
ParamsGetFloat64(key string, def ...float64) float64 //获取请求路径参数,如果不存在或出错则默认或def[0],并转为float64类型,比如 /user/:id 获取这个id。

FormValue(key string, def ...string) string //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0]。
FormValues(key string, def ...[]string) []string //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0]。
FormValueInt(key string, def ...int) int //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int类型。
FormValueInts(key string, def ...[]int) []int //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int类型。
FormValueUint(key string, def ...uint) uint //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint类型。
FormValueUints(key string, def ...[]uint) []uint          //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint类型。
FormValueInt64(key string, def ...int64) int64 //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int64类型。
FormValueInt64s(key string, def ...[]int64) []int64 //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int64类型。
FormValueUint64(key string, def ...uint64) uint64 //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint64类型。
FormValueUint64s(key string, def ...[]uint64) []uint64 //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint64类型。
FormValueBool(key string, def ...bool) bool //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为bool类型。
FormValueBools(key string, def ...[]bool) []bool //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为bool类型。
FormValueFloat64(key string, def ...float64) float64 //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为float64类型。
FormValueFloat64s(key string, def ...[]float64) []float64 //GET,DELETE请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为float64类型。
FormValueBind(pointer any) error //GET,DELETE请求,获取普通表单字段并且绑定结构体,结构体字段不能为数组或切片;值绑定采用tag = form或json,默认validator验证器。

PostFormValue(key string, def ...string) string //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0]。
PostFormValues(key string, def ...[]string) []string //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0]。
PostFormValueInt(key string, def ...int) int //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int类型。
PostFormValueInts(key string, def ...[]int) []int //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int类型。
PostFormValueUint(key string, def ...uint) uint //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint类型。
PostFormValueUints(key string, def ...[]uint) []uint //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint类型。
PostFormValueInt64(key string, def ...int64) int64            //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int64类型。
PostFormValueInt64s(key string, def ...[]int64) []int64 //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为int64类型。
PostFormValueUint64(key string, def ...uint64) uint64 //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint64类型。
PostFormValueUint64s(key string, def ...[]uint64) []uint64 //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为uint64类型。
PostFormValueBool(key string, def ...bool) bool //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为bool类型。
PostFormValueBools(key string, def ...[]bool) []bool //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为bool类型。
PostFormValueFloat64(key string, def ...float64) float64 //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为float64类型。
PostFormValueFloat64s(key string, def ...[]float64) []float64 //POST,PUT请求,获取普通表单字段,如果不存在或出错则默认或def[0],并转为float64类型。
PostFormValueBind(pointer any) error                          //POST,PUT请求,获取普通表单字段并且绑定结构体,结构体字段不能为数组或切片;值绑定采用tag = form或json,默认validator验证器。

File(key string) (multipart.File, *multipart.FileHeader, error) //POST,PUT请求,获取表单上传的文件。
FileSave(key string, savePath string) (string, error) //POST,PUT请求,获取表单上传的文件并保存,返回文件名sha256值+扩展名。
FilesSave(savePath string) ([]string, error) //POST,PUT请求,接收多文件并且存储,返回文件名切片,文件名sha256值+扩展名。

ResponseBody() []byte //响应体当前的内容。
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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