39 lines
737 B
Go
39 lines
737 B
Go
package gee
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
type HandlerFunc func(*Context)
|
|
|
|
type Engine struct {
|
|
router *router
|
|
}
|
|
|
|
func New() *Engine {
|
|
return &Engine{
|
|
router: newRouter(),
|
|
}
|
|
}
|
|
|
|
func (e *Engine) addRoute(method string, pattern string, handler HandlerFunc) {
|
|
e.router.addRoute(method, pattern, handler)
|
|
}
|
|
|
|
func (e *Engine) GET(pattern string, handler HandlerFunc) {
|
|
e.addRoute("GET", pattern, handler)
|
|
}
|
|
|
|
func (e *Engine) POST(pattern string, handler HandlerFunc) {
|
|
e.addRoute("POST", pattern, handler)
|
|
}
|
|
|
|
func (e *Engine) Run(addr string) error {
|
|
return http.ListenAndServe(addr, e)
|
|
}
|
|
|
|
func (e *Engine) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
|
|
context := newContext(writer, request)
|
|
e.router.handle(context)
|
|
}
|