51 lines
950 B
Markdown
51 lines
950 B
Markdown
# snap
|
|
|
|
Typical layout for snap servers
|
|
|
|
```
|
|
web/
|
|
templates/
|
|
static/
|
|
app/
|
|
js/...
|
|
skin1/...
|
|
skin2/...
|
|
favicon.ico
|
|
```
|
|
|
|
# Example:
|
|
```golang
|
|
package main
|
|
|
|
import (
|
|
"git.thirdmartini.com/pub/snap"
|
|
"git.thirdmartini.com/pub/snap/auth"
|
|
)
|
|
|
|
func handler(c *snap.Context) {
|
|
c.Reply("snap/example/simple 1.0")
|
|
}
|
|
|
|
func handlerAuthenticated(c *snap.Context) {
|
|
c.Reply("snap/example/simple 1.0 (authenticated)")
|
|
}
|
|
|
|
func mustRunServer(auth auth.Authenticator) {
|
|
s := snap.New("localhost:9000", "web", auth)
|
|
s.SetDebug(true)
|
|
s.SetTemplatePath("web/templates")
|
|
s.WithStaticFiles("/static", "web/static" )
|
|
s.WithTheme("skin1")
|
|
|
|
s.HandleFunc("/", handler)
|
|
s.HandleFuncAuthenticated("/auth", "", handlerAuthenticated)
|
|
|
|
s.Serve()
|
|
}
|
|
|
|
func main() {
|
|
auth := auth.NewAuth("basic")
|
|
auth.AddUser("admin", "admin", "password")
|
|
mustRunServer(auth)
|
|
}
|
|
``` |