fixup old rpc http server
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		
							
								
								
									
										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)
 | 
							h.errorHandler(ctx, nil, w, r, fmt.Errorf("path must starts with /"), http.StatusBadRequest)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	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)
 | 
				
			||||||
@@ -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 !match && h.hd != nil {
 | 
				
			||||||
		if hdlr, ok := h.hd.Handler().(http.Handler); ok {
 | 
							if hdlr, ok := h.hd.Handler().(http.Handler); ok {
 | 
				
			||||||
			hdlr.ServeHTTP(w, r)
 | 
								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 {
 | 
							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 {
 | 
								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