mirror of
https://github.com/cubixle/tuu.git
synced 2026-04-24 23:04:43 +01:00
SAVEPOINT
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
vendor
|
||||||
291
Gopkg.lock
generated
Normal file
291
Gopkg.lock
generated
Normal file
@@ -0,0 +1,291 @@
|
|||||||
|
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||||
|
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "dmitri.shuralyov.com/kebabcase"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "bf160e40a7918fbe9dc3cc841a023d87242bd2eb"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/davecgh/go-spew"
|
||||||
|
packages = ["spew"]
|
||||||
|
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
|
||||||
|
version = "v1.1.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/daviddengcn/go-colortext"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "805cee6e0d43c72ba1d4e3275965ff41e0da068a"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/fatih/color"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "570b54cabe6b8eb0bc2dfce68d964677d63b5260"
|
||||||
|
version = "v1.5.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/fatih/structs"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "a720dfa8df582c51dee1b36feabb906bde1588bd"
|
||||||
|
version = "v1.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/go-sql-driver/mysql"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "a0583e0143b1624142adab07e0e97fe106d99561"
|
||||||
|
version = "v1.3"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gobuffalo/buffalo"
|
||||||
|
packages = ["render"]
|
||||||
|
revision = "436dc23f762ecc9aef1c759db2e7c09193944414"
|
||||||
|
version = "v0.10.1"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gobuffalo/envy"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "e613c80275b86293880eddeb27417c9a7c670ff3"
|
||||||
|
version = "v1.3.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gobuffalo/packr"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "aa752c1e501ca862dbb5720ff7c58b9289e68683"
|
||||||
|
version = "v1.9.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gobuffalo/plush"
|
||||||
|
packages = [".","ast","lexer","parser","token"]
|
||||||
|
revision = "7df6c6624e74b78e595d9500ab1acf810cdf7af1"
|
||||||
|
version = "v3.0.4"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gobuffalo/tags"
|
||||||
|
packages = [".","form","form/bootstrap"]
|
||||||
|
revision = "6755de03970f68812cfb0cb1162a66e60bcc1106"
|
||||||
|
version = "v1.4.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gorilla/context"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "1ea25387ff6f684839d82767c1733ff4d4d15d0a"
|
||||||
|
version = "v1.1"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/gorilla/mux"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "7f08801859139f86dfafd1c296e2cba9a80d292e"
|
||||||
|
version = "v1.6.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/jmoiron/sqlx"
|
||||||
|
packages = [".","reflectx"]
|
||||||
|
revision = "3379e5993990b1f927fc8db926485e6f6becf2d2"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/joho/godotenv"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "a79fa1e548e2c689c241d10173efd51e5d689d5b"
|
||||||
|
version = "v1.2.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/lib/pq"
|
||||||
|
packages = [".","oid"]
|
||||||
|
revision = "b609790bd85edf8e9ab7e0f8912750a786177bcf"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/markbates/going"
|
||||||
|
packages = ["defaults","randx","wait"]
|
||||||
|
revision = "0576708c56cea02331f864fe6e157ac7841923e4"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/markbates/inflect"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "b32533d044574b17faf5615eefb6c912e2099bd4"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/markbates/pop"
|
||||||
|
packages = [".","columns","fizz","fizz/translators"]
|
||||||
|
revision = "f74995fdffa4ed212d13f3ebe280a58393f14fb5"
|
||||||
|
version = "v3.40.1"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/markbates/validate"
|
||||||
|
packages = [".","validators"]
|
||||||
|
revision = "cd8cc34c703420d6b084fbbfd5085e8e71c5b830"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/mattn/anko"
|
||||||
|
packages = ["ast","builtins","builtins/encoding/json","builtins/errors","builtins/flag","builtins/fmt","builtins/github.com/daviddengcn/go-colortext","builtins/io","builtins/io/ioutil","builtins/math","builtins/math/big","builtins/math/rand","builtins/net","builtins/net/http","builtins/net/url","builtins/os","builtins/os/exec","builtins/os/signal","builtins/path","builtins/path/filepath","builtins/regexp","builtins/runtime","builtins/sort","builtins/strings","builtins/time","parser","vm"]
|
||||||
|
revision = "2835104a087c32ce3d02bccd870e70e982b17583"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/mattn/go-colorable"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072"
|
||||||
|
version = "v0.0.9"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/mattn/go-isatty"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
|
||||||
|
version = "v0.0.3"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/mattn/go-sqlite3"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "5160b48509cf5c877bc22c11c373f8c7738cdb38"
|
||||||
|
version = "v1.3.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/microcosm-cc/bluemonday"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "68fecaef60268522d2ac3f0123cec9d3bcab7b6e"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/mitchellh/go-homedir"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "b8bc1bf767474819792c23f32d8286a45736f1c6"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/pkg/errors"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
||||||
|
version = "v0.8.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/pmezard/go-difflib"
|
||||||
|
packages = ["difflib"]
|
||||||
|
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
|
||||||
|
version = "v1.0.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/russross/blackfriday"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "6d1ef893fcb01b4f50cb6e57ed7df3e2e627b6b2"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/satori/go.uuid"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "879c5887cd475cd7864858769793b2ceb0d44feb"
|
||||||
|
version = "v1.1.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/serenize/snaker"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "c7a77c38c398a5468cac9579c3b2b1de22fb4da6"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/sergi/go-diff"
|
||||||
|
packages = ["diffmatchpatch"]
|
||||||
|
revision = "2fc9cd33b5f86077aa3e0f442fa0476a9fa9a1dc"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/github_flavored_markdown"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "8071c74461cb0a1a6e8a677e868cbb79138510c9"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/go"
|
||||||
|
packages = ["parserutil","printerutil","reflectfind","reflectsource"]
|
||||||
|
revision = "c661e953e604ba4a84a3c4e458462a481bd6ce72"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/go-goon"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "37c2f522c041b74919a9e5e3a6c5c47eb34730a5"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/graphql"
|
||||||
|
packages = ["ident"]
|
||||||
|
revision = "cf6db17b893acfad0ca1929ba6be45bf854790ed"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/highlight_diff"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "09bb4053de1b1d872a9f25dc21378fa71dca4e4e"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/highlight_go"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "78fb10f4a5f89e812a5e26ab723b954a51226086"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/octiconssvg"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "8c9861b86a08c72d14e0285d0dc313bb6df52295"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/shurcooL/sanitized_anchor_name"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "86672fcb3f950f35f2e675df2240550f2a50762f"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/sourcegraph/annotate"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "f4cad6c6324d3f584e1743d8b3e0e017a5f3a636"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/sourcegraph/syntaxhighlight"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "bd320f5d308e1a3c4314c678d8227a0d72574ae7"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/stretchr/testify"
|
||||||
|
packages = ["assert","require"]
|
||||||
|
revision = "69483b4bd14f5845b5a1e55bca19e954e827f1d0"
|
||||||
|
version = "v1.1.4"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "golang.org/x/net"
|
||||||
|
packages = ["context","html","html/atom"]
|
||||||
|
revision = "a337091b0525af65de94df2eb7e98bd9962dcbe2"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "golang.org/x/sync"
|
||||||
|
packages = ["errgroup"]
|
||||||
|
revision = "fd80eb99c8f653c847d294a001bdf2a3a6f768f5"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "golang.org/x/sys"
|
||||||
|
packages = ["unix"]
|
||||||
|
revision = "1e2299c37cc91a509f1b12369872d27be0ce98a6"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "v2"
|
||||||
|
name = "gopkg.in/yaml.v2"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "eb3733d160e74a9c7e442f435eb3bea458e1d19f"
|
||||||
|
|
||||||
|
[solve-meta]
|
||||||
|
analyzer-name = "dep"
|
||||||
|
analyzer-version = 1
|
||||||
|
inputs-digest = "7fe7043406866580df73f74659708b2fdf217782ba07d20308ad056e03b93600"
|
||||||
|
solver-name = "gps-cdcl"
|
||||||
|
solver-version = 1
|
||||||
38
Gopkg.toml
Normal file
38
Gopkg.toml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
# Gopkg.toml example
|
||||||
|
#
|
||||||
|
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||||
|
# for detailed Gopkg.toml documentation.
|
||||||
|
#
|
||||||
|
# required = ["github.com/user/thing/cmd/thing"]
|
||||||
|
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||||
|
#
|
||||||
|
# [[constraint]]
|
||||||
|
# name = "github.com/user/project"
|
||||||
|
# version = "1.0.0"
|
||||||
|
#
|
||||||
|
# [[constraint]]
|
||||||
|
# name = "github.com/user/project2"
|
||||||
|
# branch = "dev"
|
||||||
|
# source = "github.com/myfork/project2"
|
||||||
|
#
|
||||||
|
# [[override]]
|
||||||
|
# name = "github.com/x/y"
|
||||||
|
# version = "2.4.0"
|
||||||
|
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
name = "github.com/gobuffalo/buffalo"
|
||||||
|
version = "0.10.1"
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
name = "github.com/gorilla/context"
|
||||||
|
version = "1.1.0"
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
name = "github.com/gorilla/mux"
|
||||||
|
version = "1.6.0"
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
name = "github.com/stretchr/testify"
|
||||||
|
version = "1.1.4"
|
||||||
@@ -3,10 +3,16 @@ package tuu
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"github.com/gobuffalo/buffalo/render"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Context interface {
|
type Context interface {
|
||||||
context.Context
|
context.Context
|
||||||
Response() http.ResponseWriter
|
Response() http.ResponseWriter
|
||||||
Request() *http.Request
|
Request() *http.Request
|
||||||
|
Params() url.Values
|
||||||
|
Param(key string) string
|
||||||
|
Set(key string, value interface{})
|
||||||
|
Render(status int, rr render.Renderer) error
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"github.com/gobuffalo/plush"
|
|
||||||
|
|
||||||
"github.com/gobuffalo/buffalo/render"
|
"github.com/gobuffalo/buffalo/render"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -70,7 +68,7 @@ func (d *DefaultContext) Value(key interface{}) interface{} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *DefaultContext) Render(status int, rr render.Renderer) error {
|
func (d *DefaultContext) Render(status int, rr render.Renderer) error {
|
||||||
p := plush.NewContext()
|
//p := plush.NewContext()
|
||||||
|
|
||||||
/*if rr != nil {
|
/*if rr != nil {
|
||||||
data := d.data
|
data := d.data
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ func NewRouter() *DefaultRouter {
|
|||||||
|
|
||||||
type DefaultRouter struct {
|
type DefaultRouter struct {
|
||||||
Routes []*Route
|
Routes []*Route
|
||||||
|
StaticRoutes []*StaticRoute
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *DefaultRouter) GET(path string, h Handler) {
|
func (r *DefaultRouter) GET(path string, h Handler) {
|
||||||
@@ -18,10 +19,21 @@ func (r *DefaultRouter) POST(path string, h Handler) {
|
|||||||
r.addRoute(http.MethodPost, path, h)
|
r.addRoute(http.MethodPost, path, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *DefaultRouter) Static(path string, root http.FileSystem) {
|
||||||
|
r.StaticRoutes = append(r.StaticRoutes, &StaticRoute{
|
||||||
|
Path: path,
|
||||||
|
Handler: http.StripPrefix(path, http.FileServer(root)),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (r *DefaultRouter) GetRoutes() []*Route {
|
func (r *DefaultRouter) GetRoutes() []*Route {
|
||||||
return r.Routes
|
return r.Routes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *DefaultRouter) GetStaticRoutes() []*StaticRoute {
|
||||||
|
return r.StaticRoutes
|
||||||
|
}
|
||||||
|
|
||||||
func (r *DefaultRouter) addRoute(m, p string, h Handler) {
|
func (r *DefaultRouter) addRoute(m, p string, h Handler) {
|
||||||
r.Routes = append(r.Routes, &Route{
|
r.Routes = append(r.Routes, &Route{
|
||||||
Method: m,
|
Method: m,
|
||||||
|
|||||||
22
default_router_test.go
Normal file
22
default_router_test.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package tuu_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"gitlab.com/lrodham/tuu"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_Route_Creation(t *testing.T) {
|
||||||
|
r := require.New(t)
|
||||||
|
|
||||||
|
router := tuu.NewRouter()
|
||||||
|
router.GET("/testing", func(ctx tuu.Context) error { return nil })
|
||||||
|
|
||||||
|
|
||||||
|
routes := router.GetRoutes()
|
||||||
|
r.Len(routes, 1)
|
||||||
|
route := routes[0]
|
||||||
|
r.Equal("GET", route.Method)
|
||||||
|
r.Equal("/testing", route.Path)
|
||||||
|
}
|
||||||
30
examples/default_router.go
Normal file
30
examples/default_router.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package examples
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"gitlab.com/lrodham/tuu"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
router := tuu.NewRouter()
|
||||||
|
|
||||||
|
router.GET("/home", func(ctx tuu.Context) error {
|
||||||
|
ctx.Set("template_data", "some value")
|
||||||
|
|
||||||
|
return ctx.Render(200, render.HTML("template_name.html"))
|
||||||
|
})
|
||||||
|
|
||||||
|
router.POST("/login", func(ctx tuu.Context) error {
|
||||||
|
username := ctx.Param("username")
|
||||||
|
password := ctx.Param("password")
|
||||||
|
|
||||||
|
log.Println(username, password)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
app := tuu.New(router)
|
||||||
|
if err := app.Serve(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
6
readme.md
Normal file
6
readme.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Tuu
|
||||||
|
A minimal framework for rapid web development in golang.
|
||||||
|
|
||||||
|
### Things to do before alpha
|
||||||
|
- [ ] Write some tests
|
||||||
|
- [ ] Create an example
|
||||||
5
route.go
5
route.go
@@ -22,3 +22,8 @@ func (r *Route) ServeHTTP(res http.ResponseWriter, req *http.Request) {
|
|||||||
c.Response().Write([]byte(err.Error()))
|
c.Response().Write([]byte(err.Error()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type StaticRoute struct {
|
||||||
|
Path string
|
||||||
|
Handler http.Handler
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
package tuu
|
package tuu
|
||||||
|
|
||||||
|
import "net/http"
|
||||||
|
|
||||||
type Handler func(Context) error
|
type Handler func(Context) error
|
||||||
|
|
||||||
type Router interface {
|
type Router interface {
|
||||||
GET(path string, ctx Context)
|
GET(path string, h Handler)
|
||||||
POST(path string, ctx Context)
|
POST(path string, h Handler)
|
||||||
|
Static(path string, root http.FileSystem)
|
||||||
|
|
||||||
GetRoutes() []*Route
|
GetRoutes() []*Route
|
||||||
|
GetStaticRoutes() []*StaticRoute
|
||||||
}
|
}
|
||||||
|
|||||||
36
tuu.go
36
tuu.go
@@ -1,6 +1,9 @@
|
|||||||
package tuu
|
package tuu
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -12,11 +15,42 @@ type App struct {
|
|||||||
router Router
|
router Router
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) Serve() {
|
func (a *App) Serve() error {
|
||||||
r := mux.NewRouter()
|
r := mux.NewRouter()
|
||||||
|
|
||||||
for _, route := range a.router.GetRoutes() {
|
for _, route := range a.router.GetRoutes() {
|
||||||
r.Handle(route.Path, route).Methods(route.Method)
|
r.Handle(route.Path, route).Methods(route.Method)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, route := range a.router.GetStaticRoutes() {
|
||||||
|
r.PathPrefix(route.Path).Handler(route.Handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
server := http.Server{
|
||||||
|
Addr: "",
|
||||||
|
Handler: r,
|
||||||
|
}
|
||||||
|
|
||||||
|
/*ctx, cancel := sigtx.WithCancel(a.Context, syscall.SIGTERM, os.Interrupt)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
// gracefully shut down the application when the context is cancelled
|
||||||
|
<-ctx.Done()
|
||||||
|
fmt.Println("Shutting down application")
|
||||||
|
|
||||||
|
err := a.Stop(ctx.Err())
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = server.Shutdown(ctx)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}()*/
|
||||||
|
|
||||||
|
// start the web server
|
||||||
|
return server.ListenAndServe()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user