move down path handler after specific handler #164
							
								
								
									
										19
									
								
								handler.go
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								handler.go
									
									
									
									
									
								
							@@ -334,12 +334,6 @@ func (h *Server) HTTPHandlerFunc(handler interface{}) (http.HandlerFunc, error)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
					func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	// check for http.HandlerFunc handlers
 | 
					 | 
				
			||||||
	if ph, _, err := h.pathHandlers.Search(r.Method, r.URL.Path); err == nil {
 | 
					 | 
				
			||||||
		ph.(http.HandlerFunc)(w, r)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ct := DefaultContentType
 | 
						ct := DefaultContentType
 | 
				
			||||||
	if htype := r.Header.Get(metadata.HeaderContentType); htype != "" {
 | 
						if htype := r.Header.Get(metadata.HeaderContentType); htype != "" {
 | 
				
			||||||
		ct = htype
 | 
							ct = htype
 | 
				
			||||||
@@ -364,10 +358,6 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	md["RequestURI"] = r.RequestURI
 | 
						md["RequestURI"] = r.RequestURI
 | 
				
			||||||
	ctx = metadata.NewIncomingContext(ctx, md)
 | 
						ctx = metadata.NewIncomingContext(ctx, md)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if r.Body != nil {
 | 
					 | 
				
			||||||
		defer r.Body.Close()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	path := r.URL.Path
 | 
						path := r.URL.Path
 | 
				
			||||||
	if !strings.HasPrefix(path, "/") {
 | 
						if !strings.HasPrefix(path, "/") {
 | 
				
			||||||
		h.errorHandler(ctx, nil, w, r, fmt.Errorf("path must starts with /"), http.StatusBadRequest)
 | 
							h.errorHandler(ctx, nil, w, r, fmt.Errorf("path must starts with /"), http.StatusBadRequest)
 | 
				
			||||||
@@ -424,6 +414,11 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else if !match {
 | 
						} else if !match {
 | 
				
			||||||
 | 
							// check for http.HandlerFunc handlers
 | 
				
			||||||
 | 
							if ph, _, err := h.pathHandlers.Search(r.Method, r.URL.Path); err == nil {
 | 
				
			||||||
 | 
								ph.(http.HandlerFunc)(w, r)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		h.errorHandler(ctx, nil, w, r, fmt.Errorf("not matching route found"), http.StatusNotFound)
 | 
							h.errorHandler(ctx, nil, w, r, fmt.Errorf("not matching route found"), http.StatusNotFound)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -440,6 +435,10 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if r.Body != nil {
 | 
				
			||||||
 | 
							defer r.Body.Close()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cf, err := h.newCodec(ct)
 | 
						cf, err := h.newCodec(ct)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		h.errorHandler(ctx, nil, w, r, err, http.StatusBadRequest)
 | 
							h.errorHandler(ctx, nil, w, r, err, http.StatusBadRequest)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user