ing
This commit is contained in:
		
							parent
							
								
									8915cba78b
								
							
						
					
					
						commit
						153a9768db
					
				
							
								
								
									
										22
									
								
								web/error.go
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								web/error.go
									
									
									
									
									
								
							@ -1,17 +1,25 @@
 | 
				
			|||||||
package web
 | 
					package web
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewWebError(code int, message string) *WebError {
 | 
					import (
 | 
				
			||||||
	return &WebError{
 | 
						cuc "git.loafle.net/commons/util-go/context"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						ErrorKey = cuc.ContextKey("ErrorKey")
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewError(code int, cause error) *Error {
 | 
				
			||||||
 | 
						return &Error{
 | 
				
			||||||
		Code:  code,
 | 
							Code:  code,
 | 
				
			||||||
		Message: message,
 | 
							Cause: cause,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type WebError struct {
 | 
					type Error struct {
 | 
				
			||||||
	Code  int
 | 
						Code  int
 | 
				
			||||||
	Message string
 | 
						Cause error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (e *WebError) Error() string {
 | 
					func (e *Error) Error() string {
 | 
				
			||||||
	return e.Message
 | 
						return e.Cause.Error()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ import (
 | 
				
			|||||||
type ServerHandler interface {
 | 
					type ServerHandler interface {
 | 
				
			||||||
	web.ServerHandler
 | 
						web.ServerHandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	OnError(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx, err *web.WebError)
 | 
						OnError(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx, err *web.Error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	RegisterServlet(path string, servlet Servlet)
 | 
						RegisterServlet(path string, servlet Servlet)
 | 
				
			||||||
	Servlet(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx) Servlet
 | 
						Servlet(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx) Servlet
 | 
				
			||||||
@ -25,7 +25,7 @@ type ServerHandler interface {
 | 
				
			|||||||
type ServerHandlers struct {
 | 
					type ServerHandlers struct {
 | 
				
			||||||
	web.ServerHandlers
 | 
						web.ServerHandlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NotFoundServelt Servlet
 | 
						ErrorServelt Servlet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// path = context only.
 | 
						// path = context only.
 | 
				
			||||||
	// ex) /auth => /auth, /auth/member => /auth
 | 
						// ex) /auth => /auth, /auth/member => /auth
 | 
				
			||||||
@ -58,8 +58,15 @@ func (sh *ServerHandlers) Destroy(serverCtx server.ServerCtx) {
 | 
				
			|||||||
	sh.ServerHandlers.Destroy(serverCtx)
 | 
						sh.ServerHandlers.Destroy(serverCtx)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (sh *ServerHandlers) OnError(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx, err *web.WebError) {
 | 
					func (sh *ServerHandlers) OnError(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx, err *web.Error) {
 | 
				
			||||||
	ctx.Error(err.Message, err.Code)
 | 
						if nil != sh.ErrorServelt {
 | 
				
			||||||
 | 
							servletCtx := sh.ErrorServelt.ServletCtx(serverCtx)
 | 
				
			||||||
 | 
							servletCtx.SetAttribute(web.ErrorKey, err)
 | 
				
			||||||
 | 
							sh.ErrorServelt.Handle(servletCtx, ctx)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx.Error(err.Cause.Error(), err.Code)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (sh *ServerHandlers) RegisterServlet(contextPath string, servlet Servlet) {
 | 
					func (sh *ServerHandlers) RegisterServlet(contextPath string, servlet Servlet) {
 | 
				
			||||||
@ -70,15 +77,17 @@ func (sh *ServerHandlers) RegisterServlet(contextPath string, servlet Servlet) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (sh *ServerHandlers) Servlet(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx) Servlet {
 | 
					func (sh *ServerHandlers) Servlet(serverCtx server.ServerCtx, ctx *fasthttp.RequestCtx) Servlet {
 | 
				
			||||||
	contextPath, err := getContextPath(string(ctx.Path()))
 | 
						path := string(ctx.Path())
 | 
				
			||||||
 | 
						contextPath, err := getContextPath(path)
 | 
				
			||||||
	if nil != err {
 | 
						if nil != err {
 | 
				
			||||||
		logging.Logger().Warnf("%v", err)
 | 
							logging.Logger().Warnf("Bad Request %v", err)
 | 
				
			||||||
		return sh.NotFoundServelt
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var servlet Servlet
 | 
						var servlet Servlet
 | 
				
			||||||
	if servlet = sh.servlets[contextPath]; nil == servlet {
 | 
						if servlet = sh.servlets[contextPath]; nil == servlet {
 | 
				
			||||||
		return sh.NotFoundServelt
 | 
							logging.Logger().Warnf("Servlet is not exist for url[%s]", path)
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return servlet
 | 
						return servlet
 | 
				
			||||||
 | 
				
			|||||||
@ -139,7 +139,7 @@ func (s *Server) httpHandler(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if servlet = s.ServerHandler.Servlet(s.ctx, ctx); nil == servlet {
 | 
						if servlet = s.ServerHandler.Servlet(s.ctx, ctx); nil == servlet {
 | 
				
			||||||
		s.onError(ctx, web.NewWebError(fasthttp.StatusNotFound, "Not Found"))
 | 
							s.onError(ctx, web.NewError(fasthttp.StatusNotFound, fmt.Errorf("Not Found")))
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	servletCtx := servlet.ServletCtx(s.ctx)
 | 
						servletCtx := servlet.ServletCtx(s.ctx)
 | 
				
			||||||
@ -149,6 +149,6 @@ func (s *Server) httpHandler(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *Server) onError(ctx *fasthttp.RequestCtx, err *web.WebError) {
 | 
					func (s *Server) onError(ctx *fasthttp.RequestCtx, err *web.Error) {
 | 
				
			||||||
	s.ServerHandler.OnError(s.ctx, ctx, err)
 | 
						s.ServerHandler.OnError(s.ctx, ctx, err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@ import (
 | 
				
			|||||||
type Servlet interface {
 | 
					type Servlet interface {
 | 
				
			||||||
	web.Servlet
 | 
						web.Servlet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Handle(servletCtx server.ServletCtx, ctx *fasthttp.RequestCtx) *web.WebError
 | 
						Handle(servletCtx server.ServletCtx, ctx *fasthttp.RequestCtx) *web.Error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Servlets struct {
 | 
					type Servlets struct {
 | 
				
			||||||
@ -28,6 +28,6 @@ func (s *Servlets) Destroy(serverCtx server.ServerCtx) {
 | 
				
			|||||||
	//
 | 
						//
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *Servlets) Handle(servletCtx server.ServletCtx, ctx *fasthttp.RequestCtx) *web.WebError {
 | 
					func (s *Servlets) Handle(servletCtx server.ServletCtx, ctx *fasthttp.RequestCtx) *web.Error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user