From 3d4ce91b4fa3d108947d5a46b9102bd788b25014 Mon Sep 17 00:00:00 2001
From: a <a@tuxpa.in>
Date: Tue, 1 Aug 2023 19:30:47 -0500
Subject: [PATCH] Add to dialer

---
 contrib/codecs/dialer.go       | 7 +++++++
 contrib/codecs/redis/client.go | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/contrib/codecs/dialer.go b/contrib/codecs/dialer.go
index 89cfc2d..4d89fe6 100644
--- a/contrib/codecs/dialer.go
+++ b/contrib/codecs/dialer.go
@@ -7,6 +7,7 @@ import (
 
 	"gfx.cafe/open/jrpc/contrib/codecs/http"
 	"gfx.cafe/open/jrpc/contrib/codecs/rdwr"
+	"gfx.cafe/open/jrpc/contrib/codecs/redis"
 	"gfx.cafe/open/jrpc/contrib/codecs/websocket"
 	"gfx.cafe/open/jrpc/pkg/codec"
 )
@@ -21,6 +22,12 @@ func DialContext(ctx context.Context, u string) (codec.Conn, error) {
 		return http.Dial(ctx, nil, u)
 	case "ws", "wss":
 		return websocket.DialWebsocket(ctx, u, "")
+	case "redis":
+		domain := pu.Query().Get("domain")
+		if domain == "" {
+			domain = "jrpc"
+		}
+		return redis.Dial(pu.Host, domain), nil
 	case "tcp":
 		tcpAddr, err := net.ResolveTCPAddr("tcp", u)
 		if err != nil {
diff --git a/contrib/codecs/redis/client.go b/contrib/codecs/redis/client.go
index c73ff35..af4b122 100644
--- a/contrib/codecs/redis/client.go
+++ b/contrib/codecs/redis/client.go
@@ -30,6 +30,12 @@ type Client struct {
 	handlerPeer codec.PeerInfo
 }
 
+func Dial(url string, domain string) *Client {
+	return NewClient(redis.NewUniversalClient(&redis.UniversalOptions{
+		Addrs: []string{url},
+	}), domain)
+}
+
 func NewClient(c redis.UniversalClient, domain string) *Client {
 	cl := &Client{
 		c: c,
-- 
GitLab