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) }