Merge pull request #93 from unistack-org/oldrpc
fixup old rpc http server
This commit was merged in pull request #93.
	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) | ||||
| 		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