diff --git a/drpc.go b/drpc.go index fff63f4..32c02d4 100644 --- a/drpc.go +++ b/drpc.go @@ -30,6 +30,9 @@ type drpcClient struct { func (d *drpcClient) call(ctx context.Context, addr string, req client.Request, rsp interface{}, opts client.CallOptions) error { var header map[string]string + if strings.HasPrefix(addr, "http") { + addr = addr[strings.Index(addr, ":")+3:] + } if md, ok := metadata.FromOutgoingContext(ctx); ok { header = make(map[string]string, len(md)) @@ -90,6 +93,7 @@ func (d *drpcClient) call(ctx context.Context, addr string, req client.Request, */ ch := make(chan error, 1) _ = dialCtx + // rc, err := net.DialContext(ctx, "tcp", addr) rc, err := net.Dial("tcp", addr) if err != nil { diff --git a/request.go b/request.go index fcb814b..dd60630 100644 --- a/request.go +++ b/request.go @@ -18,24 +18,16 @@ type drpcRequest struct { } // service Struct.Method /service.Struct/Method -func methodToDRPC(service, method string) string { - // no method or already grpc method +func methodToDRPC(_ string, method string) string { + // no method or already drpc method if len(method) == 0 || method[0] == '/' { return method } - // assume method is Foo.Bar - mParts := strings.Split(method, ".") - if len(mParts) != 2 { - return method - } - - if len(service) == 0 { - return fmt.Sprintf("/%s/%s", mParts[0], mParts[1]) - } - - // return /pkg.Foo/Bar - return fmt.Sprintf("/%s.%s/%s", strings.Title(service), mParts[0], mParts[1]) + idx := strings.LastIndex(method, ".") + drpcService := method[:idx] + drpcMethod := method[idx+1:] + return fmt.Sprintf("/%s/%s", drpcService, drpcMethod) } func newDRPCRequest(service, method string, request interface{}, contentType string, reqOpts ...client.RequestOption) client.Request {