@@ -224,7 +224,7 @@ func requestPayload(r *http.Request) ([]byte, error) {
|
||||
case strings.Contains(ct, "application/json-rpc"):
|
||||
msg := codec.Message{
|
||||
Type: codec.Request,
|
||||
Header: make(map[string]string),
|
||||
Header: metadata.New(0),
|
||||
}
|
||||
c := jsonrpc.NewCodec(&buffer{r.Body})
|
||||
if err = c.ReadHeader(&msg, codec.Request); err != nil {
|
||||
@@ -238,7 +238,7 @@ func requestPayload(r *http.Request) ([]byte, error) {
|
||||
case strings.Contains(ct, "application/proto-rpc"), strings.Contains(ct, "application/octet-stream"):
|
||||
msg := codec.Message{
|
||||
Type: codec.Request,
|
||||
Header: make(map[string]string),
|
||||
Header: metadata.New(0),
|
||||
}
|
||||
c := protorpc.NewCodec(&buffer{r.Body})
|
||||
if err = c.ReadHeader(&msg, codec.Request); err != nil {
|
||||
@@ -253,7 +253,7 @@ func requestPayload(r *http.Request) ([]byte, error) {
|
||||
r.ParseForm()
|
||||
|
||||
// generate a new set of values from the form
|
||||
vals := make(map[string]string)
|
||||
vals := make(map[string]string, len(r.Form))
|
||||
for k, v := range r.Form {
|
||||
vals[k] = strings.Join(v, ",")
|
||||
}
|
||||
@@ -268,7 +268,7 @@ func requestPayload(r *http.Request) ([]byte, error) {
|
||||
// dont user metadata.FromContext as it mangles names
|
||||
md, ok := metadata.FromContext(ctx)
|
||||
if !ok {
|
||||
md = make(map[string]string)
|
||||
md = metadata.New(0)
|
||||
}
|
||||
|
||||
// allocate maximum
|
||||
@@ -445,7 +445,7 @@ func writeError(w http.ResponseWriter, r *http.Request, err error) {
|
||||
_, werr := w.Write([]byte(ce.Error()))
|
||||
if werr != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(werr)
|
||||
logger.Error(werr.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -471,7 +471,7 @@ func writeResponse(w http.ResponseWriter, r *http.Request, rsp []byte) {
|
||||
_, err := w.Write(rsp)
|
||||
if err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -50,7 +50,7 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
payload, err := requestPayload(r)
|
||||
if err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -73,7 +73,7 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
conn, rw, _, err := upgrader.Upgrade(r, w)
|
||||
if err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -81,7 +81,7 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
defer func() {
|
||||
if err := conn.Close(); err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -117,7 +117,7 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
stream, err := c.Stream(ctx, req, callOpt)
|
||||
if err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -125,7 +125,7 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
if request != nil {
|
||||
if err = stream.Send(request); err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -151,7 +151,7 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
return
|
||||
}
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -159,13 +159,13 @@ func serveWebsocket(ctx context.Context, w http.ResponseWriter, r *http.Request,
|
||||
// write the response
|
||||
if err := wsutil.WriteServerMessage(rw, op, buf); err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
if err = rw.Flush(); err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -196,7 +196,7 @@ func writeLoop(rw io.ReadWriter, stream client.Stream) {
|
||||
}
|
||||
}
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -213,7 +213,7 @@ func writeLoop(rw io.ReadWriter, stream client.Stream) {
|
||||
request := &raw.Frame{Data: buf}
|
||||
if err := stream.Send(request); err != nil {
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Error(err)
|
||||
logger.Error(err.Error())
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@@ -55,7 +55,7 @@ func (r *Resolver) Domain(req *http.Request) string {
|
||||
domain, err := publicsuffix.EffectiveTLDPlusOne(host)
|
||||
if err != nil {
|
||||
if logger.V(logger.DebugLevel) {
|
||||
logger.Debugf("Unable to extract domain from %v", host)
|
||||
logger.Debug("Unable to extract domain from %v", host)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ func (a *autocertProvider) TLSConfig(hosts ...string) (*tls.Config, error) {
|
||||
dir := cacheDir()
|
||||
if err := os.MkdirAll(dir, 0700); err != nil {
|
||||
if logger.V(logger.InfoLevel) {
|
||||
logger.Infof("warning: autocert not using a cache: %v", err)
|
||||
logger.Info("warning: autocert not using a cache: %v", err)
|
||||
}
|
||||
} else {
|
||||
m.Cache = autocert.DirCache(dir)
|
||||
|
@@ -15,7 +15,7 @@ type httpServer struct {
|
||||
mux *http.ServeMux
|
||||
opts server.Options
|
||||
|
||||
mtx sync.RWMutex
|
||||
sync.RWMutex
|
||||
address string
|
||||
exit chan chan error
|
||||
}
|
||||
@@ -30,8 +30,8 @@ func NewServer(address string, opts ...server.Option) server.Server {
|
||||
}
|
||||
|
||||
func (s *httpServer) Address() string {
|
||||
s.mtx.RLock()
|
||||
defer s.mtx.RUnlock()
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
return s.address
|
||||
}
|
||||
|
||||
@@ -57,6 +57,9 @@ func (s *httpServer) Start() error {
|
||||
var l net.Listener
|
||||
var err error
|
||||
|
||||
s.RLock()
|
||||
config := s.opts
|
||||
s.RUnlock()
|
||||
if s.opts.EnableACME && s.opts.ACMEProvider != nil {
|
||||
// should we check the address to make sure its using :443?
|
||||
l, err = s.opts.ACMEProvider.Listen(s.opts.ACMEHosts...)
|
||||
@@ -70,19 +73,19 @@ func (s *httpServer) Start() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if logger.V(logger.InfoLevel) {
|
||||
logger.Infof("HTTP API Listening on %s", l.Addr().String())
|
||||
if config.Logger.V(logger.InfoLevel) {
|
||||
config.Logger.Info("HTTP API Listening on %s", l.Addr().String())
|
||||
}
|
||||
|
||||
s.mtx.Lock()
|
||||
s.Lock()
|
||||
s.address = l.Addr().String()
|
||||
s.mtx.Unlock()
|
||||
s.Unlock()
|
||||
|
||||
go func() {
|
||||
if err := http.Serve(l, s.mux); err != nil {
|
||||
// temporary fix
|
||||
if logger.V(logger.ErrorLevel) {
|
||||
logger.Errorf("serve err: %v", err)
|
||||
if config.Logger.V(logger.ErrorLevel) {
|
||||
config.Logger.Error("serve err: %v", err)
|
||||
}
|
||||
s.Stop()
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/unistack-org/micro/v3/api/resolver"
|
||||
"github.com/unistack-org/micro/v3/api/server/acme"
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
)
|
||||
|
||||
// Option func
|
||||
@@ -21,11 +22,14 @@ type Options struct {
|
||||
TLSConfig *tls.Config
|
||||
Resolver resolver.Resolver
|
||||
Wrappers []Wrapper
|
||||
Logger logger.Logger
|
||||
}
|
||||
|
||||
// NewOptions returns new Options
|
||||
func NewOptions(opts ...Option) Options {
|
||||
options := Options{}
|
||||
options := Options{
|
||||
Logger: logger.DefaultLogger,
|
||||
}
|
||||
for _, o := range opts {
|
||||
o(&options)
|
||||
}
|
||||
@@ -81,3 +85,9 @@ func Resolver(r resolver.Resolver) Option {
|
||||
o.Resolver = r
|
||||
}
|
||||
}
|
||||
|
||||
func Logger(l logger.Logger) Option {
|
||||
return func(o *Options) {
|
||||
o.Logger = l
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user