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) | 		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