]> Sergey Matveev's repositories - mmc.git/blobdiff - cmd/mmc/main.go
Ability to connect to http:// entrypoints
[mmc.git] / cmd / mmc / main.go
index 9bf3fb25c587300451787593c03b7dbbc4c0f1e1..79a850ab48a4992096c347bbd54ab4903a0c5d69 100644 (file)
@@ -26,6 +26,7 @@ import (
        "io"
        "io/fs"
        "log"
+       "net/url"
        "os"
        "os/exec"
        "os/signal"
@@ -86,11 +87,15 @@ func main() {
        }
        defer DebugFd.Close()
 
-       login, password := netrc.Find(*entrypoint)
+       entrypointURL, err := url.Parse(*entrypoint)
+       if err != nil {
+               log.Fatalln(err)
+       }
+       login, password := netrc.Find(entrypointURL.Hostname())
        if login == "" || password == "" {
-               log.Fatalln("no credentials found for:", *entrypoint)
+               log.Fatalln("no credentials found for:", entrypointURL.Hostname())
        }
-       c := model.NewAPIv4Client("https://" + *entrypoint)
+       c := model.NewAPIv4Client(*entrypoint)
        c.Login(login, password)
        me, resp, err := c.GetMe("")
        if err != nil {
@@ -439,7 +444,15 @@ func main() {
        }()
 
        needsShutdown := make(chan os.Signal)
-       wc, err := model.NewWebSocketClient4("wss://"+*entrypoint, c.AuthToken)
+       switch entrypointURL.Scheme {
+       case "http":
+               entrypointURL.Scheme = "ws"
+       case "https":
+               entrypointURL.Scheme = "wss"
+       default:
+               log.Println("unhandled scheme:", entrypointURL.Scheme)
+       }
+       wc, err := model.NewWebSocketClient4(entrypointURL.String(), c.AuthToken)
        if err != nil {
                log.Fatalln(err)
        }