minor content-type fixes
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		
							
								
								
									
										13
									
								
								handler.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								handler.go
									
									
									
									
									
								
							| @@ -7,6 +7,7 @@ import ( | |||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"reflect" | 	"reflect" | ||||||
| 	"strings" | 	"strings" | ||||||
|  | 	"sync" | ||||||
|  |  | ||||||
| 	"github.com/unistack-org/micro/v3/codec" | 	"github.com/unistack-org/micro/v3/codec" | ||||||
| 	"github.com/unistack-org/micro/v3/errors" | 	"github.com/unistack-org/micro/v3/errors" | ||||||
| @@ -40,9 +41,17 @@ type httpHandler struct { | |||||||
| 	eps      []*register.Endpoint | 	eps      []*register.Endpoint | ||||||
| 	hd       interface{} | 	hd       interface{} | ||||||
| 	handlers map[string][]patHandler | 	handlers map[string][]patHandler | ||||||
|  | 	sync.RWMutex | ||||||
| } | } | ||||||
|  |  | ||||||
| func (h *httpHandler) newCodec(ct string) (codec.Codec, error) { | func (h *httpHandler) newCodec(ct string) (codec.Codec, error) { | ||||||
|  | 	h.RLock() | ||||||
|  | 	defer h.RUnlock() | ||||||
|  |  | ||||||
|  | 	if idx := strings.IndexRune(ct, ';'); idx >= 0 { | ||||||
|  | 		ct = ct[:idx] | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	if cf, ok := h.sopts.Codecs[ct]; ok { | 	if cf, ok := h.sopts.Codecs[ct]; ok { | ||||||
| 		return cf, nil | 		return cf, nil | ||||||
| 	} | 	} | ||||||
| @@ -98,9 +107,9 @@ func (h *httpServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 	var err error | 	var err error | ||||||
| 	switch ct { | 	switch ct { | ||||||
| 	case "application/x-www-form-urlencoded": | 	case "application/x-www-form-urlencoded": | ||||||
| 		cf, err = h.newCodec(strings.Split(DefaultContentType, ";")[0]) | 		cf, err = h.newCodec(DefaultContentType) | ||||||
| 	default: | 	default: | ||||||
| 		cf, err = h.newCodec(strings.Split(ct, ";")[0]) | 		cf, err = h.newCodec(ct) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								http.go
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								http.go
									
									
									
									
									
								
							| @@ -41,6 +41,13 @@ type httpServer struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (h *httpServer) newCodec(ct string) (codec.Codec, error) { | func (h *httpServer) newCodec(ct string) (codec.Codec, error) { | ||||||
|  | 	h.RLock() | ||||||
|  | 	defer h.RUnlock() | ||||||
|  |  | ||||||
|  | 	if idx := strings.IndexRune(ct, ';'); idx >= 0 { | ||||||
|  | 		ct = ct[:idx] | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	if cf, ok := h.opts.Codecs[ct]; ok { | 	if cf, ok := h.opts.Codecs[ct]; ok { | ||||||
| 		return cf, nil | 		return cf, nil | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user