diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e11a696..d0ec860d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
# developing
+- [httplib: fix unstable unit test which use the httplib.org](https://github.com/beego/beego/pull/5232)
# v2.1.0
- [unified gopkg.in/yaml version to v2](https://github.com/beego/beego/pull/5169)
diff --git a/README.md b/README.md
index 1d22455b..36480f82 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,8 @@ Beego is composed of four parts:
**Please use RELEASE version, or master branch which contains the latest bug fix**
+**We will remove the adapter package in v2.2.0 which will be released in Aug 2023**
+
## Quick Start
[Old Doc - github](https://github.com/beego/beedoc)
diff --git a/adapter/admin.go b/adapter/admin.go
index 527cb201..260bd947 100644
--- a/adapter/admin.go
+++ b/adapter/admin.go
@@ -24,7 +24,8 @@ import (
// FilterMonitorFunc is default monitor filter when admin module is enable.
// if this func returns, admin module records qps for this request by condition of this function logic.
// usage:
-// func MyFilterMonitor(method, requestPath string, t time.Duration, pattern string, statusCode int) bool {
+//
+// func MyFilterMonitor(method, requestPath string, t time.Duration, pattern string, statusCode int) bool {
// if method == "POST" {
// return false
// }
@@ -35,8 +36,8 @@ import (
// return false
// }
// return true
-// }
-// beego.FilterMonitorFunc = MyFilterMonitor.
+// }
+// beego.FilterMonitorFunc = MyFilterMonitor.
var FilterMonitorFunc func(string, string, time.Duration, string, int) bool
// PrintTree prints all registered routers.
diff --git a/adapter/app.go b/adapter/app.go
index aaf85a17..61c7519c 100644
--- a/adapter/app.go
+++ b/adapter/app.go
@@ -58,19 +58,20 @@ func oldMiddlewareToNew(mws []MiddleWare) []web.MiddleWare {
// Router adds a patterned controller handler to BeeApp.
// it's an alias method of HttpServer.Router.
// usage:
-// simple router
-// beego.Router("/admin", &admin.UserController{})
-// beego.Router("/admin/index", &admin.ArticleController{})
//
-// regex router
+// simple router
+// beego.Router("/admin", &admin.UserController{})
+// beego.Router("/admin/index", &admin.ArticleController{})
//
-// beego.Router("/api/:id([0-9]+)", &controllers.RController{})
+// regex router
//
-// custom rules
-// beego.Router("/api/list",&RestController{},"*:ListFood")
-// beego.Router("/api/create",&RestController{},"post:CreateFood")
-// beego.Router("/api/update",&RestController{},"put:UpdateFood")
-// beego.Router("/api/delete",&RestController{},"delete:DeleteFood")
+// beego.Router("/api/:id([0-9]+)", &controllers.RController{})
+//
+// custom rules
+// beego.Router("/api/list",&RestController{},"*:ListFood")
+// beego.Router("/api/create",&RestController{},"post:CreateFood")
+// beego.Router("/api/update",&RestController{},"put:UpdateFood")
+// beego.Router("/api/delete",&RestController{},"delete:DeleteFood")
func Router(rootpath string, c ControllerInterface, mappingMethods ...string) *App {
return (*App)(web.Router(rootpath, c, mappingMethods...))
}
@@ -82,8 +83,9 @@ func Router(rootpath string, c ControllerInterface, mappingMethods ...string) *A
// method type (e.g. "GET" or "POST") for selective removal.
//
// Usage (replace "GET" with "*" for all methods):
-// beego.UnregisterFixedRoute("/yourpreviouspath", "GET")
-// beego.Router("/yourpreviouspath", yourControllerAddress, "get:GetNewPage")
+//
+// beego.UnregisterFixedRoute("/yourpreviouspath", "GET")
+// beego.Router("/yourpreviouspath", yourControllerAddress, "get:GetNewPage")
func UnregisterFixedRoute(fixedRoute string, method string) *App {
return (*App)(web.UnregisterFixedRoute(fixedRoute, method))
}
@@ -91,26 +93,29 @@ func UnregisterFixedRoute(fixedRoute string, method string) *App {
// Include will generate router file in the router/xxx.go from the controller's comments
// usage:
// beego.Include(&BankAccount{}, &OrderController{},&RefundController{},&ReceiptController{})
-// type BankAccount struct{
-// beego.Controller
-// }
+//
+// type BankAccount struct{
+// beego.Controller
+// }
//
// register the function
-// func (b *BankAccount)Mapping(){
-// b.Mapping("ShowAccount" , b.ShowAccount)
-// b.Mapping("ModifyAccount", b.ModifyAccount)
-// }
+//
+// func (b *BankAccount)Mapping(){
+// b.Mapping("ShowAccount" , b.ShowAccount)
+// b.Mapping("ModifyAccount", b.ModifyAccount)
+// }
//
// //@router /account/:id [get]
-// func (b *BankAccount) ShowAccount(){
-// //logic
-// }
//
+// func (b *BankAccount) ShowAccount(){
+// //logic
+// }
//
// //@router /account/:id [post]
-// func (b *BankAccount) ModifyAccount(){
-// //logic
-// }
+//
+// func (b *BankAccount) ModifyAccount(){
+// //logic
+// }
//
// the comments @router url methodlist
// url support all the function Router's pattern
@@ -153,9 +158,10 @@ func AutoPrefix(prefix string, c ControllerInterface) *App {
// Get used to register router for Get method
// usage:
-// beego.Get("/", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Get("/", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Get(rootpath string, f FilterFunc) *App {
return (*App)(web.Get(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -164,9 +170,10 @@ func Get(rootpath string, f FilterFunc) *App {
// Post used to register router for Post method
// usage:
-// beego.Post("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Post("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Post(rootpath string, f FilterFunc) *App {
return (*App)(web.Post(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -175,9 +182,10 @@ func Post(rootpath string, f FilterFunc) *App {
// Delete used to register router for Delete method
// usage:
-// beego.Delete("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Delete("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Delete(rootpath string, f FilterFunc) *App {
return (*App)(web.Delete(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -186,9 +194,10 @@ func Delete(rootpath string, f FilterFunc) *App {
// Put used to register router for Put method
// usage:
-// beego.Put("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Put("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Put(rootpath string, f FilterFunc) *App {
return (*App)(web.Put(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -197,9 +206,10 @@ func Put(rootpath string, f FilterFunc) *App {
// Head used to register router for Head method
// usage:
-// beego.Head("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Head("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Head(rootpath string, f FilterFunc) *App {
return (*App)(web.Head(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -208,9 +218,10 @@ func Head(rootpath string, f FilterFunc) *App {
// Options used to register router for Options method
// usage:
-// beego.Options("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Options("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Options(rootpath string, f FilterFunc) *App {
return (*App)(web.Options(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -219,9 +230,10 @@ func Options(rootpath string, f FilterFunc) *App {
// Patch used to register router for Patch method
// usage:
-// beego.Patch("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Patch("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Patch(rootpath string, f FilterFunc) *App {
return (*App)(web.Patch(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -230,9 +242,10 @@ func Patch(rootpath string, f FilterFunc) *App {
// Any used to register router for all methods
// usage:
-// beego.Any("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// beego.Any("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func Any(rootpath string, f FilterFunc) *App {
return (*App)(web.Any(rootpath, func(ctx *context.Context) {
f((*context2.Context)(ctx))
@@ -241,9 +254,10 @@ func Any(rootpath string, f FilterFunc) *App {
// Handler used to register a Handler router
// usage:
-// beego.Handler("/api", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
-// fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
-// }))
+//
+// beego.Handler("/api", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
+// fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
+// }))
func Handler(rootpath string, h http.Handler, options ...interface{}) *App {
return (*App)(web.Handler(rootpath, h, options...))
}
diff --git a/adapter/cache/cache.go b/adapter/cache/cache.go
index 9e3abfd3..0e3762b6 100644
--- a/adapter/cache/cache.go
+++ b/adapter/cache/cache.go
@@ -16,7 +16,9 @@
// Usage:
//
// import(
-// "github.com/beego/beego/v2/client/cache"
+//
+// "github.com/beego/beego/v2/client/cache"
+//
// )
//
// bm, err := cache.NewCache("memory", `{"interval":60}`)
@@ -27,7 +29,6 @@
// bm.Get("astaxie")
// bm.IsExist("astaxie")
// bm.Delete("astaxie")
-//
package cache
import (
@@ -37,6 +38,7 @@ import (
// Cache interface contains all behaviors for cache adapter.
// usage:
+//
// cache.Register("file",cache.NewFileCache) // this operation is run in init method of file.go.
// c,err := cache.NewCache("file","{....}")
// c.Put("key",value, 3600 * time.Second)
diff --git a/adapter/cache/memcache/memcache.go b/adapter/cache/memcache/memcache.go
index 180e8e15..72372376 100644
--- a/adapter/cache/memcache/memcache.go
+++ b/adapter/cache/memcache/memcache.go
@@ -20,12 +20,13 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/client/cache/memcache"
-// "github.com/beego/beego/v2/client/cache"
+//
+// _ "github.com/beego/beego/v2/client/cache/memcache"
+// "github.com/beego/beego/v2/client/cache"
+//
// )
//
-// bm, err := cache.NewCache("memcache", `{"conn":"127.0.0.1:11211"}`)
-//
+// bm, err := cache.NewCache("memcache", `{"conn":"127.0.0.1:11211"}`)
package memcache
import (
diff --git a/adapter/cache/redis/redis.go b/adapter/cache/redis/redis.go
index 7c7bff80..c830f34b 100644
--- a/adapter/cache/redis/redis.go
+++ b/adapter/cache/redis/redis.go
@@ -20,12 +20,13 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/client/cache/redis"
-// "github.com/beego/beego/v2/client/cache"
+//
+// _ "github.com/beego/beego/v2/client/cache/redis"
+// "github.com/beego/beego/v2/client/cache"
+//
// )
//
-// bm, err := cache.NewCache("redis", `{"conn":"127.0.0.1:11211"}`)
-//
+// bm, err := cache.NewCache("redis", `{"conn":"127.0.0.1:11211"}`)
package redis
import (
diff --git a/adapter/config/config.go b/adapter/config/config.go
index 2a96a293..0b9a9c7d 100644
--- a/adapter/config/config.go
+++ b/adapter/config/config.go
@@ -14,29 +14,31 @@
// Package config is used to parse config.
// Usage:
-// import "github.com/beego/beego/v2/core/config"
+//
+// import "github.com/beego/beego/v2/core/config"
+//
// Examples.
//
-// cnf, err := config.NewConfig("ini", "config.conf")
+// cnf, err := config.NewConfig("ini", "config.conf")
//
-// cnf APIS:
+// cnf APIS:
//
-// cnf.Set(key, val string) error
-// cnf.String(key string) string
-// cnf.Strings(key string) []string
-// cnf.Int(key string) (int, error)
-// cnf.Int64(key string) (int64, error)
-// cnf.Bool(key string) (bool, error)
-// cnf.Float(key string) (float64, error)
-// cnf.DefaultString(key string, defaultVal string) string
-// cnf.DefaultStrings(key string, defaultVal []string) []string
-// cnf.DefaultInt(key string, defaultVal int) int
-// cnf.DefaultInt64(key string, defaultVal int64) int64
-// cnf.DefaultBool(key string, defaultVal bool) bool
-// cnf.DefaultFloat(key string, defaultVal float64) float64
-// cnf.DIY(key string) (interface{}, error)
-// cnf.GetSection(section string) (map[string]string, error)
-// cnf.SaveConfigFile(filename string) error
+// cnf.Set(key, val string) error
+// cnf.String(key string) string
+// cnf.Strings(key string) []string
+// cnf.Int(key string) (int, error)
+// cnf.Int64(key string) (int64, error)
+// cnf.Bool(key string) (bool, error)
+// cnf.Float(key string) (float64, error)
+// cnf.DefaultString(key string, defaultVal string) string
+// cnf.DefaultStrings(key string, defaultVal []string) []string
+// cnf.DefaultInt(key string, defaultVal int) int
+// cnf.DefaultInt64(key string, defaultVal int64) int64
+// cnf.DefaultBool(key string, defaultVal bool) bool
+// cnf.DefaultFloat(key string, defaultVal float64) float64
+// cnf.DIY(key string) (interface{}, error)
+// cnf.GetSection(section string) (map[string]string, error)
+// cnf.SaveConfigFile(filename string) error
package config
import (
@@ -128,6 +130,7 @@ func ExpandValueEnvForMap(m map[string]interface{}) map[string]interface{} {
//
// It accept value formats "${env}" , "${env||}}" , "${env||defaultValue}" , "defaultvalue".
// Examples:
+//
// v1 := config.ExpandValueEnv("${GOPATH}") // return the GOPATH environment variable.
// v2 := config.ExpandValueEnv("${GOAsta||/usr/local/go}") // return the default value "/usr/local/go/".
// v3 := config.ExpandValueEnv("Astaxie") // return the value "Astaxie".
diff --git a/adapter/config/env/env_test.go b/adapter/config/env/env_test.go
index 3f1d4dba..3f9694d7 100644
--- a/adapter/config/env/env_test.go
+++ b/adapter/config/env/env_test.go
@@ -5,7 +5,7 @@
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
-// http://www.apache.org/licenses/LICENSE-2.0
+// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/adapter/config/xml/xml.go b/adapter/config/xml/xml.go
index d5ba6fd0..9de6d6c1 100644
--- a/adapter/config/xml/xml.go
+++ b/adapter/config/xml/xml.go
@@ -19,13 +19,13 @@
// go install github.com/beego/x2j.
//
// Usage:
-// import(
-// _ "github.com/beego/beego/v2/core/config/xml"
-// "github.com/beego/beego/v2/core/config"
-// )
//
-// cnf, err := config.NewConfig("xml", "config.xml")
+// import(
+// _ "github.com/beego/beego/v2/core/config/xml"
+// "github.com/beego/beego/v2/core/config"
+// )
//
+// cnf, err := config.NewConfig("xml", "config.xml")
package xml
import (
diff --git a/adapter/config/yaml/yaml.go b/adapter/config/yaml/yaml.go
index ef6296fa..6697aaf6 100644
--- a/adapter/config/yaml/yaml.go
+++ b/adapter/config/yaml/yaml.go
@@ -19,13 +19,13 @@
// go install github.com/beego/goyaml2
//
// Usage:
-// import(
-// _ "github.com/beego/beego/v2/core/config/yaml"
-// "github.com/beego/beego/v2/core/config"
-// )
//
-// cnf, err := config.NewConfig("yaml", "config.yaml")
+// import(
+// _ "github.com/beego/beego/v2/core/config/yaml"
+// "github.com/beego/beego/v2/core/config"
+// )
//
+// cnf, err := config.NewConfig("yaml", "config.yaml")
package yaml
import (
diff --git a/adapter/context/context.go b/adapter/context/context.go
index 82f8e63a..0f399adb 100644
--- a/adapter/context/context.go
+++ b/adapter/context/context.go
@@ -18,7 +18,6 @@
// import "github.com/beego/beego/v2/server/web/context"
//
// ctx := context.Context{Request:req,ResponseWriter:rw}
-//
package context
import (
diff --git a/adapter/controller.go b/adapter/controller.go
index 6d2d5f64..2c48be89 100644
--- a/adapter/controller.go
+++ b/adapter/controller.go
@@ -296,31 +296,33 @@ func (c *Controller) GetFile(key string) (multipart.File, *multipart.FileHeader,
// GetFiles return multi-upload files
// files, err:=c.GetFiles("myfiles")
+//
// if err != nil {
// http.Error(w, err.Error(), http.StatusNoContent)
// return
// }
-// for i, _ := range files {
-// //for each fileheader, get a handle to the actual file
-// file, err := files[i].Open()
-// defer file.Close()
-// if err != nil {
-// http.Error(w, err.Error(), http.StatusInternalServerError)
-// return
+//
+// for i, _ := range files {
+// //for each fileheader, get a handle to the actual file
+// file, err := files[i].Open()
+// defer file.Close()
+// if err != nil {
+// http.Error(w, err.Error(), http.StatusInternalServerError)
+// return
+// }
+// //create destination file making sure the path is writeable.
+// dst, err := os.Create("upload/" + files[i].Filename)
+// defer dst.Close()
+// if err != nil {
+// http.Error(w, err.Error(), http.StatusInternalServerError)
+// return
+// }
+// //copy the uploaded file to the destination file
+// if _, err := io.Copy(dst, file); err != nil {
+// http.Error(w, err.Error(), http.StatusInternalServerError)
+// return
+// }
// }
-// //create destination file making sure the path is writeable.
-// dst, err := os.Create("upload/" + files[i].Filename)
-// defer dst.Close()
-// if err != nil {
-// http.Error(w, err.Error(), http.StatusInternalServerError)
-// return
-// }
-// //copy the uploaded file to the destination file
-// if _, err := io.Copy(dst, file); err != nil {
-// http.Error(w, err.Error(), http.StatusInternalServerError)
-// return
-// }
-// }
func (c *Controller) GetFiles(key string) ([]*multipart.FileHeader, error) {
return (*web.Controller)(c).GetFiles(key)
}
diff --git a/adapter/error.go b/adapter/error.go
index 67f2ab82..62ded60e 100644
--- a/adapter/error.go
+++ b/adapter/error.go
@@ -182,7 +182,8 @@ var ErrorMaps = web.ErrorMaps
// ErrorHandler registers http.HandlerFunc to each http err code string.
// usage:
-// beego.ErrorHandler("404",NotFound)
+//
+// beego.ErrorHandler("404",NotFound)
// beego.ErrorHandler("500",InternalServerError)
func ErrorHandler(code string, h http.HandlerFunc) *App {
return (*App)(web.ErrorHandler(code, h))
@@ -190,7 +191,8 @@ func ErrorHandler(code string, h http.HandlerFunc) *App {
// ErrorController registers ControllerInterface to each http err code string.
// usage:
-// beego.ErrorController(&controllers.ErrorController{})
+//
+// beego.ErrorController(&controllers.ErrorController{})
func ErrorController(c ControllerInterface) *App {
return (*App)(web.ErrorController(c))
}
diff --git a/adapter/grace/grace.go b/adapter/grace/grace.go
index de047eb1..0df47b61 100644
--- a/adapter/grace/grace.go
+++ b/adapter/grace/grace.go
@@ -18,28 +18,30 @@
// Usage:
//
// import(
-// "log"
-// "net/http"
-// "os"
//
-// "github.com/beego/beego/v2/server/web/grace"
+// "log"
+// "net/http"
+// "os"
+//
+// "github.com/beego/beego/v2/server/web/grace"
+//
// )
//
-// func handler(w http.ResponseWriter, r *http.Request) {
-// w.Write([]byte("WORLD!"))
-// }
+// func handler(w http.ResponseWriter, r *http.Request) {
+// w.Write([]byte("WORLD!"))
+// }
//
-// func main() {
-// mux := http.NewServeMux()
-// mux.HandleFunc("/hello", handler)
+// func main() {
+// mux := http.NewServeMux()
+// mux.HandleFunc("/hello", handler)
//
-// err := grace.ListenAndServe("localhost:8080", mux)
-// if err != nil {
-// log.Println(err)
-// }
-// log.Println("Server on 8080 stopped")
-// os.Exit(0)
-// }
+// err := grace.ListenAndServe("localhost:8080", mux)
+// if err != nil {
+// log.Println(err)
+// }
+// log.Println("Server on 8080 stopped")
+// os.Exit(0)
+// }
package grace
import (
diff --git a/adapter/httplib/httplib.go b/adapter/httplib/httplib.go
index 9b0cfe26..1fb8ad73 100644
--- a/adapter/httplib/httplib.go
+++ b/adapter/httplib/httplib.go
@@ -27,7 +27,6 @@
// t.Fatal(err)
// }
// fmt.Println(str)
-//
package httplib
import (
@@ -175,9 +174,9 @@ func (b *BeegoHTTPRequest) SetTransport(transport http.RoundTripper) *BeegoHTTPR
// example:
//
// func(req *http.Request) (*url.URL, error) {
-// u, _ := url.ParseRequestURI("http://127.0.0.1:8118")
-// return u, nil
-// }
+// u, _ := url.ParseRequestURI("http://127.0.0.1:8118")
+// return u, nil
+// }
func (b *BeegoHTTPRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) *BeegoHTTPRequest {
b.delegate.SetProxy(proxy)
return b
diff --git a/adapter/logs/log.go b/adapter/logs/log.go
index a040a1f5..76bbbc1f 100644
--- a/adapter/logs/log.go
+++ b/adapter/logs/log.go
@@ -29,7 +29,6 @@
// log.Warn("warning")
// log.Debug("debug")
// log.Critical("critical")
-//
package logs
import (
diff --git a/adapter/namespace.go b/adapter/namespace.go
index 9c3dcbb9..b20cdf05 100644
--- a/adapter/namespace.go
+++ b/adapter/namespace.go
@@ -50,12 +50,14 @@ func oldToNewLinkNs(params []LinkNamespace) []web.LinkNamespace {
// Cond set condition function
// if cond return true can run this namespace, else can't
// usage:
-// ns.Cond(func (ctx *context.Context) bool{
-// if ctx.Input.Domain() == "api.beego.vip" {
-// return true
-// }
-// return false
-// })
+//
+// ns.Cond(func (ctx *context.Context) bool{
+// if ctx.Input.Domain() == "api.beego.vip" {
+// return true
+// }
+// return false
+// })
+//
// Cond as the first filter
func (n *Namespace) Cond(cond namespaceCond) *Namespace {
(*web.Namespace)(n).Cond(func(context *context.Context) bool {
@@ -68,12 +70,13 @@ func (n *Namespace) Cond(cond namespaceCond) *Namespace {
// action has before & after
// FilterFunc
// usage:
-// Filter("before", func (ctx *context.Context){
-// _, ok := ctx.Input.Session("uid").(int)
-// if !ok && ctx.Request.RequestURI != "/login" {
-// ctx.Redirect(302, "/login")
-// }
-// })
+//
+// Filter("before", func (ctx *context.Context){
+// _, ok := ctx.Input.Session("uid").(int)
+// if !ok && ctx.Request.RequestURI != "/login" {
+// ctx.Redirect(302, "/login")
+// }
+// })
func (n *Namespace) Filter(action string, filter ...FilterFunc) *Namespace {
nfs := oldToNewFilter(filter)
(*web.Namespace)(n).Filter(action, nfs...)
@@ -203,18 +206,20 @@ func (n *Namespace) Include(cList ...ControllerInterface) *Namespace {
// usage:
// ns := beego.NewNamespace(“/v1”).
// Namespace(
-// beego.NewNamespace("/shop").
-// Get("/:id", func(ctx *context.Context) {
-// ctx.Output.Body([]byte("shopinfo"))
-// }),
-// beego.NewNamespace("/order").
-// Get("/:id", func(ctx *context.Context) {
-// ctx.Output.Body([]byte("orderinfo"))
-// }),
-// beego.NewNamespace("/crm").
-// Get("/:id", func(ctx *context.Context) {
-// ctx.Output.Body([]byte("crminfo"))
-// }),
+//
+// beego.NewNamespace("/shop").
+// Get("/:id", func(ctx *context.Context) {
+// ctx.Output.Body([]byte("shopinfo"))
+// }),
+// beego.NewNamespace("/order").
+// Get("/:id", func(ctx *context.Context) {
+// ctx.Output.Body([]byte("orderinfo"))
+// }),
+// beego.NewNamespace("/crm").
+// Get("/:id", func(ctx *context.Context) {
+// ctx.Output.Body([]byte("crminfo"))
+// }),
+//
// )
func (n *Namespace) Namespace(ns ...*Namespace) *Namespace {
nns := oldToNewNs(ns)
diff --git a/adapter/orm/orm.go b/adapter/orm/orm.go
index 2b2b29e0..516d17f8 100644
--- a/adapter/orm/orm.go
+++ b/adapter/orm/orm.go
@@ -50,7 +50,6 @@
// // delete
// num, err = o.Delete(&u)
// }
-//
package orm
import (
@@ -170,8 +169,9 @@ func (o *ormer) QueryM2M(md interface{}, name string) QueryM2Mer {
// args are limit, offset int and order string.
//
// example:
-// orm.LoadRelated(post,"Tags")
-// for _,tag := range post.Tags{...}
+//
+// orm.LoadRelated(post,"Tags")
+// for _,tag := range post.Tags{...}
//
// make sure the relation is defined in model struct tags.
func (o *ormer) LoadRelated(md interface{}, name string, args ...interface{}) (int64, error) {
diff --git a/adapter/orm/types.go b/adapter/orm/types.go
index ecc4d6f4..d7744d09 100644
--- a/adapter/orm/types.go
+++ b/adapter/orm/types.go
@@ -145,6 +145,7 @@ type RawPreparer orm.RawPreparer
// RawSeter raw query seter
// create From Ormer.Raw
// for example:
-// sql := fmt.Sprintf("SELECT %sid%s,%sname%s FROM %suser%s WHERE id = ?",Q,Q,Q,Q,Q,Q)
-// rs := Ormer.Raw(sql, 1)
+//
+// sql := fmt.Sprintf("SELECT %sid%s,%sname%s FROM %suser%s WHERE id = ?",Q,Q,Q,Q,Q,Q)
+// rs := Ormer.Raw(sql, 1)
type RawSeter orm.RawSeter
diff --git a/adapter/plugins/apiauth/apiauth.go b/adapter/plugins/apiauth/apiauth.go
index d5511427..a786d8de 100644
--- a/adapter/plugins/apiauth/apiauth.go
+++ b/adapter/plugins/apiauth/apiauth.go
@@ -15,6 +15,7 @@
// Package apiauth provides handlers to enable apiauth support.
//
// Simple Usage:
+//
// import(
// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/apiauth"
@@ -37,11 +38,11 @@
//
// Information:
//
-// In the request user should include these params in the query
+// # In the request user should include these params in the query
//
// 1. appid
//
-// appid is assigned to the application
+// appid is assigned to the application
//
// 2. signature
//
@@ -51,8 +52,7 @@
//
// 3. timestamp:
//
-// send the request time, the format is yyyy-mm-dd HH:ii:ss
-//
+// send the request time, the format is yyyy-mm-dd HH:ii:ss
package apiauth
import (
diff --git a/adapter/plugins/auth/basic.go b/adapter/plugins/auth/basic.go
index 173252ca..e82f533a 100644
--- a/adapter/plugins/auth/basic.go
+++ b/adapter/plugins/auth/basic.go
@@ -14,6 +14,7 @@
// Package auth provides handlers to enable basic auth support.
// Simple Usage:
+//
// import(
// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/auth"
@@ -25,7 +26,6 @@
// beego.Run()
// }
//
-//
// Advanced Usage:
//
// func SecretAuth(username, password string) bool {
diff --git a/adapter/plugins/authz/authz.go b/adapter/plugins/authz/authz.go
index 096d7efb..c7872220 100644
--- a/adapter/plugins/authz/authz.go
+++ b/adapter/plugins/authz/authz.go
@@ -14,6 +14,7 @@
// Package authz provides handlers to enable ACL, RBAC, ABAC authorization support.
// Simple Usage:
+//
// import(
// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/authz"
@@ -26,7 +27,6 @@
// beego.Run()
// }
//
-//
// Advanced Usage:
//
// func main(){
diff --git a/adapter/plugins/cors/cors.go b/adapter/plugins/cors/cors.go
index c02ab877..dec80dfa 100644
--- a/adapter/plugins/cors/cors.go
+++ b/adapter/plugins/cors/cors.go
@@ -14,9 +14,11 @@
// Package cors provides handlers to enable CORS support.
// Usage
+//
// import (
-// "github.com/beego/beego/v2"
+// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/cors"
+//
// )
//
// func main() {
diff --git a/adapter/router.go b/adapter/router.go
index 23f08e1e..28fedba2 100644
--- a/adapter/router.go
+++ b/adapter/router.go
@@ -77,6 +77,7 @@ func NewControllerRegister() *ControllerRegister {
// Add controller handler and pattern rules to ControllerRegister.
// usage:
+//
// default methods is the same name as method
// Add("/user",&UserController{})
// Add("/api/list",&RestController{},"*:ListFood")
@@ -99,9 +100,10 @@ func (p *ControllerRegister) Include(cList ...ControllerInterface) {
// GetContext returns a context from pool, so usually you should remember to call Reset function to clean the context
// And don't forget to give back context to pool
// example:
-// ctx := p.GetContext()
-// ctx.Reset(w, q)
-// defer p.GiveBackContext(ctx)
+//
+// ctx := p.GetContext()
+// ctx.Reset(w, q)
+// defer p.GiveBackContext(ctx)
func (p *ControllerRegister) GetContext() *beecontext.Context {
return (*beecontext.Context)((*web.ControllerRegister)(p).GetContext())
}
@@ -113,9 +115,10 @@ func (p *ControllerRegister) GiveBackContext(ctx *beecontext.Context) {
// Get add get method
// usage:
-// Get("/", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Get("/", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Get(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Get(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -124,9 +127,10 @@ func (p *ControllerRegister) Get(pattern string, f FilterFunc) {
// Post add post method
// usage:
-// Post("/api", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Post("/api", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Post(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Post(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -135,9 +139,10 @@ func (p *ControllerRegister) Post(pattern string, f FilterFunc) {
// Put add put method
// usage:
-// Put("/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Put("/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Put(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Put(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -146,9 +151,10 @@ func (p *ControllerRegister) Put(pattern string, f FilterFunc) {
// Delete add delete method
// usage:
-// Delete("/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Delete("/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Delete(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Delete(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -157,9 +163,10 @@ func (p *ControllerRegister) Delete(pattern string, f FilterFunc) {
// Head add head method
// usage:
-// Head("/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Head("/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Head(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Head(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -168,9 +175,10 @@ func (p *ControllerRegister) Head(pattern string, f FilterFunc) {
// Patch add patch method
// usage:
-// Patch("/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Patch("/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Patch(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Patch(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -179,9 +187,10 @@ func (p *ControllerRegister) Patch(pattern string, f FilterFunc) {
// Options add options method
// usage:
-// Options("/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Options("/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Options(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Options(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -190,9 +199,10 @@ func (p *ControllerRegister) Options(pattern string, f FilterFunc) {
// Any add all method
// usage:
-// Any("/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// Any("/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) Any(pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).Any(pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -201,9 +211,10 @@ func (p *ControllerRegister) Any(pattern string, f FilterFunc) {
// AddMethod add http method router
// usage:
-// AddMethod("get","/api/:id", func(ctx *context.Context){
-// ctx.Output.Body("hello world")
-// })
+//
+// AddMethod("get","/api/:id", func(ctx *context.Context){
+// ctx.Output.Body("hello world")
+// })
func (p *ControllerRegister) AddMethod(method, pattern string, f FilterFunc) {
(*web.ControllerRegister)(p).AddMethod(method, pattern, func(ctx *context.Context) {
f((*beecontext.Context)(ctx))
@@ -235,8 +246,8 @@ func (p *ControllerRegister) AddAutoPrefix(prefix string, c ControllerInterface)
// InsertFilter Add a FilterFunc with pattern rule and action constant.
// params is for:
-// 1. setting the returnOnOutput value (false allows multiple filters to execute)
-// 2. determining whether or not params need to be reset.
+// 1. setting the returnOnOutput value (false allows multiple filters to execute)
+// 2. determining whether or not params need to be reset.
func (p *ControllerRegister) InsertFilter(pattern string, pos int, filter FilterFunc, params ...bool) error {
opts := oldToNewFilterOpts(params)
return (*web.ControllerRegister)(p).InsertFilter(pattern, pos, func(ctx *context.Context) {
diff --git a/adapter/session/couchbase/sess_couchbase.go b/adapter/session/couchbase/sess_couchbase.go
index 9e37e56b..a7ab407d 100644
--- a/adapter/session/couchbase/sess_couchbase.go
+++ b/adapter/session/couchbase/sess_couchbase.go
@@ -20,15 +20,16 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/couchbase"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/couchbase"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
// func init() {
// globalSessions, _ = session.NewManager("couchbase", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"http://host:port/, Pool, Bucket"}``)
// go globalSessions.GC()
// }
-//
package couchbase
import (
diff --git a/adapter/session/memcache/sess_memcache.go b/adapter/session/memcache/sess_memcache.go
index 4ca779f7..55abe694 100644
--- a/adapter/session/memcache/sess_memcache.go
+++ b/adapter/session/memcache/sess_memcache.go
@@ -20,15 +20,16 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/memcache"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/memcache"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
// func init() {
// globalSessions, _ = session.NewManager("memcache", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"127.0.0.1:11211"}``)
// go globalSessions.GC()
// }
-//
package memcache
import (
diff --git a/adapter/session/mysql/sess_mysql.go b/adapter/session/mysql/sess_mysql.go
index eb2bd090..2e75f4eb 100644
--- a/adapter/session/mysql/sess_mysql.go
+++ b/adapter/session/mysql/sess_mysql.go
@@ -19,6 +19,7 @@
// go install github.com/go-sql-driver/mysql
//
// mysql session support need create table as sql:
+//
// CREATE TABLE `session` (
// `session_key` char(64) NOT NULL,
// `session_data` blob,
@@ -28,15 +29,16 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/mysql"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/mysql"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
// func init() {
// globalSessions, _ = session.NewManager("mysql", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]"}``)
// go globalSessions.GC()
// }
-//
package mysql
import (
diff --git a/adapter/session/postgres/sess_postgresql.go b/adapter/session/postgres/sess_postgresql.go
index b50e3c59..5d1fb8de 100644
--- a/adapter/session/postgres/sess_postgresql.go
+++ b/adapter/session/postgres/sess_postgresql.go
@@ -18,7 +18,6 @@
//
// go install github.com/lib/pq
//
-//
// needs this table in your database:
//
// CREATE TABLE session (
@@ -35,18 +34,18 @@
// SessionSavePath = "user=a password=b dbname=c sslmode=disable"
// SessionName = session
//
-//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/postgresql"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/postgresql"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
// func init() {
// globalSessions, _ = session.NewManager("postgresql", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"user=pqgotest dbname=pqgotest sslmode=verify-full"}``)
// go globalSessions.GC()
// }
-//
package postgres
import (
diff --git a/adapter/session/redis/sess_redis.go b/adapter/session/redis/sess_redis.go
index 7d3287ff..355bfa77 100644
--- a/adapter/session/redis/sess_redis.go
+++ b/adapter/session/redis/sess_redis.go
@@ -20,15 +20,16 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/redis"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/redis"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
-// func init() {
-// globalSessions, _ = session.NewManager("redis", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"127.0.0.1:7070"}``)
-// go globalSessions.GC()
-// }
-//
+// func init() {
+// globalSessions, _ = session.NewManager("redis", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"127.0.0.1:7070"}``)
+// go globalSessions.GC()
+// }
package redis
import (
diff --git a/adapter/session/redis_cluster/redis_cluster.go b/adapter/session/redis_cluster/redis_cluster.go
index 4b9c09b4..8c4c28c0 100644
--- a/adapter/session/redis_cluster/redis_cluster.go
+++ b/adapter/session/redis_cluster/redis_cluster.go
@@ -20,15 +20,16 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/redis_cluster"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/redis_cluster"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
// func init() {
// globalSessions, _ = session.NewManager("redis_cluster", ``{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"127.0.0.1:7070;127.0.0.1:7071"}``)
// go globalSessions.GC()
// }
-//
package redis_cluster
import (
diff --git a/adapter/session/redis_sentinel/sess_redis_sentinel.go b/adapter/session/redis_sentinel/sess_redis_sentinel.go
index 633fb5fa..5746cb4a 100644
--- a/adapter/session/redis_sentinel/sess_redis_sentinel.go
+++ b/adapter/session/redis_sentinel/sess_redis_sentinel.go
@@ -20,8 +20,10 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/server/web/session/redis_sentinel"
-// "github.com/beego/beego/v2/server/web/session"
+//
+// _ "github.com/beego/beego/v2/server/web/session/redis_sentinel"
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
// func init() {
diff --git a/adapter/session/sess_cookie.go b/adapter/session/sess_cookie.go
index ef3b6799..f6610960 100644
--- a/adapter/session/sess_cookie.go
+++ b/adapter/session/sess_cookie.go
@@ -61,11 +61,12 @@ type CookieProvider session.CookieProvider
// SessionInit Init cookie session provider with max lifetime and config json.
// maxlifetime is ignored.
// json config:
-// securityKey - hash string
-// blockKey - gob encode hash string. it's saved as aes crypto.
-// securityName - recognized name in encoded cookie string
-// cookieName - cookie name
-// maxage - cookie max life time.
+//
+// securityKey - hash string
+// blockKey - gob encode hash string. it's saved as aes crypto.
+// securityName - recognized name in encoded cookie string
+// cookieName - cookie name
+// maxage - cookie max life time.
func (pder *CookieProvider) SessionInit(maxlifetime int64, config string) error {
return (*session.CookieProvider)(pder).SessionInit(context.Background(), maxlifetime, config)
}
diff --git a/adapter/session/session.go b/adapter/session/session.go
index 256bd601..629b0898 100644
--- a/adapter/session/session.go
+++ b/adapter/session/session.go
@@ -16,14 +16,15 @@
//
// Usage:
// import(
-// "github.com/beego/beego/v2/server/web/session"
+//
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
-// func init() {
-// globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "cookieLifeTime": 3600, "providerConfig": ""}`)
-// go globalSessions.GC()
-// }
-//
+// func init() {
+// globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "cookieLifeTime": 3600, "providerConfig": ""}`)
+// go globalSessions.GC()
+// }
package session
import (
diff --git a/adapter/templatefunc.go b/adapter/templatefunc.go
index 32a250d1..c7460d51 100644
--- a/adapter/templatefunc.go
+++ b/adapter/templatefunc.go
@@ -91,21 +91,21 @@ func Htmlunquote(text string) string {
}
// URLFor returns url string with another registered controller handler with params.
-// usage:
//
-// URLFor(".index")
-// print URLFor("index")
-// router /login
-// print URLFor("login")
-// print URLFor("login", "next","/"")
-// router /profile/:username
-// print UrlFor("profile", ":username","John Doe")
-// result:
-// /
-// /login
-// /login?next=/
-// /user/John%20Doe
+// usage:
//
+// URLFor(".index")
+// print URLFor("index")
+// router /login
+// print URLFor("login")
+// print URLFor("login", "next","/"")
+// router /profile/:username
+// print UrlFor("profile", ":username","John Doe")
+// result:
+// /
+// /login
+// /login?next=/
+// /user/John%20Doe
func URLFor(endpoint string, values ...interface{}) string {
return web.URLFor(endpoint, values...)
}
@@ -135,12 +135,13 @@ func RenderForm(obj interface{}) template.HTML {
// MapGet getting value from map by keys
// usage:
-// Data["m"] = M{
-// "a": 1,
-// "1": map[string]float64{
-// "c": 4,
-// },
-// }
+//
+// Data["m"] = M{
+// "a": 1,
+// "1": map[string]float64{
+// "c": 4,
+// },
+// }
//
// {{ map_get m "a" }} // return 1
// {{ map_get m 1 "c" }} // return 4
diff --git a/adapter/toolbox/healthcheck.go b/adapter/toolbox/healthcheck.go
index 400e707e..438946cf 100644
--- a/adapter/toolbox/healthcheck.go
+++ b/adapter/toolbox/healthcheck.go
@@ -17,16 +17,15 @@
// type DatabaseCheck struct {
// }
//
-// func (dc *DatabaseCheck) Check() error {
-// if dc.isConnected() {
-// return nil
-// } else {
-// return errors.New("can't connect database")
-// }
-// }
+// func (dc *DatabaseCheck) Check() error {
+// if dc.isConnected() {
+// return nil
+// } else {
+// return errors.New("can't connect database")
+// }
+// }
//
// AddHealthCheck("database",&DatabaseCheck{})
-//
package toolbox
import (
diff --git a/adapter/toolbox/task.go b/adapter/toolbox/task.go
index 81864e9a..ebabbc10 100644
--- a/adapter/toolbox/task.go
+++ b/adapter/toolbox/task.go
@@ -141,11 +141,16 @@ func (t *Task) GetPrev() time.Time {
// week:0-6(0 means Sunday)
// SetCron some signals:
-// *: any time
-// ,: separate signal
+//
+// *: any time
+// ,: separate signal
+//
// -:duration
-// /n : do as n times of time duration
+//
+// /n : do as n times of time duration
+//
// ///////////////////////////////////////////////////////
+//
// 0/30 * * * * * every 30s
// 0 43 21 * * * 21:43
// 0 15 05 * * * 05:15
diff --git a/adapter/utils/captcha/captcha.go b/adapter/utils/captcha/captcha.go
index 7cdcab2d..0dd10d6b 100644
--- a/adapter/utils/captcha/captcha.go
+++ b/adapter/utils/captcha/captcha.go
@@ -19,32 +19,35 @@
// package controllers
//
// import (
-// "github.com/beego/beego/v2"
-// "github.com/beego/beego/v2/client/cache"
-// "github.com/beego/beego/v2/server/web/captcha"
+//
+// "github.com/beego/beego/v2"
+// "github.com/beego/beego/v2/client/cache"
+// "github.com/beego/beego/v2/server/web/captcha"
+//
// )
//
// var cpt *captcha.Captcha
//
-// func init() {
-// // use beego cache system store the captcha data
-// store := cache.NewMemoryCache()
-// cpt = captcha.NewWithFilter("/captcha/", store)
-// }
+// func init() {
+// // use beego cache system store the captcha data
+// store := cache.NewMemoryCache()
+// cpt = captcha.NewWithFilter("/captcha/", store)
+// }
//
-// type MainController struct {
-// beego.Controller
-// }
+// type MainController struct {
+// beego.Controller
+// }
//
-// func (this *MainController) Get() {
-// this.TplName = "index.tpl"
-// }
+// func (this *MainController) Get() {
+// this.TplName = "index.tpl"
+// }
//
-// func (this *MainController) Post() {
-// this.TplName = "index.tpl"
+// func (this *MainController) Post() {
+// this.TplName = "index.tpl"
+//
+// this.Data["Success"] = cpt.VerifyReq(this.Ctx.Request)
+// }
//
-// this.Data["Success"] = cpt.VerifyReq(this.Ctx.Request)
-// }
// ```
//
// template usage
@@ -52,8 +55,10 @@
// ```
// {{.Success}}
//
// ```
package captcha
diff --git a/adapter/utils/pagination/doc.go b/adapter/utils/pagination/doc.go
index 67530041..d3ccd06f 100644
--- a/adapter/utils/pagination/doc.go
+++ b/adapter/utils/pagination/doc.go
@@ -2,53 +2,51 @@
Package pagination provides utilities to setup a paginator within the
context of a http request.
-Usage
+# Usage
In your beego.Controller:
- package controllers
+ package controllers
- import "github.com/beego/beego/v2/server/web/pagination"
+ import "github.com/beego/beego/v2/server/web/pagination"
- type PostsController struct {
- beego.Controller
- }
+ type PostsController struct {
+ beego.Controller
+ }
- func (this *PostsController) ListAllPosts() {
- // sets this.Data["paginator"] with the current offset (from the url query param)
- postsPerPage := 20
- paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())
-
- // fetch the next 20 posts
- this.Data["posts"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)
- }
+ func (this *PostsController) ListAllPosts() {
+ // sets this.Data["paginator"] with the current offset (from the url query param)
+ postsPerPage := 20
+ paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())
+ // fetch the next 20 posts
+ this.Data["posts"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)
+ }
In your view templates:
- {{if .paginator.HasPages}}
-
- {{end}}
-
+ {{if .paginator.HasPages}}
+
+ {{end}}
*/
package pagination
diff --git a/adapter/utils/pagination/paginator.go b/adapter/utils/pagination/paginator.go
index cbf71da4..bf4d9782 100644
--- a/adapter/utils/pagination/paginator.go
+++ b/adapter/utils/pagination/paginator.go
@@ -47,11 +47,11 @@ func (p *Paginator) Page() int {
//
// Usage (in a view template):
//
-// {{range $index, $page := .paginator.Pages}}
-//
-// {{$page}}
-//
-// {{end}}
+// {{range $index, $page := .paginator.Pages}}
+//
+// {{$page}}
+//
+// {{end}}
func (p *Paginator) Pages() []int {
return (*pagination.Paginator)(p).Pages()
}
diff --git a/adapter/validation/util.go b/adapter/validation/util.go
index 5ff43ebc..8747b8bd 100644
--- a/adapter/validation/util.go
+++ b/adapter/validation/util.go
@@ -34,13 +34,15 @@ type CustomFunc func(v *Validation, obj interface{}, key string)
// AddCustomFunc Add a custom function to validation
// The name can not be:
-// Clear
-// HasErrors
-// ErrorMap
-// Error
-// Check
-// Valid
-// NoMatch
+//
+// Clear
+// HasErrors
+// ErrorMap
+// Error
+// Check
+// Valid
+// NoMatch
+//
// If the name is same with exists function, it will replace the origin valid function
func AddCustomFunc(name string, f CustomFunc) error {
return validation.AddCustomFunc(name, func(v *validation.Validation, obj interface{}, key string) {
diff --git a/adapter/validation/validation.go b/adapter/validation/validation.go
index 0e7f9adf..ead64d05 100644
--- a/adapter/validation/validation.go
+++ b/adapter/validation/validation.go
@@ -42,7 +42,6 @@
// log.Println(v.Error.Key, v.Error.Message)
// }
// }
-//
package validation
import (
diff --git a/adapter/validation/validators.go b/adapter/validation/validators.go
index f4d7db3b..e8a0d36e 100644
--- a/adapter/validation/validators.go
+++ b/adapter/validation/validators.go
@@ -51,26 +51,27 @@ var once sync.Once
// SetDefaultMessage set default messages
// if not set, the default messages are
-// "Required": "Can not be empty",
-// "Min": "Minimum is %d",
-// "Max": "Maximum is %d",
-// "Range": "Range is %d to %d",
-// "MinSize": "Minimum size is %d",
-// "MaxSize": "Maximum size is %d",
-// "Length": "Required length is %d",
-// "Alpha": "Must be valid alpha characters",
-// "Numeric": "Must be valid numeric characters",
-// "AlphaNumeric": "Must be valid alpha or numeric characters",
-// "Match": "Must match %s",
-// "NoMatch": "Must not match %s",
-// "AlphaDash": "Must be valid alpha or numeric or dash(-_) characters",
-// "Email": "Must be a valid email address",
-// "IP": "Must be a valid ip address",
-// "Base64": "Must be valid base64 characters",
-// "Mobile": "Must be valid mobile number",
-// "Tel": "Must be valid telephone number",
-// "Phone": "Must be valid telephone or mobile phone number",
-// "ZipCode": "Must be valid zipcode",
+//
+// "Required": "Can not be empty",
+// "Min": "Minimum is %d",
+// "Max": "Maximum is %d",
+// "Range": "Range is %d to %d",
+// "MinSize": "Minimum size is %d",
+// "MaxSize": "Maximum size is %d",
+// "Length": "Required length is %d",
+// "Alpha": "Must be valid alpha characters",
+// "Numeric": "Must be valid numeric characters",
+// "AlphaNumeric": "Must be valid alpha or numeric characters",
+// "Match": "Must match %s",
+// "NoMatch": "Must not match %s",
+// "AlphaDash": "Must be valid alpha or numeric or dash(-_) characters",
+// "Email": "Must be a valid email address",
+// "IP": "Must be a valid ip address",
+// "Base64": "Must be valid base64 characters",
+// "Mobile": "Must be valid mobile number",
+// "Tel": "Must be valid telephone number",
+// "Phone": "Must be valid telephone or mobile phone number",
+// "ZipCode": "Must be valid zipcode",
func SetDefaultMessage(msg map[string]string) {
validation.SetDefaultMessage(msg)
}
diff --git a/client/cache/bloom_filter_cache_test.go b/client/cache/bloom_filter_cache_test.go
index ad15f2b4..d26d27cc 100644
--- a/client/cache/bloom_filter_cache_test.go
+++ b/client/cache/bloom_filter_cache_test.go
@@ -23,9 +23,10 @@ import (
"testing"
"time"
- "github.com/beego/beego/v2/core/berror"
"github.com/bits-and-blooms/bloom/v3"
"github.com/stretchr/testify/assert"
+
+ "github.com/beego/beego/v2/core/berror"
)
type MockDB struct {
diff --git a/client/cache/cache.go b/client/cache/cache.go
index 8710643a..f7599dbb 100644
--- a/client/cache/cache.go
+++ b/client/cache/cache.go
@@ -16,7 +16,9 @@
// Usage:
//
// import(
-// "github.com/beego/beego/v2/client/cache"
+//
+// "github.com/beego/beego/v2/client/cache"
+//
// )
//
// bm, err := cache.NewCache("memory", `{"interval":60}`)
@@ -27,7 +29,6 @@
// bm.Get("astaxie")
// bm.IsExist("astaxie")
// bm.Delete("astaxie")
-//
package cache
import (
@@ -39,6 +40,7 @@ import (
// Cache interface contains all behaviors for cache adapter.
// usage:
+//
// cache.Register("file",cache.NewFileCache) // this operation is run in init method of file.go.
// c,err := cache.NewCache("file","{....}")
// c.Put("key",value, 3600 * time.Second)
diff --git a/client/cache/memcache/memcache.go b/client/cache/memcache/memcache.go
index ad645f07..4c6cf0dd 100644
--- a/client/cache/memcache/memcache.go
+++ b/client/cache/memcache/memcache.go
@@ -20,12 +20,13 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/client/cache/memcache"
-// "github.com/beego/beego/v2/client/cache"
+//
+// _ "github.com/beego/beego/v2/client/cache/memcache"
+// "github.com/beego/beego/v2/client/cache"
+//
// )
//
-// bm, err := cache.NewCache("memcache", `{"conn":"127.0.0.1:11211"}`)
-//
+// bm, err := cache.NewCache("memcache", `{"conn":"127.0.0.1:11211"}`)
package memcache
import (
diff --git a/client/cache/redis/redis.go b/client/cache/redis/redis.go
index 4d891a80..8c38b474 100644
--- a/client/cache/redis/redis.go
+++ b/client/cache/redis/redis.go
@@ -20,12 +20,13 @@
//
// Usage:
// import(
-// _ "github.com/beego/beego/v2/client/cache/redis"
-// "github.com/beego/beego/v2/client/cache"
+//
+// _ "github.com/beego/beego/v2/client/cache/redis"
+// "github.com/beego/beego/v2/client/cache"
+//
// )
//
-// bm, err := cache.NewCache("redis", `{"conn":"127.0.0.1:11211"}`)
-//
+// bm, err := cache.NewCache("redis", `{"conn":"127.0.0.1:11211"}`)
package redis
import (
diff --git a/client/httplib/httpclient.go b/client/httplib/httpclient.go
index 524f8bbb..f3ac4afe 100644
--- a/client/httplib/httpclient.go
+++ b/client/httplib/httpclient.go
@@ -17,7 +17,6 @@ package httplib
import (
"bytes"
"io"
- "io/ioutil"
"net/http"
)
@@ -105,7 +104,7 @@ func (c *Client) handleCarrier(value interface{}, req *BeegoHTTPRequest) error {
if err != nil {
return err
}
- req.resp.Body = ioutil.NopCloser(bytes.NewReader(b))
+ req.resp.Body = io.NopCloser(bytes.NewReader(b))
carrier.SetHTTPResponse(req.resp)
}
if carrier, ok := value.(HTTPBodyCarrier); ok {
@@ -113,7 +112,7 @@ func (c *Client) handleCarrier(value interface{}, req *BeegoHTTPRequest) error {
if err != nil {
return err
}
- reader := ioutil.NopCloser(bytes.NewReader(b))
+ reader := io.NopCloser(bytes.NewReader(b))
carrier.SetReader(reader)
}
if carrier, ok := value.(HTTPBytesCarrier); ok {
diff --git a/client/httplib/httpclient_test.go b/client/httplib/httpclient_test.go
index 1ab6d95f..b7dc8769 100644
--- a/client/httplib/httpclient_test.go
+++ b/client/httplib/httpclient_test.go
@@ -15,12 +15,17 @@
package httplib
import (
+ "encoding/json"
"encoding/xml"
"io"
- "io/ioutil"
+ "net"
"net/http"
"testing"
+ "github.com/stretchr/testify/require"
+ "github.com/stretchr/testify/suite"
+ "gopkg.in/yaml.v3"
+
"github.com/stretchr/testify/assert"
)
@@ -32,13 +37,13 @@ func TestNewClient(t *testing.T) {
}
type slideShowResponse struct {
- Resp *http.Response
- bytes []byte
- StatusCode int
- Body io.ReadCloser
- Header map[string][]string
+ Resp *http.Response `json:"resp,omitempty"`
+ bytes []byte `json:"bytes,omitempty"`
+ StatusCode int `json:"status_code,omitempty"`
+ Body io.ReadCloser `json:"body,omitempty"`
+ Header map[string][]string `json:"header,omitempty"`
- Slideshow slideshow `json:"slideshow" yaml:"slideshow"`
+ Slideshow slideshow `json:"slideshow,omitempty" yaml:"slideshow" xml:"slideshow"`
}
func (r *slideShowResponse) SetHTTPResponse(resp *http.Response) {
@@ -66,7 +71,7 @@ func (r *slideShowResponse) String() string {
}
type slideshow struct {
- XMLName xml.Name `xml:"slideshow"`
+ //XMLName xml.Name `xml:"slideshow"`
Title string `json:"title" yaml:"title" xml:"title,attr"`
Author string `json:"author" yaml:"author" xml:"author,attr"`
@@ -80,63 +85,122 @@ type slide struct {
Title string `json:"title" yaml:"title" xml:"title"`
}
-func TestClientHandleCarrier(t *testing.T) {
- v := "beego"
- client, err := NewClient("test", "http://httpbin.org/",
- WithUserAgent(v))
- if err != nil {
- t.Fatal(err)
- }
-
- s := &slideShowResponse{}
- err = client.Get(s, "/json")
- if err != nil {
- t.Fatal(err)
- }
- defer s.Body.Close()
-
- assert.NotNil(t, s.Resp)
- assert.NotNil(t, s.Body)
- assert.Equal(t, "429", s.Header["Content-Length"][0])
- assert.Equal(t, 200, s.StatusCode)
-
- b, err := ioutil.ReadAll(s.Body)
- if err != nil {
- t.Fatal(err)
- }
- assert.Equal(t, 429, len(b))
- assert.Equal(t, s.String(), string(b))
+type ClientTestSuite struct {
+ suite.Suite
+ l net.Listener
}
-func TestClientGet(t *testing.T) {
- client, err := NewClient("test", "http://httpbin.org/")
+func (c *ClientTestSuite) SetupSuite() {
+ listener, err := net.Listen("tcp", ":8080")
+ require.NoError(c.T(), err)
+ c.l = listener
+
+ handler := http.NewServeMux()
+ handler.HandleFunc("/json", func(writer http.ResponseWriter, request *http.Request) {
+ data, _ := json.Marshal(slideshow{})
+ _, _ = writer.Write(data)
+ })
+
+ ssr := slideShowResponse{
+ Slideshow: slideshow{
+ Title: "Sample Slide Show",
+ Slides: []slide{
+ {
+ Title: "Content",
+ },
+ {
+ Title: "Overview",
+ },
+ },
+ },
+ }
+
+ handler.HandleFunc("/req2resp", func(writer http.ResponseWriter, request *http.Request) {
+ data, _ := io.ReadAll(request.Body)
+ _, _ = writer.Write(data)
+ })
+
+ handler.HandleFunc("/get", func(writer http.ResponseWriter, request *http.Request) {
+ data, _ := json.Marshal(ssr)
+ _, _ = writer.Write(data)
+ })
+
+ handler.HandleFunc("/get/xml", func(writer http.ResponseWriter, request *http.Request) {
+ data, err := xml.Marshal(ssr.Slideshow)
+ require.NoError(c.T(), err)
+ _, _ = writer.Write(data)
+ })
+
+ handler.HandleFunc("/get/yaml", func(writer http.ResponseWriter, request *http.Request) {
+ data, _ := yaml.Marshal(ssr)
+ _, _ = writer.Write(data)
+ })
+
+ go func() {
+ _ = http.Serve(listener, handler)
+ }()
+}
+
+func (c *ClientTestSuite) TearDownSuite() {
+ _ = c.l.Close()
+}
+
+func TestClient(t *testing.T) {
+ suite.Run(t, &ClientTestSuite{})
+}
+
+func (c *ClientTestSuite) TestClientHandleCarrier() {
+ t := c.T()
+ v := "beego"
+ client, err := NewClient("test", "http://localhost:8080/",
+ WithUserAgent(v))
+ require.NoError(t, err)
+ resp := &slideShowResponse{}
+ err = client.Get(resp, "/json")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer resp.Body.Close()
+
+ assert.NotNil(t, resp.Resp)
+ assert.NotNil(t, resp.Body)
+ assert.Equal(t, "48", resp.Header["Content-Length"][0])
+ assert.Equal(t, 200, resp.StatusCode)
+
+ b, err := io.ReadAll(resp.Body)
+ if err != nil {
+ t.Fatal(err)
+ }
+ assert.Equal(t, 48, len(b))
+ assert.Equal(t, resp.String(), string(b))
+}
+
+func (c *ClientTestSuite) TestClientGet() {
+ t := c.T()
+ client, err := NewClient("test", "http://localhost:8080/")
if err != nil {
t.Fatal(err)
}
// json
- var s *slideShowResponse
- err = client.Get(&s, "/json")
- if err != nil {
- t.Fatal(err)
- }
+ var s slideShowResponse
+ err = client.Get(&s, "/get")
+ require.NoError(t, err)
assert.Equal(t, "Sample Slide Show", s.Slideshow.Title)
assert.Equal(t, 2, len(s.Slideshow.Slides))
assert.Equal(t, "Overview", s.Slideshow.Slides[1].Title)
// xml
- var ssp *slideshow
- err = client.Get(&ssp, "/base64/PD94bWwgPz48c2xpZGVzaG93CnRpdGxlPSJTYW1wbGUgU2xpZGUgU2hvdyIKZGF0ZT0iRGF0ZSBvZiBwdWJsaWNhdGlvbiIKYXV0aG9yPSJZb3VycyBUcnVseSI+PHNsaWRlIHR5cGU9ImFsbCI+PHRpdGxlPldha2UgdXAgdG8gV29uZGVyV2lkZ2V0cyE8L3RpdGxlPjwvc2xpZGU+PHNsaWRlIHR5cGU9ImFsbCI+PHRpdGxlPk92ZXJ2aWV3PC90aXRsZT48aXRlbT5XaHkgPGVtPldvbmRlcldpZGdldHM8L2VtPiBhcmUgZ3JlYXQ8L2l0ZW0+PGl0ZW0vPjxpdGVtPldobyA8ZW0+YnV5czwvZW0+IFdvbmRlcldpZGdldHM8L2l0ZW0+PC9zbGlkZT48L3NsaWRlc2hvdz4=")
- if err != nil {
- t.Fatal(err)
- }
- assert.Equal(t, "Sample Slide Show", ssp.Title)
- assert.Equal(t, 2, len(ssp.Slides))
- assert.Equal(t, "Overview", ssp.Slides[1].Title)
+ var ss slideshow
+ err = client.Get(&ss, "/get/xml")
+ require.NoError(t, err)
+ assert.Equal(t, "Sample Slide Show", ss.Title)
+ assert.Equal(t, 2, len(ss.Slides))
+ assert.Equal(t, "Overview", ss.Slides[1].Title)
// yaml
- s = nil
- err = client.Get(&s, "/base64/c2xpZGVzaG93OgogIGF1dGhvcjogWW91cnMgVHJ1bHkKICBkYXRlOiBkYXRlIG9mIHB1YmxpY2F0aW9uCiAgc2xpZGVzOgogIC0gdGl0bGU6IFdha2UgdXAgdG8gV29uZGVyV2lkZ2V0cyEKICAgIHR5cGU6IGFsbAogIC0gaXRlbXM6CiAgICAtIFdoeSA8ZW0+V29uZGVyV2lkZ2V0czwvZW0+IGFyZSBncmVhdAogICAgLSBXaG8gPGVtPmJ1eXM8L2VtPiBXb25kZXJXaWRnZXRzCiAgICB0aXRsZTogT3ZlcnZpZXcKICAgIHR5cGU6IGFsbAogIHRpdGxlOiBTYW1wbGUgU2xpZGUgU2hvdw==")
+ s = slideShowResponse{}
+ err = client.Get(&s, "/get/yaml")
if err != nil {
t.Fatal(err)
}
@@ -145,72 +209,82 @@ func TestClientGet(t *testing.T) {
assert.Equal(t, "Overview", s.Slideshow.Slides[1].Title)
}
-func TestClientPost(t *testing.T) {
- client, err := NewClient("test", "http://httpbin.org")
- if err != nil {
- t.Fatal(err)
+func (c *ClientTestSuite) TestClientPost() {
+ t := c.T()
+ client, err := NewClient("test", "http://localhost:8080")
+ require.NoError(t, err)
+
+ input := slideShowResponse{
+ Slideshow: slideshow{
+ Title: "Sample Slide Show",
+ Slides: []slide{
+ {
+ Title: "Content",
+ },
+ {
+ Title: "Overview",
+ },
+ },
+ },
}
- resp := &slideShowResponse{}
- err = client.Get(resp, "/json")
- if err != nil {
- t.Fatal(err)
- }
-
- jsonStr := resp.String()
- err = client.Post(resp, "/post", jsonStr)
- if err != nil {
- t.Fatal(err)
- }
- assert.NotNil(t, resp)
+ jsonStr, err := json.Marshal(input)
+ require.NoError(t, err)
+ resp := slideShowResponse{}
+ err = client.Post(&resp, "/req2resp", jsonStr)
+ require.NoError(t, err)
+ assert.Equal(t, input.Slideshow, resp.Slideshow)
assert.Equal(t, http.MethodPost, resp.Resp.Request.Method)
}
-func TestClientPut(t *testing.T) {
- client, err := NewClient("test", "http://httpbin.org")
- if err != nil {
- t.Fatal(err)
+func (c *ClientTestSuite) TestClientPut() {
+ t := c.T()
+ client, err := NewClient("test", "http://localhost:8080")
+ require.NoError(t, err)
+
+ input := slideShowResponse{
+ Slideshow: slideshow{
+ Title: "Sample Slide Show",
+ Slides: []slide{
+ {
+ Title: "Content",
+ },
+ {
+ Title: "Overview",
+ },
+ },
+ },
}
- resp := &slideShowResponse{}
- err = client.Get(resp, "/json")
- if err != nil {
- t.Fatal(err)
- }
-
- jsonStr := resp.String()
- err = client.Put(resp, "/put", jsonStr)
- if err != nil {
- t.Fatal(err)
- }
- assert.NotNil(t, resp)
+ jsonStr, err := json.Marshal(input)
+ require.NoError(t, err)
+ resp := slideShowResponse{}
+ err = client.Put(&resp, "/req2resp", jsonStr)
+ require.NoError(t, err)
+ assert.Equal(t, input.Slideshow, resp.Slideshow)
assert.Equal(t, http.MethodPut, resp.Resp.Request.Method)
}
-func TestClientDelete(t *testing.T) {
- client, err := NewClient("test", "http://httpbin.org")
- if err != nil {
- t.Fatal(err)
- }
+func (c *ClientTestSuite) TestClientDelete() {
+ t := c.T()
+ client, err := NewClient("test", "http://localhost:8080")
+ require.NoError(t, err)
resp := &slideShowResponse{}
- err = client.Delete(resp, "/delete")
- if err != nil {
- t.Fatal(err)
- }
+ err = client.Delete(resp, "/req2resp")
+ require.NoError(t, err)
defer resp.Resp.Body.Close()
+
assert.NotNil(t, resp)
assert.Equal(t, http.MethodDelete, resp.Resp.Request.Method)
}
-func TestClientHead(t *testing.T) {
- client, err := NewClient("test", "http://beego.gocn.vip")
- if err != nil {
- t.Fatal(err)
- }
-
+func (c *ClientTestSuite) TestClientHead() {
+ t := c.T()
+ client, err := NewClient("test", "http://localhost:8080")
+ require.NoError(t, err)
resp := &slideShowResponse{}
- err = client.Head(resp, "")
+ err = client.Head(resp, "/req2resp")
if err != nil {
t.Fatal(err)
}
diff --git a/client/httplib/httplib.go b/client/httplib/httplib.go
index 304c5909..cbe3f9db 100644
--- a/client/httplib/httplib.go
+++ b/client/httplib/httplib.go
@@ -27,7 +27,6 @@
// t.Fatal(err)
// }
// fmt.Println(str)
-//
package httplib
import (
@@ -225,9 +224,9 @@ func (b *BeegoHTTPRequest) SetTransport(transport http.RoundTripper) *BeegoHTTPR
// example:
//
// func(req *http.Request) (*url.URL, error) {
-// u, _ := url.ParseRequestURI("http://127.0.0.1:8118")
-// return u, nil
-// }
+// u, _ := url.ParseRequestURI("http://127.0.0.1:8118")
+// return u, nil
+// }
func (b *BeegoHTTPRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) *BeegoHTTPRequest {
b.setting.Proxy = proxy
return b
@@ -592,10 +591,10 @@ func (b *BeegoHTTPRequest) Bytes() ([]byte, error) {
if err != nil {
return nil, berror.Wrap(err, ReadGzipBodyFailed, "building gzip reader failed")
}
- b.body, err = ioutil.ReadAll(reader)
+ b.body, err = io.ReadAll(reader)
return b.body, berror.Wrap(err, ReadGzipBodyFailed, "reading gzip data failed")
}
- b.body, err = ioutil.ReadAll(resp.Body)
+ b.body, err = io.ReadAll(resp.Body)
return b.body, err
}
diff --git a/client/httplib/httplib_test.go b/client/httplib/httplib_test.go
index 39828d08..6c823223 100644
--- a/client/httplib/httplib_test.go
+++ b/client/httplib/httplib_test.go
@@ -17,9 +17,10 @@ package httplib
import (
"bytes"
"context"
+ json "encoding/json"
"errors"
"fmt"
- "io/ioutil"
+ "io"
"net"
"net/http"
"os"
@@ -27,19 +28,104 @@ import (
"testing"
"time"
+ "github.com/stretchr/testify/suite"
+
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
-func TestResponse(t *testing.T) {
- req := Get("http://httpbin.org/get")
- resp, err := req.Response()
- require.NoError(t, err)
- t.Log(resp)
+type HttplibTestSuite struct {
+ suite.Suite
+ l net.Listener
}
-func TestDoRequest(t *testing.T) {
- req := Get("https://goolnk.com/33BD2j")
+func (h *HttplibTestSuite) SetupSuite() {
+ listener, err := net.Listen("tcp", ":8080")
+ require.NoError(h.T(), err)
+ h.l = listener
+
+ handler := http.NewServeMux()
+
+ handler.HandleFunc("/get", func(writer http.ResponseWriter, request *http.Request) {
+ agent := request.Header.Get("User-Agent")
+ _, _ = writer.Write([]byte("hello, " + agent))
+ })
+
+ handler.HandleFunc("/put", func(writer http.ResponseWriter, request *http.Request) {
+ _, _ = writer.Write([]byte("hello, put"))
+ })
+
+ handler.HandleFunc("/post", func(writer http.ResponseWriter, request *http.Request) {
+ body, _ := io.ReadAll(request.Body)
+ _, _ = writer.Write(body)
+ })
+
+ handler.HandleFunc("/delete", func(writer http.ResponseWriter, request *http.Request) {
+ _, _ = writer.Write([]byte("hello, delete"))
+ })
+
+ handler.HandleFunc("/cookies/set", func(writer http.ResponseWriter, request *http.Request) {
+ k1 := request.URL.Query().Get("k1")
+ http.SetCookie(writer, &http.Cookie{
+ Name: "k1",
+ Value: k1,
+ })
+ _, _ = writer.Write([]byte("hello, set cookie"))
+ })
+
+ handler.HandleFunc("/cookies", func(writer http.ResponseWriter, request *http.Request) {
+ body := request.Cookies()[0].String()
+ _, _ = writer.Write([]byte(body))
+ })
+
+ handler.HandleFunc("/basic-auth/user/passwd", func(writer http.ResponseWriter, request *http.Request) {
+ _, _, ok := request.BasicAuth()
+ if ok {
+ _, _ = writer.Write([]byte("authenticated"))
+ } else {
+ _, _ = writer.Write([]byte("no auth"))
+ }
+ })
+
+ handler.HandleFunc("/headers", func(writer http.ResponseWriter, request *http.Request) {
+ agent := request.Header.Get("User-Agent")
+ _, _ = writer.Write([]byte(agent))
+ })
+
+ handler.HandleFunc("/ip", func(writer http.ResponseWriter, request *http.Request) {
+ data := map[string]string{"origin": "127.0.0.1"}
+ jsonBytes, _ := json.Marshal(data)
+ _, _ = writer.Write(jsonBytes)
+ })
+
+ handler.HandleFunc("/redirect", func(writer http.ResponseWriter, request *http.Request) {
+ http.Redirect(writer, request, "redirect_dst", http.StatusTemporaryRedirect)
+ })
+ handler.HandleFunc("redirect_dst", func(writer http.ResponseWriter, request *http.Request) {
+ _, _ = writer.Write([]byte("hello"))
+ })
+ go func() {
+ _ = http.Serve(listener, handler)
+ }()
+}
+
+func (h *HttplibTestSuite) TearDownSuite() {
+ _ = h.l.Close()
+}
+
+func TestHttplib(t *testing.T) {
+ suite.Run(t, &HttplibTestSuite{})
+}
+
+func (h *HttplibTestSuite) TestResponse() {
+ req := Get("http://localhost:8080/get")
+ _, err := req.Response()
+ require.NoError(h.T(), err)
+}
+
+func (h *HttplibTestSuite) TestDoRequest() {
+ t := h.T()
+ req := Get("http://localhost:8080/redirect")
retryAmount := 1
req.Retries(1)
req.RetryDelay(1400 * time.Millisecond)
@@ -63,107 +149,79 @@ func TestDoRequest(t *testing.T) {
}
}
-func TestGet(t *testing.T) {
- req := Get("http://httpbin.org/get")
+func (h *HttplibTestSuite) TestGet() {
+ t := h.T()
+ req := Get("http://localhost:8080/get")
b, err := req.Bytes()
require.NoError(t, err)
- t.Log(b)
s, err := req.String()
require.NoError(t, err)
- t.Log(s)
require.Equal(t, string(b), s)
}
-func TestSimplePost(t *testing.T) {
+func (h *HttplibTestSuite) TestSimplePost() {
+ t := h.T()
v := "smallfish"
- req := Post("http://httpbin.org/post")
+ req := Post("http://localhost:8080/post")
req.Param("username", v)
str, err := req.String()
require.NoError(t, err)
- t.Log(str)
+ n := strings.Index(str, v)
+ require.NotEqual(t, -1, n)
+}
+
+func (h *HttplibTestSuite) TestSimplePut() {
+ t := h.T()
+ _, err := Put("http://localhost:8080/put").String()
+ require.NoError(t, err)
+}
+
+func (h *HttplibTestSuite) TestSimpleDelete() {
+ t := h.T()
+ _, err := Delete("http://localhost:8080/delete").String()
+ require.NoError(t, err)
+}
+
+func (h *HttplibTestSuite) TestSimpleDeleteParam() {
+ t := h.T()
+ _, err := Delete("http://localhost:8080/delete").Param("key", "val").String()
+ require.NoError(t, err)
+}
+
+func (h *HttplibTestSuite) TestWithCookie() {
+ t := h.T()
+ v := "smallfish"
+ _, err := Get("http://localhost:8080/cookies/set?k1=" + v).SetEnableCookie(true).String()
+ require.NoError(t, err)
+
+ str, err := Get("http://localhost:8080/cookies").SetEnableCookie(true).String()
+ require.NoError(t, err)
n := strings.Index(str, v)
require.NotEqual(t, -1, n)
}
-// func TestPostFile(t *testing.T) {
-// v := "smallfish"
-// req := Post("http://httpbin.org/post")
-// req.Debug(true)
-// req.Param("username", v)
-// req.PostFile("uploadfile", "httplib_test.go")
-
-// str, err := req.String()
-// if err != nil {
-// t.Fatal(err)
-// }
-// t.Log(str)
-
-// n := strings.Index(str, v)
-// if n == -1 {
-// t.Fatal(v + " not found in post")
-// }
-// }
-
-func TestSimplePut(t *testing.T) {
- str, err := Put("http://httpbin.org/put").String()
+func (h *HttplibTestSuite) TestWithBasicAuth() {
+ t := h.T()
+ str, err := Get("http://localhost:8080/basic-auth/user/passwd").SetBasicAuth("user", "passwd").String()
require.NoError(t, err)
- t.Log(str)
-}
-
-func TestSimpleDelete(t *testing.T) {
- str, err := Delete("http://httpbin.org/delete").String()
- require.NoError(t, err)
- t.Log(str)
-}
-
-func TestSimpleDeleteParam(t *testing.T) {
- str, err := Delete("http://httpbin.org/delete").Param("key", "val").String()
- require.NoError(t, err)
- t.Log(str)
-}
-
-func TestWithCookie(t *testing.T) {
- v := "smallfish"
- str, err := Get("http://httpbin.org/cookies/set?k1=" + v).SetEnableCookie(true).String()
- require.NoError(t, err)
- t.Log(str)
-
- str, err = Get("http://httpbin.org/cookies").SetEnableCookie(true).String()
- require.NoError(t, err)
- t.Log(str)
-
- n := strings.Index(str, v)
- if n == -1 {
- t.Fatal(v + " not found in cookie")
- }
-}
-
-func TestWithBasicAuth(t *testing.T) {
- str, err := Get("http://httpbin.org/basic-auth/user/passwd").SetBasicAuth("user", "passwd").String()
- require.NoError(t, err)
- t.Log(str)
n := strings.Index(str, "authenticated")
- if n == -1 {
- t.Fatal("authenticated not found in response")
- }
+ require.NotEqual(t, -1, n)
}
-func TestWithUserAgent(t *testing.T) {
+func (h *HttplibTestSuite) TestWithUserAgent() {
+ t := h.T()
v := "beego"
- str, err := Get("http://httpbin.org/headers").SetUserAgent(v).String()
+ str, err := Get("http://localhost:8080/headers").SetUserAgent(v).String()
require.NoError(t, err)
- t.Log(str)
-
n := strings.Index(str, v)
- if n == -1 {
- t.Fatal(v + " not found in user-agent")
- }
+ require.NotEqual(t, -1, n)
}
-func TestWithSetting(t *testing.T) {
+func (h *HttplibTestSuite) TestWithSetting() {
+ t := h.T()
v := "beego"
var setting BeegoHTTPSettings
setting.EnableCookie = true
@@ -181,75 +239,68 @@ func TestWithSetting(t *testing.T) {
setting.ReadWriteTimeout = 5 * time.Second
SetDefaultSetting(setting)
- str, err := Get("http://httpbin.org/get").String()
+ str, err := Get("http://localhost:8080/get").String()
require.NoError(t, err)
- t.Log(str)
-
n := strings.Index(str, v)
- if n == -1 {
- t.Fatal(v + " not found in user-agent")
- }
+ require.NotEqual(t, -1, n)
}
-func TestToJson(t *testing.T) {
- req := Get("http://httpbin.org/ip")
+func (h *HttplibTestSuite) TestToJson() {
+ t := h.T()
+ req := Get("http://localhost:8080/ip")
resp, err := req.Response()
require.NoError(t, err)
t.Log(resp)
- // httpbin will return http remote addr
type IP struct {
Origin string `json:"origin"`
}
var ip IP
err = req.ToJSON(&ip)
require.NoError(t, err)
- t.Log(ip.Origin)
+ require.Equal(t, "127.0.0.1", ip.Origin)
+
ips := strings.Split(ip.Origin, ",")
- if len(ips) == 0 {
- t.Fatal("response is not valid ip")
- }
- for i := range ips {
- if net.ParseIP(strings.TrimSpace(ips[i])).To4() == nil {
- t.Fatal("response is not valid ip")
- }
- }
+ require.NotEmpty(t, ips)
}
-func TestToFile(t *testing.T) {
+func (h *HttplibTestSuite) TestToFile() {
+ t := h.T()
f := "beego_testfile"
- req := Get("http://httpbin.org/ip")
+ req := Get("http://localhost:8080/ip")
err := req.ToFile(f)
require.NoError(t, err)
defer os.Remove(f)
- b, err := ioutil.ReadFile(f)
- if n := bytes.Index(b, []byte("origin")); n == -1 {
- t.Fatal(err)
- }
+
+ b, err := os.ReadFile(f)
+ n := bytes.Index(b, []byte("origin"))
+ require.NotEqual(t, -1, n)
}
-func TestToFileDir(t *testing.T) {
+func (h *HttplibTestSuite) TestToFileDir() {
+ t := h.T()
f := "./files/beego_testfile"
- req := Get("http://httpbin.org/ip")
+ req := Get("http://localhost:8080/ip")
err := req.ToFile(f)
require.NoError(t, err)
defer os.RemoveAll("./files")
- b, err := ioutil.ReadFile(f)
- if n := bytes.Index(b, []byte("origin")); n == -1 {
- t.Fatal(err)
- }
+ b, err := os.ReadFile(f)
+ require.NoError(t, err)
+ n := bytes.Index(b, []byte("origin"))
+ require.NotEqual(t, -1, n)
}
-func TestHeader(t *testing.T) {
- req := Get("http://httpbin.org/headers")
+func (h *HttplibTestSuite) TestHeader() {
+ t := h.T()
+ req := Get("http://localhost:8080/headers")
req.Header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36")
- str, err := req.String()
+ _, err := req.String()
require.NoError(t, err)
- t.Log(str)
}
// TestAddFilter make sure that AddFilters only work for the specific request
-func TestAddFilter(t *testing.T) {
+func (h *HttplibTestSuite) TestAddFilter() {
+ t := h.T()
req := Get("http://beego.vip")
req.AddFilters(func(next Filter) Filter {
return func(ctx context.Context, req *BeegoHTTPRequest) (*http.Response, error) {
@@ -261,7 +312,8 @@ func TestAddFilter(t *testing.T) {
assert.Equal(t, 1, len(req.setting.FilterChains)-len(r.setting.FilterChains))
}
-func TestFilterChainOrder(t *testing.T) {
+func (h *HttplibTestSuite) TestFilterChainOrder() {
+ t := h.T()
req := Get("http://beego.vip")
req.AddFilters(func(next Filter) Filter {
return func(ctx context.Context, req *BeegoHTTPRequest) (*http.Response, error) {
@@ -282,24 +334,34 @@ func TestFilterChainOrder(t *testing.T) {
assert.Equal(t, "first", string(data))
}
-func TestHead(t *testing.T) {
+func (h *HttplibTestSuite) TestHead() {
+ t := h.T()
req := Head("http://beego.vip")
assert.NotNil(t, req)
assert.Equal(t, "HEAD", req.req.Method)
}
-func TestDelete(t *testing.T) {
+func (h *HttplibTestSuite) TestDelete() {
+ t := h.T()
req := Delete("http://beego.vip")
assert.NotNil(t, req)
assert.Equal(t, "DELETE", req.req.Method)
}
-func TestPost(t *testing.T) {
+func (h *HttplibTestSuite) TestPost() {
+ t := h.T()
req := Post("http://beego.vip")
assert.NotNil(t, req)
assert.Equal(t, "POST", req.req.Method)
}
+func (h *HttplibTestSuite) TestPut() {
+ t := h.T()
+ req := Put("http://beego.vip")
+ assert.NotNil(t, req)
+ assert.Equal(t, "PUT", req.req.Method)
+}
+
func TestNewBeegoRequest(t *testing.T) {
req := NewBeegoRequest("http://beego.vip", "GET")
assert.NotNil(t, req)
@@ -341,12 +403,6 @@ func TestBeegoHTTPRequestSetProtocolVersion(t *testing.T) {
assert.Equal(t, 1, req.req.ProtoMinor)
}
-func TestPut(t *testing.T) {
- req := Put("http://beego.vip")
- assert.NotNil(t, req)
- assert.Equal(t, "PUT", req.req.Method)
-}
-
func TestBeegoHTTPRequestHeader(t *testing.T) {
req := Post("http://beego.vip")
key, value := "test-header", "test-header-value"
diff --git a/client/orm/mock/mock_orm.go b/client/orm/mock/mock_orm.go
index ce6712a4..77fe2496 100644
--- a/client/orm/mock/mock_orm.go
+++ b/client/orm/mock/mock_orm.go
@@ -106,8 +106,10 @@ func MockDeleteWithCtx(tableName string, affectedRow int64, err error) *Mock {
// Now you may be need to use golang/mock to generate QueryM2M mock instance
// Or use DoNothingQueryM2Mer
// for example:
-// post := Post{Id: 4}
-// m2m := Ormer.QueryM2M(&post, "Tags")
+//
+// post := Post{Id: 4}
+// m2m := Ormer.QueryM2M(&post, "Tags")
+//
// when you write test code:
// MockQueryM2MWithCtx("post", "Tags", mockM2Mer)
// "post" is the table name of model Post structure
diff --git a/client/orm/orm.go b/client/orm/orm.go
index 2c27a290..3f4a374b 100644
--- a/client/orm/orm.go
+++ b/client/orm/orm.go
@@ -50,7 +50,6 @@
// // delete
// num, err = o.Delete(&u)
// }
-//
package orm
import (
@@ -324,8 +323,9 @@ func (o *ormBase) QueryM2MWithCtx(_ context.Context, md interface{}, name string
// args are limit, offset int and order string.
//
// example:
-// orm.LoadRelated(post,"Tags")
-// for _,tag := range post.Tags{...}
+//
+// orm.LoadRelated(post,"Tags")
+// for _,tag := range post.Tags{...}
//
// make sure the relation is defined in model struct tags.
func (o *ormBase) LoadRelated(md interface{}, name string, args ...utils.KV) (int64, error) {
diff --git a/client/orm/orm_querym2m.go b/client/orm/orm_querym2m.go
index 9da49bba..44312ae3 100644
--- a/client/orm/orm_querym2m.go
+++ b/client/orm/orm_querym2m.go
@@ -30,9 +30,10 @@ type queryM2M struct {
// add models to origin models when creating queryM2M.
// example:
-// m2m := orm.QueryM2M(post,"Tag")
-// m2m.Add(&Tag1{},&Tag2{})
-// for _,tag := range post.Tags{}
+//
+// m2m := orm.QueryM2M(post,"Tag")
+// m2m.Add(&Tag1{},&Tag2{})
+// for _,tag := range post.Tags{}
//
// make sure the relation is defined in post model struct tag.
func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
diff --git a/client/orm/orm_queryset.go b/client/orm/orm_queryset.go
index 82325899..c922a37f 100644
--- a/client/orm/orm_queryset.go
+++ b/client/orm/orm_queryset.go
@@ -43,9 +43,10 @@ const (
)
// ColValue do the field raw changes. e.g Nums = Nums + 10. usage:
-// Params{
-// "Nums": ColValue(Col_Add, 10),
-// }
+//
+// Params{
+// "Nums": ColValue(Col_Add, 10),
+// }
func ColValue(opt operator, value interface{}) interface{} {
switch opt {
case ColAdd, ColMinus, ColMultiply, ColExcept, ColBitAnd, ColBitRShift,
@@ -260,8 +261,9 @@ func (o *querySet) DeleteWithCtx(ctx context.Context) (int64, error) {
// return an insert queryer.
// it can be used in times.
// example:
-// i,err := sq.PrepareInsert()
-// i.Add(&user1{},&user2{})
+//
+// i,err := sq.PrepareInsert()
+// i.Add(&user1{},&user2{})
func (o *querySet) PrepareInsert() (Inserter, error) {
return o.PrepareInsertWithCtx(context.Background())
}
@@ -339,10 +341,11 @@ func (o *querySet) ValuesFlatWithCtx(ctx context.Context, result *ParamsList, ex
// name | value
// total | 100
// found | 200
-// to map[string]interface{}{
-// "total": 100,
-// "found": 200,
-// }
+//
+// to map[string]interface{}{
+// "total": 100,
+// "found": 200,
+// }
func (o *querySet) RowsToMap(result *Params, keyCol, valueCol string) (int64, error) {
panic(ErrNotImplement)
}
@@ -353,10 +356,11 @@ func (o *querySet) RowsToMap(result *Params, keyCol, valueCol string) (int64, er
// name | value
// total | 100
// found | 200
-// to struct {
-// Total int
-// Found int
-// }
+//
+// to struct {
+// Total int
+// Found int
+// }
func (o *querySet) RowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error) {
panic(ErrNotImplement)
}
diff --git a/client/orm/orm_raw.go b/client/orm/orm_raw.go
index f4f3a62e..f40d7c86 100644
--- a/client/orm/orm_raw.go
+++ b/client/orm/orm_raw.go
@@ -874,10 +874,11 @@ func (o *rawSet) ValuesFlat(container *ParamsList, cols ...string) (int64, error
// name | value
// total | 100
// found | 200
-// to map[string]interface{}{
-// "total": 100,
-// "found": 200,
-// }
+//
+// to map[string]interface{}{
+// "total": 100,
+// "found": 200,
+// }
func (o *rawSet) RowsToMap(result *Params, keyCol, valueCol string) (int64, error) {
return o.queryRowsTo(result, keyCol, valueCol)
}
@@ -888,10 +889,11 @@ func (o *rawSet) RowsToMap(result *Params, keyCol, valueCol string) (int64, erro
// name | value
// total | 100
// found | 200
-// to struct {
-// Total int
-// Found int
-// }
+//
+// to struct {
+// Total int
+// Found int
+// }
func (o *rawSet) RowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error) {
return o.queryRowsTo(ptrStruct, keyCol, valueCol)
}
diff --git a/client/orm/types.go b/client/orm/types.go
index df50a500..140eeda3 100644
--- a/client/orm/types.go
+++ b/client/orm/types.go
@@ -27,12 +27,14 @@ import (
// TableNaming is usually used by model
// when you custom your table name, please implement this interfaces
// for example:
-// type User struct {
-// ...
-// }
-// func (u *User) TableName() string {
-// return "USER_TABLE"
-// }
+//
+// type User struct {
+// ...
+// }
+//
+// func (u *User) TableName() string {
+// return "USER_TABLE"
+// }
type TableNameI interface {
TableName() string
}
@@ -40,12 +42,14 @@ type TableNameI interface {
// TableEngineI is usually used by model
// when you want to use specific engine, like myisam, you can implement this interface
// for example:
-// type User struct {
-// ...
-// }
-// func (u *User) TableEngine() string {
-// return "myisam"
-// }
+//
+// type User struct {
+// ...
+// }
+//
+// func (u *User) TableEngine() string {
+// return "myisam"
+// }
type TableEngineI interface {
TableEngine() string
}
@@ -53,12 +57,14 @@ type TableEngineI interface {
// TableIndexI is usually used by model
// when you want to create indexes, you can implement this interface
// for example:
-// type User struct {
-// ...
-// }
-// func (u *User) TableIndex() [][]string {
-// return [][]string{{"Name"}}
-// }
+//
+// type User struct {
+// ...
+// }
+//
+// func (u *User) TableIndex() [][]string {
+// return [][]string{{"Name"}}
+// }
type TableIndexI interface {
TableIndex() [][]string
}
@@ -66,12 +72,14 @@ type TableIndexI interface {
// TableUniqueI is usually used by model
// when you want to create unique indexes, you can implement this interface
// for example:
-// type User struct {
-// ...
-// }
-// func (u *User) TableUnique() [][]string {
-// return [][]string{{"Email"}}
-// }
+//
+// type User struct {
+// ...
+// }
+//
+// func (u *User) TableUnique() [][]string {
+// return [][]string{{"Email"}}
+// }
type TableUniqueI interface {
TableUnique() [][]string
}
@@ -526,8 +534,9 @@ type RawPreparer interface {
// RawSeter raw query seter
// create From Ormer.Raw
// for example:
-// sql := fmt.Sprintf("SELECT %sid%s,%sname%s FROM %suser%s WHERE id = ?",Q,Q,Q,Q,Q,Q)
-// rs := Ormer.Raw(sql, 1)
+//
+// sql := fmt.Sprintf("SELECT %sid%s,%sname%s FROM %suser%s WHERE id = ?",Q,Q,Q,Q,Q,Q)
+// rs := Ormer.Raw(sql, 1)
type RawSeter interface {
// execute sql and get result
Exec() (sql.Result, error)
diff --git a/core/admin/healthcheck.go b/core/admin/healthcheck.go
index ea155b86..077b1c53 100644
--- a/core/admin/healthcheck.go
+++ b/core/admin/healthcheck.go
@@ -17,16 +17,15 @@
// type DatabaseCheck struct {
// }
//
-// func (dc *DatabaseCheck) Check() error {
-// if dc.isConnected() {
-// return nil
-// } else {
-// return errors.New("can't connect database")
-// }
-// }
+// func (dc *DatabaseCheck) Check() error {
+// if dc.isConnected() {
+// return nil
+// } else {
+// return errors.New("can't connect database")
+// }
+// }
//
// AddHealthCheck("database",&DatabaseCheck{})
-//
package admin
// AdminCheckList holds health checker map
diff --git a/core/config/config.go b/core/config/config.go
index 1222fb49..145333f9 100644
--- a/core/config/config.go
+++ b/core/config/config.go
@@ -14,29 +14,31 @@
// Package config is used to parse config.
// Usage:
-// import "github.com/beego/beego/v2/core/config"
+//
+// import "github.com/beego/beego/v2/core/config"
+//
// Examples.
//
-// cnf, err := config.NewConfig("ini", "config.conf")
+// cnf, err := config.NewConfig("ini", "config.conf")
//
-// cnf APIS:
+// cnf APIS:
//
-// cnf.Set(key, val string) error
-// cnf.String(key string) string
-// cnf.Strings(key string) []string
-// cnf.Int(key string) (int, error)
-// cnf.Int64(key string) (int64, error)
-// cnf.Bool(key string) (bool, error)
-// cnf.Float(key string) (float64, error)
-// cnf.DefaultString(key string, defaultVal string) string
-// cnf.DefaultStrings(key string, defaultVal []string) []string
-// cnf.DefaultInt(key string, defaultVal int) int
-// cnf.DefaultInt64(key string, defaultVal int64) int64
-// cnf.DefaultBool(key string, defaultVal bool) bool
-// cnf.DefaultFloat(key string, defaultVal float64) float64
-// cnf.DIY(key string) (interface{}, error)
-// cnf.GetSection(section string) (map[string]string, error)
-// cnf.SaveConfigFile(filename string) error
+// cnf.Set(key, val string) error
+// cnf.String(key string) string
+// cnf.Strings(key string) []string
+// cnf.Int(key string) (int, error)
+// cnf.Int64(key string) (int64, error)
+// cnf.Bool(key string) (bool, error)
+// cnf.Float(key string) (float64, error)
+// cnf.DefaultString(key string, defaultVal string) string
+// cnf.DefaultStrings(key string, defaultVal []string) []string
+// cnf.DefaultInt(key string, defaultVal int) int
+// cnf.DefaultInt64(key string, defaultVal int64) int64
+// cnf.DefaultBool(key string, defaultVal bool) bool
+// cnf.DefaultFloat(key string, defaultVal float64) float64
+// cnf.DIY(key string) (interface{}, error)
+// cnf.GetSection(section string) (map[string]string, error)
+// cnf.SaveConfigFile(filename string) error
package config
import (
@@ -266,6 +268,7 @@ func ExpandValueEnvForMap(m map[string]interface{}) map[string]interface{} {
//
// It accept value formats "${env}" , "${env||}}" , "${env||defaultValue}" , "defaultvalue".
// Examples:
+//
// v1 := config.ExpandValueEnv("${GOPATH}") // return the GOPATH environment variable.
// v2 := config.ExpandValueEnv("${GOAsta||/usr/local/go}") // return the default value "/usr/local/go/".
// v3 := config.ExpandValueEnv("Astaxie") // return the value "Astaxie".
diff --git a/core/config/env/env_test.go b/core/config/env/env_test.go
index 1cd88147..eabff737 100644
--- a/core/config/env/env_test.go
+++ b/core/config/env/env_test.go
@@ -5,7 +5,7 @@
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
-// http://www.apache.org/licenses/LICENSE-2.0
+// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
diff --git a/core/config/xml/xml.go b/core/config/xml/xml.go
index 173f2246..1d7494b4 100644
--- a/core/config/xml/xml.go
+++ b/core/config/xml/xml.go
@@ -19,13 +19,13 @@
// go install github.com/beego/x2j.
//
// Usage:
-// import(
-// _ "github.com/beego/beego/v2/core/config/xml"
-// "github.com/beego/beego/v2/core/config"
-// )
//
-// cnf, err := config.NewConfig("xml", "config.xml")
+// import(
+// _ "github.com/beego/beego/v2/core/config/xml"
+// "github.com/beego/beego/v2/core/config"
+// )
//
+// cnf, err := config.NewConfig("xml", "config.xml")
package xml
import (
@@ -40,9 +40,10 @@ import (
"github.com/mitchellh/mapstructure"
+ "github.com/beego/x2j"
+
"github.com/beego/beego/v2/core/config"
"github.com/beego/beego/v2/core/logs"
- "github.com/beego/x2j"
)
// Config is a xml config parser and implements Config interface.
diff --git a/core/config/yaml/yaml.go b/core/config/yaml/yaml.go
index b18ce06b..1af53b75 100644
--- a/core/config/yaml/yaml.go
+++ b/core/config/yaml/yaml.go
@@ -14,13 +14,13 @@
// Package yaml for config provider
// Usage:
-// import(
-// _ "github.com/beego/beego/v2/core/config/yaml"
-// "github.com/beego/beego/v2/core/config"
-// )
//
-// cnf, err := config.NewConfig("yaml", "config.yaml")
+// import(
+// _ "github.com/beego/beego/v2/core/config/yaml"
+// "github.com/beego/beego/v2/core/config"
+// )
//
+// cnf, err := config.NewConfig("yaml", "config.yaml")
package yaml
import (
diff --git a/core/logs/file.go b/core/logs/file.go
index 3234a674..b50369e7 100644
--- a/core/logs/file.go
+++ b/core/logs/file.go
@@ -110,15 +110,16 @@ func (w *fileLogWriter) SetFormatter(f LogFormatter) {
// Init file logger with json config.
// jsonConfig like:
-// {
-// "filename":"logs/beego.log",
-// "maxLines":10000,
-// "maxsize":1024,
-// "daily":true,
-// "maxDays":15,
-// "rotate":true,
-// "perm":"0600"
-// }
+//
+// {
+// "filename":"logs/beego.log",
+// "maxLines":10000,
+// "maxsize":1024,
+// "daily":true,
+// "maxDays":15,
+// "rotate":true,
+// "perm":"0600"
+// }
func (w *fileLogWriter) Init(config string) error {
err := json.Unmarshal([]byte(config), w)
if err != nil {
diff --git a/core/logs/smtp.go b/core/logs/smtp.go
index 40891a7c..10630070 100644
--- a/core/logs/smtp.go
+++ b/core/logs/smtp.go
@@ -47,6 +47,7 @@ func newSMTPWriter() Logger {
// Init smtp writer with json config.
// config like:
+//
// {
// "username":"example@gmail.com",
// "password:"password",
diff --git a/core/utils/pagination/doc.go b/core/utils/pagination/doc.go
index 808301a5..78beccd3 100644
--- a/core/utils/pagination/doc.go
+++ b/core/utils/pagination/doc.go
@@ -2,53 +2,51 @@
Package pagination provides utilities to setup a paginator within the
context of a http request.
-Usage
+# Usage
In your beego.Controller:
- package controllers
+ package controllers
- import "github.com/beego/beego/v2/core/utils/pagination"
+ import "github.com/beego/beego/v2/core/utils/pagination"
- type PostsController struct {
- beego.Controller
- }
+ type PostsController struct {
+ beego.Controller
+ }
- func (this *PostsController) ListAllPosts() {
- // sets this.Data["paginator"] with the current offset (from the url query param)
- postsPerPage := 20
- paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())
-
- // fetch the next 20 posts
- this.Data["posts"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)
- }
+ func (this *PostsController) ListAllPosts() {
+ // sets this.Data["paginator"] with the current offset (from the url query param)
+ postsPerPage := 20
+ paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())
+ // fetch the next 20 posts
+ this.Data["posts"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)
+ }
In your view templates:
- {{if .paginator.HasPages}}
-
- {{end}}
-
+ {{if .paginator.HasPages}}
+
+ {{end}}
*/
package pagination
diff --git a/core/utils/pagination/paginator.go b/core/utils/pagination/paginator.go
index c6db31e0..6a9ca7c4 100644
--- a/core/utils/pagination/paginator.go
+++ b/core/utils/pagination/paginator.go
@@ -78,11 +78,11 @@ func (p *Paginator) Page() int {
//
// Usage (in a view template):
//
-// {{range $index, $page := .paginator.Pages}}
-//
-// {{$page}}
-//
-// {{end}}
+// {{range $index, $page := .paginator.Pages}}
+//
+// {{$page}}
+//
+// {{end}}
func (p *Paginator) Pages() []int {
if p.pageRange == nil && p.nums > 0 {
var pages []int
diff --git a/core/validation/util.go b/core/validation/util.go
index 918b206c..69a43243 100644
--- a/core/validation/util.go
+++ b/core/validation/util.go
@@ -67,13 +67,15 @@ type CustomFunc func(v *Validation, obj interface{}, key string)
// AddCustomFunc Add a custom function to validation
// The name can not be:
-// Clear
-// HasErrors
-// ErrorMap
-// Error
-// Check
-// Valid
-// NoMatch
+//
+// Clear
+// HasErrors
+// ErrorMap
+// Error
+// Check
+// Valid
+// NoMatch
+//
// If the name is same with exists function, it will replace the origin valid function
func AddCustomFunc(name string, f CustomFunc) error {
if unFuncs[name] {
diff --git a/core/validation/validation.go b/core/validation/validation.go
index a6e502c7..33d466fa 100644
--- a/core/validation/validation.go
+++ b/core/validation/validation.go
@@ -42,7 +42,6 @@
// log.Println(v.Error.Key, v.Error.Message)
// }
// }
-//
package validation
import (
diff --git a/core/validation/validators.go b/core/validation/validators.go
index c4ea1f51..3150fda5 100644
--- a/core/validation/validators.go
+++ b/core/validation/validators.go
@@ -64,26 +64,27 @@ var once sync.Once
// SetDefaultMessage set default messages
// if not set, the default messages are
-// "Required": "Can not be empty",
-// "Min": "Minimum is %d",
-// "Max": "Maximum is %d",
-// "Range": "Range is %d to %d",
-// "MinSize": "Minimum size is %d",
-// "MaxSize": "Maximum size is %d",
-// "Length": "Required length is %d",
-// "Alpha": "Must be valid alpha characters",
-// "Numeric": "Must be valid numeric characters",
-// "AlphaNumeric": "Must be valid alpha or numeric characters",
-// "Match": "Must match %s",
-// "NoMatch": "Must not match %s",
-// "AlphaDash": "Must be valid alpha or numeric or dash(-_) characters",
-// "Email": "Must be a valid email address",
-// "IP": "Must be a valid ip address",
-// "Base64": "Must be valid base64 characters",
-// "Mobile": "Must be valid mobile number",
-// "Tel": "Must be valid telephone number",
-// "Phone": "Must be valid telephone or mobile phone number",
-// "ZipCode": "Must be valid zipcode",
+//
+// "Required": "Can not be empty",
+// "Min": "Minimum is %d",
+// "Max": "Maximum is %d",
+// "Range": "Range is %d to %d",
+// "MinSize": "Minimum size is %d",
+// "MaxSize": "Maximum size is %d",
+// "Length": "Required length is %d",
+// "Alpha": "Must be valid alpha characters",
+// "Numeric": "Must be valid numeric characters",
+// "AlphaNumeric": "Must be valid alpha or numeric characters",
+// "Match": "Must match %s",
+// "NoMatch": "Must not match %s",
+// "AlphaDash": "Must be valid alpha or numeric or dash(-_) characters",
+// "Email": "Must be a valid email address",
+// "IP": "Must be a valid ip address",
+// "Base64": "Must be valid base64 characters",
+// "Mobile": "Must be valid mobile number",
+// "Tel": "Must be valid telephone number",
+// "Phone": "Must be valid telephone or mobile phone number",
+// "ZipCode": "Must be valid zipcode",
func SetDefaultMessage(msg map[string]string) {
if len(msg) == 0 {
return
diff --git a/server/web/admin.go b/server/web/admin.go
index 56d2906f..10c80d6d 100644
--- a/server/web/admin.go
+++ b/server/web/admin.go
@@ -30,7 +30,8 @@ var beeAdminApp *adminApp
// FilterMonitorFunc is default monitor filter when admin module is enable.
// if this func returns, admin module records qps for this request by condition of this function logic.
// usage:
-// func MyFilterMonitor(method, requestPath string, t time.Duration, pattern string, statusCode int) bool {
+//
+// func MyFilterMonitor(method, requestPath string, t time.Duration, pattern string, statusCode int) bool {
// if method == "POST" {
// return false
// }
@@ -41,8 +42,8 @@ var beeAdminApp *adminApp
// return false
// }
// return true
-// }
-// beego.FilterMonitorFunc = MyFilterMonitor.
+// }
+// beego.FilterMonitorFunc = MyFilterMonitor.
var FilterMonitorFunc func(string, string, time.Duration, string, int) bool
func init() {
diff --git a/server/web/captcha/captcha.go b/server/web/captcha/captcha.go
index 6d8c33b4..827c7276 100644
--- a/server/web/captcha/captcha.go
+++ b/server/web/captcha/captcha.go
@@ -19,32 +19,35 @@
// package controllers
//
// import (
-// "github.com/beego/beego/v2"
-// "github.com/beego/beego/v2/client/cache"
-// "github.com/beego/beego/v2/server/web/captcha"
+//
+// "github.com/beego/beego/v2"
+// "github.com/beego/beego/v2/client/cache"
+// "github.com/beego/beego/v2/server/web/captcha"
+//
// )
//
// var cpt *captcha.Captcha
//
-// func init() {
-// // use beego cache system store the captcha data
-// store := cache.NewMemoryCache()
-// cpt = captcha.NewWithFilter("/captcha/", store)
-// }
+// func init() {
+// // use beego cache system store the captcha data
+// store := cache.NewMemoryCache()
+// cpt = captcha.NewWithFilter("/captcha/", store)
+// }
//
-// type MainController struct {
-// beego.Controller
-// }
+// type MainController struct {
+// beego.Controller
+// }
//
-// func (this *MainController) Get() {
-// this.TplName = "index.tpl"
-// }
+// func (this *MainController) Get() {
+// this.TplName = "index.tpl"
+// }
//
-// func (this *MainController) Post() {
-// this.TplName = "index.tpl"
+// func (this *MainController) Post() {
+// this.TplName = "index.tpl"
+//
+// this.Data["Success"] = cpt.VerifyReq(this.Ctx.Request)
+// }
//
-// this.Data["Success"] = cpt.VerifyReq(this.Ctx.Request)
-// }
// ```
//
// template usage
@@ -52,8 +55,10 @@
// ```
// {{.Success}}
//
// ```
package captcha
diff --git a/server/web/context/context.go b/server/web/context/context.go
index 8d0a3f3a..4adff2c7 100644
--- a/server/web/context/context.go
+++ b/server/web/context/context.go
@@ -18,7 +18,6 @@
// import "github.com/beego/beego/v2/server/web/context"
//
// ctx := context.Context{Request:req,ResponseWriter:rw}
-//
package context
import (
diff --git a/server/web/controller.go b/server/web/controller.go
index 90cc2dd3..68b1fc64 100644
--- a/server/web/controller.go
+++ b/server/web/controller.go
@@ -635,31 +635,33 @@ func (c *Controller) GetFile(key string) (multipart.File, *multipart.FileHeader,
// GetFiles return multi-upload files
// files, err:=c.GetFiles("myfiles")
+//
// if err != nil {
// http.Error(w, err.Error(), http.StatusNoContent)
// return
// }
-// for i, _ := range files {
-// //for each fileheader, get a handle to the actual file
-// file, err := files[i].Open()
-// defer file.Close()
-// if err != nil {
-// http.Error(w, err.Error(), http.StatusInternalServerError)
-// return
+//
+// for i, _ := range files {
+// //for each fileheader, get a handle to the actual file
+// file, err := files[i].Open()
+// defer file.Close()
+// if err != nil {
+// http.Error(w, err.Error(), http.StatusInternalServerError)
+// return
+// }
+// //create destination file making sure the path is writeable.
+// dst, err := os.Create("upload/" + files[i].Filename)
+// defer dst.Close()
+// if err != nil {
+// http.Error(w, err.Error(), http.StatusInternalServerError)
+// return
+// }
+// //copy the uploaded file to the destination file
+// if _, err := io.Copy(dst, file); err != nil {
+// http.Error(w, err.Error(), http.StatusInternalServerError)
+// return
+// }
// }
-// //create destination file making sure the path is writeable.
-// dst, err := os.Create("upload/" + files[i].Filename)
-// defer dst.Close()
-// if err != nil {
-// http.Error(w, err.Error(), http.StatusInternalServerError)
-// return
-// }
-// //copy the uploaded file to the destination file
-// if _, err := io.Copy(dst, file); err != nil {
-// http.Error(w, err.Error(), http.StatusInternalServerError)
-// return
-// }
-// }
func (c *Controller) GetFiles(key string) ([]*multipart.FileHeader, error) {
if files, ok := c.Ctx.Request.MultipartForm.File[key]; ok {
return files, nil
diff --git a/server/web/doc.go b/server/web/doc.go
index dd62b41a..2ea053e4 100644
--- a/server/web/doc.go
+++ b/server/web/doc.go
@@ -11,6 +11,5 @@ beego is inspired by Tornado, Sinatra and Flask with the added benefit of some G
func main() {
beego.Run()
}
-
*/
package web
diff --git a/server/web/error.go b/server/web/error.go
index 118585dc..da35ad8a 100644
--- a/server/web/error.go
+++ b/server/web/error.go
@@ -386,7 +386,8 @@ func responseError(rw http.ResponseWriter, r *http.Request, errCode int, errCont
// ErrorHandler registers http.HandlerFunc to each http err code string.
// usage:
-// beego.ErrorHandler("404",NotFound)
+//
+// beego.ErrorHandler("404",NotFound)
// beego.ErrorHandler("500",InternalServerError)
func ErrorHandler(code string, h http.HandlerFunc) *HttpServer {
ErrorMaps[code] = &errorInfo{
@@ -399,7 +400,8 @@ func ErrorHandler(code string, h http.HandlerFunc) *HttpServer {
// ErrorController registers ControllerInterface to each http err code string.
// usage:
-// beego.ErrorController(&controllers.ErrorController{})
+//
+// beego.ErrorController(&controllers.ErrorController{})
func ErrorController(c ControllerInterface) *HttpServer {
reflectVal := reflect.ValueOf(c)
rt := reflectVal.Type()
diff --git a/server/web/filter.go b/server/web/filter.go
index 2237703d..8ada5b32 100644
--- a/server/web/filter.go
+++ b/server/web/filter.go
@@ -43,8 +43,8 @@ type FilterRouter struct {
}
// params is for:
-// 1. setting the returnOnOutput value (false allows multiple filters to execute)
-// 2. determining whether or not params need to be reset.
+// 1. setting the returnOnOutput value (false allows multiple filters to execute)
+// 2. determining whether or not params need to be reset.
func newFilterRouter(pattern string, filter FilterFunc, opts ...FilterOpt) *FilterRouter {
mr := &FilterRouter{
tree: NewTree(),
diff --git a/server/web/filter/apiauth/apiauth.go b/server/web/filter/apiauth/apiauth.go
index 55a914a2..104d1770 100644
--- a/server/web/filter/apiauth/apiauth.go
+++ b/server/web/filter/apiauth/apiauth.go
@@ -15,6 +15,7 @@
// Package apiauth provides handlers to enable apiauth support.
//
// Simple Usage:
+//
// import(
// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/apiauth"
@@ -37,11 +38,11 @@
//
// Information:
//
-// In the request user should include these params in the query
+// # In the request user should include these params in the query
//
// 1. appid
//
-// appid is assigned to the application
+// appid is assigned to the application
//
// 2. signature
//
@@ -51,8 +52,7 @@
//
// 3. timestamp:
//
-// send the request time, the format is yyyy-mm-dd HH:ii:ss
-//
+// send the request time, the format is yyyy-mm-dd HH:ii:ss
package apiauth
import (
diff --git a/server/web/filter/auth/basic.go b/server/web/filter/auth/basic.go
index 403d4b2c..2881d7cf 100644
--- a/server/web/filter/auth/basic.go
+++ b/server/web/filter/auth/basic.go
@@ -14,6 +14,7 @@
// Package auth provides handlers to enable basic auth support.
// Simple Usage:
+//
// import(
// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/auth"
@@ -25,7 +26,6 @@
// beego.Run()
// }
//
-//
// Advanced Usage:
//
// func SecretAuth(username, password string) bool {
diff --git a/server/web/filter/authz/authz.go b/server/web/filter/authz/authz.go
index 4ff2d6bf..7475ea6c 100644
--- a/server/web/filter/authz/authz.go
+++ b/server/web/filter/authz/authz.go
@@ -14,6 +14,7 @@
// Package authz provides handlers to enable ACL, RBAC, ABAC authorization support.
// Simple Usage:
+//
// import(
// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/authz"
@@ -26,7 +27,6 @@
// beego.Run()
// }
//
-//
// Advanced Usage:
//
// func main(){
diff --git a/server/web/filter/cors/cors.go b/server/web/filter/cors/cors.go
index f6c68ca0..4c5cb5b7 100644
--- a/server/web/filter/cors/cors.go
+++ b/server/web/filter/cors/cors.go
@@ -14,9 +14,11 @@
// Package cors provides handlers to enable CORS support.
// Usage
+//
// import (
-// "github.com/beego/beego/v2"
+// "github.com/beego/beego/v2"
// "github.com/beego/beego/v2/server/web/filter/cors"
+//
// )
//
// func main() {
diff --git a/server/web/grace/grace.go b/server/web/grace/grace.go
index bad7e61d..cefc890b 100644
--- a/server/web/grace/grace.go
+++ b/server/web/grace/grace.go
@@ -18,28 +18,30 @@
// Usage:
//
// import(
-// "log"
-// "net/http"
-// "os"
//
-// "github.com/beego/beego/v2/server/web/grace"
+// "log"
+// "net/http"
+// "os"
+//
+// "github.com/beego/beego/v2/server/web/grace"
+//
// )
//
-// func handler(w http.ResponseWriter, r *http.Request) {
-// w.Write([]byte("WORLD!"))
-// }
+// func handler(w http.ResponseWriter, r *http.Request) {
+// w.Write([]byte("WORLD!"))
+// }
//
-// func main() {
-// mux := http.NewServeMux()
-// mux.HandleFunc("/hello", handler)
+// func main() {
+// mux := http.NewServeMux()
+// mux.HandleFunc("/hello", handler)
//
-// err := grace.ListenAndServe("localhost:8080", mux)
-// if err != nil {
-// log.Println(err)
-// }
-// log.Println("Server on 8080 stopped")
-// os.Exit(0)
-// }
+// err := grace.ListenAndServe("localhost:8080", mux)
+// if err != nil {
+// log.Println(err)
+// }
+// log.Println("Server on 8080 stopped")
+// os.Exit(0)
+// }
package grace
import (
diff --git a/server/web/namespace.go b/server/web/namespace.go
index 8da8a797..0a9c7e6e 100644
--- a/server/web/namespace.go
+++ b/server/web/namespace.go
@@ -47,12 +47,14 @@ func NewNamespace(prefix string, params ...LinkNamespace) *Namespace {
// Cond set condition function
// if cond return true can run this namespace, else can't
// usage:
-// ns.Cond(func (ctx *context.Context) bool{
-// if ctx.Input.Domain() == "api.beego.vip" {
-// return true
-// }
-// return false
-// })
+//
+// ns.Cond(func (ctx *context.Context) bool{
+// if ctx.Input.Domain() == "api.beego.vip" {
+// return true
+// }
+// return false
+// })
+//
// Cond as the first filter
func (n *Namespace) Cond(cond namespaceCond) *Namespace {
fn := func(ctx *beecontext.Context) {
@@ -77,12 +79,13 @@ func (n *Namespace) Cond(cond namespaceCond) *Namespace {
// action has before & after
// FilterFunc
// usage:
-// Filter("before", func (ctx *context.Context){
-// _, ok := ctx.Input.Session("uid").(int)
-// if !ok && ctx.Request.RequestURI != "/login" {
-// ctx.Redirect(302, "/login")
-// }
-// })
+//
+// Filter("before", func (ctx *context.Context){
+// _, ok := ctx.Input.Session("uid").(int)
+// if !ok && ctx.Request.RequestURI != "/login" {
+// ctx.Redirect(302, "/login")
+// }
+// })
func (n *Namespace) Filter(action string, filter ...FilterFunc) *Namespace {
var a int
if action == "before" {
@@ -239,18 +242,20 @@ func (n *Namespace) CtrlAny(rootpath string, f interface{}) *Namespace {
// usage:
// ns := beego.NewNamespace(“/v1”).
// Namespace(
-// beego.NewNamespace("/shop").
-// Get("/:id", func(ctx *context.Context) {
-// ctx.Output.Body([]byte("shopinfo"))
-// }),
-// beego.NewNamespace("/order").
-// Get("/:id", func(ctx *context.Context) {
-// ctx.Output.Body([]byte("orderinfo"))
-// }),
-// beego.NewNamespace("/crm").
-// Get("/:id", func(ctx *context.Context) {
-// ctx.Output.Body([]byte("crminfo"))
-// }),
+//
+// beego.NewNamespace("/shop").
+// Get("/:id", func(ctx *context.Context) {
+// ctx.Output.Body([]byte("shopinfo"))
+// }),
+// beego.NewNamespace("/order").
+// Get("/:id", func(ctx *context.Context) {
+// ctx.Output.Body([]byte("orderinfo"))
+// }),
+// beego.NewNamespace("/crm").
+// Get("/:id", func(ctx *context.Context) {
+// ctx.Output.Body([]byte("crminfo"))
+// }),
+//
// )
func (n *Namespace) Namespace(ns ...*Namespace) *Namespace {
for _, ni := range ns {
diff --git a/server/web/session/session.go b/server/web/session/session.go
index 7e46bb7f..a83542ec 100644
--- a/server/web/session/session.go
+++ b/server/web/session/session.go
@@ -16,14 +16,15 @@
//
// Usage:
// import(
-// "github.com/beego/beego/v2/server/web/session"
+//
+// "github.com/beego/beego/v2/server/web/session"
+//
// )
//
-// func init() {
-// globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "cookieLifeTime": 3600, "providerConfig": ""}`)
-// go globalSessions.GC()
-// }
-//
+// func init() {
+// globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "cookieLifeTime": 3600, "providerConfig": ""}`)
+// go globalSessions.GC()
+// }
package session
import (
diff --git a/server/web/templatefunc.go b/server/web/templatefunc.go
index 6a380761..24f28502 100644
--- a/server/web/templatefunc.go
+++ b/server/web/templatefunc.go
@@ -227,21 +227,21 @@ func Htmlunquote(text string) string {
}
// URLFor returns url string with another registered controller handler with params.
-// usage:
//
-// URLFor(".index")
-// print URLFor("index")
-// router /login
-// print URLFor("login")
-// print URLFor("login", "next","/"")
-// router /profile/:username
-// print UrlFor("profile", ":username","John Doe")
-// result:
-// /
-// /login
-// /login?next=/
-// /user/John%20Doe
+// usage:
//
+// URLFor(".index")
+// print URLFor("index")
+// router /login
+// print URLFor("login")
+// print URLFor("login", "next","/"")
+// router /profile/:username
+// print UrlFor("profile", ":username","John Doe")
+// result:
+// /
+// /login
+// /login?next=/
+// /user/John%20Doe
func URLFor(endpoint string, values ...interface{}) string {
return BeeApp.Handlers.URLFor(endpoint, values...)
}
@@ -564,12 +564,13 @@ func ge(arg1, arg2 interface{}) (bool, error) {
// MapGet getting value from map by keys
// usage:
-// Data["m"] = M{
-// "a": 1,
-// "1": map[string]float64{
-// "c": 4,
-// },
-// }
+//
+// Data["m"] = M{
+// "a": 1,
+// "1": map[string]float64{
+// "c": 4,
+// },
+// }
//
// {{ map_get m "a" }} // return 1
// {{ map_get m 1 "c" }} // return 4
diff --git a/task/task.go b/task/task.go
index 3678f1a2..870210ec 100644
--- a/task/task.go
+++ b/task/task.go
@@ -237,11 +237,16 @@ func TimeoutOption(timeout time.Duration) Option {
// week:0-6(0 means Sunday)
// SetCron some signals:
-// *: any time
-// ,: separate signal
+//
+// *: any time
+// ,: separate signal
+//
// -:duration
-// /n : do as n times of time duration
+//
+// /n : do as n times of time duration
+//
// ///////////////////////////////////////////////////////
+//
// 0/30 * * * * * every 30s
// 0 43 21 * * * 21:43
// 0 15 05 * * * 05:15
@@ -724,7 +729,8 @@ func getField(field string, r bounds) uint64 {
}
// getRange returns the bits indicated by the given expression:
-// number | number "-" number [ "/" number ]
+//
+// number | number "-" number [ "/" number ]
func getRange(expr string, r bounds) uint64 {
var (
start, end, step uint
diff --git a/test/bindata.go b/test/bindata.go
index 632f5a47..414625e3 100644
--- a/test/bindata.go
+++ b/test/bindata.go
@@ -198,11 +198,13 @@ var _bindata = map[string]func() (*asset, error){
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
-// data/
-// foo.txt
-// img/
-// a.png
-// b.png
+//
+// data/
+// foo.txt
+// img/
+// a.png
+// b.png
+//
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error