status-im/status-go

View on GitHub
wakuv2/nwaku.go

Summary

Maintainability
A
0 mins
Test Coverage
D
61%
package wakuv2

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strconv"
)

type NwakuInfo struct {
    ListenAddresses []string `json:"listenAddresses"`
    EnrUri          string   `json:"enrUri"`
}

func GetNwakuInfo(host *string, port *int) (NwakuInfo, error) {
    nwakuRestPort := 8645
    if port != nil {
        nwakuRestPort = *port
    }
    envNwakuRestPort := os.Getenv("NWAKU_REST_PORT")
    if envNwakuRestPort != "" {
        v, err := strconv.Atoi(envNwakuRestPort)
        if err != nil {
            return NwakuInfo{}, err
        }
        nwakuRestPort = v
    }

    nwakuRestHost := "localhost"
    if host != nil {
        nwakuRestHost = *host
    }
    envNwakuRestHost := os.Getenv("NWAKU_REST_HOST")
    if envNwakuRestHost != "" {
        nwakuRestHost = envNwakuRestHost
    }

    resp, err := http.Get(fmt.Sprintf("http://%s:%d/debug/v1/info", nwakuRestHost, nwakuRestPort))
    if err != nil {
        return NwakuInfo{}, err
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        return NwakuInfo{}, err
    }

    var data NwakuInfo
    err = json.Unmarshal(body, &data)
    if err != nil {
        return NwakuInfo{}, err
    }

    return data, nil
}