util

module
v0.0.21 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 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)                        //获取当前量
    Del(key string)                                           //删除记录
    Reset(key string) (cur int, e error)                      //重置为0
    IsToLimit(key string, max int) (b bool, cur int, e error) //是否达上限值
    GetAll() (kv map[string]int, err error)                   //获取所有的记录
    ClearAll()                                                //删除所有
}
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
    ClearAll()                            //删除所有
}
NewKeyValue kv键值的管理器
type KeyValue interface {
    Set(key string, value string)              //设置
    Get(key string) (value string, err error)  //获取
    Del(key string)                            //删除
    GetAll() (kv map[string]string, err error) //获取所有的K-V
    ClearAll()                                 //删除所有
}
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 //必须打印控制台日志
    ModelNoConsole   PrintModel = 5 //不打印到控制台
    ModelMustFile    PrintModel = 6 //必须打印到文件日志
    ModelNoFile      PrintModel = 7 //不打印到文件
    ModelMustAll     PrintModel = 8 //必须打印到控制台日志和文件日志
    
    LogLevelDebug    LogLeve = 0 //日志等级debug,该等级打印所有级别的日志
    LogLevelInfo     LogLeve = 1 //日志等级info,该等级仅不打印debug日志
    LogLeveSuccess   LogLeve = 2 //日志等级success,该等级仅不打印debug,info日志
    LogLevelWarn     LogLeve = 3 //日志等级warn,该等级仅不打印debug,info,success日志
    LogLevelError    LogLeve = 4 //日志等级Error,该等级仅不打印debug,info,success,warn日志
    LogLevelPanic    LogLeve = 5 //日志等级Panic,该等级仅不打印debug,info,success,warn,error日志
    LogLevelNotPrint LogLeve = 6 //日志等级最高,该等级不打印任何日志
    
    // TimeFormatDefault 输出日志,前面时间的格式
    TimeFormatDefault   LogTimeFormat = `2006/01/02·15:04:05.000-0700 `
    TimeFormatYMDHMSmsZ LogTimeFormat = `2006/01/02·15:04:05.000-0700 `
    TimeFormatYMDHMSZ   LogTimeFormat = `2006/01/02·15:04:05-0700 `
    TimeFormatYMDHMS    LogTimeFormat = `2006/01/02·15:04:05 `
    TimeFormatYMDHMSms  LogTimeFormat = `2006/01/02·15:04:05.000 `
    TimeFormatMDHMSmsZ  LogTimeFormat = `01/02·15:04:05.000-0700 `
    TimeFormatMDHMSZ    LogTimeFormat = `01/02·15:04:05-0700 `
    TimeFormatMDHMS     LogTimeFormat = `01/02·15:04:05 `
    TimeFormatMDHMSms   LogTimeFormat = `01/02·15:04:05.000 `
    TimeFormatHMSmsZ    LogTimeFormat = `15:04:05.000-0700 `
    TimeFormatHMSZ      LogTimeFormat = `15:04:05-0700 `
    TimeFormatHMS       LogTimeFormat = `15:04:05 `
    TimeFormatHMSms     LogTimeFormat = `15:04:05.000 `
)

rui 包(后续将直接移除该包,请使用 iris 代替)

这个包,主要就是建立 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