fixup old rpc http server #93
							
								
								
									
										22
									
								
								handler.go
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								handler.go
									
									
									
									
									
								
							@@ -97,7 +97,6 @@ func (h *httpServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
		h.errorHandler(ctx, nil, w, r, fmt.Errorf("path must starts with /"), http.StatusBadRequest)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cf, err := h.newCodec(ct)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		h.errorHandler(ctx, nil, w, r, err, http.StatusBadRequest)
 | 
			
		||||
@@ -124,6 +123,27 @@ func (h *httpServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !match && h.registerRPC {
 | 
			
		||||
		microMethod, mok := md.Get(metadata.HeaderEndpoint)
 | 
			
		||||
		if mok {
 | 
			
		||||
			serviceMethod := strings.Split(microMethod, ".")
 | 
			
		||||
			if len(serviceMethod) == 2 {
 | 
			
		||||
				if shdlr, ok := h.handlers[serviceMethod[0]]; ok {
 | 
			
		||||
					hdlr := shdlr.(*httpHandler)
 | 
			
		||||
					fh, mp, ok := hdlr.handlers.Search(http.MethodPost, "/"+microMethod)
 | 
			
		||||
					if ok {
 | 
			
		||||
						match = true
 | 
			
		||||
						for k, v := range mp {
 | 
			
		||||
							matches[k] = v
 | 
			
		||||
						}
 | 
			
		||||
						hldr = fh.(*patHandler)
 | 
			
		||||
						handler = hdlr
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !match && h.hd != nil {
 | 
			
		||||
		if hdlr, ok := h.hd.Handler().(http.Handler); ok {
 | 
			
		||||
			hdlr.ServeHTTP(w, r)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								http.go
									
									
									
									
									
								
							@@ -221,8 +221,9 @@ func (h *httpServer) NewHandler(handler interface{}, opts ...server.HandlerOptio
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if h.registerRPC {
 | 
			
		||||
			h.opts.Logger.Infof(h.opts.Context, "register rpc handler for http.MethodPost %s /%s", hn, hn)
 | 
			
		||||
			if err := hdlr.handlers.Insert([]string{http.MethodPost}, "/"+hn, pth); err != nil {
 | 
			
		||||
				h.opts.Logger.Errorf(h.opts.Context, "cant add handler for %s %s", md["Method"], md["Path"])
 | 
			
		||||
				h.opts.Logger.Errorf(h.opts.Context, "cant add rpc handler for http.MethodPost %s /%s", hn, hn)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user