github.com/status-im/status-go@v1.1.0/wakuv2/nwaku.go (about)

     1  package wakuv2
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io"
     7  	"net/http"
     8  	"os"
     9  	"strconv"
    10  )
    11  
    12  type NwakuInfo struct {
    13  	ListenAddresses []string `json:"listenAddresses"`
    14  	EnrUri          string   `json:"enrUri"`
    15  }
    16  
    17  func GetNwakuInfo(host *string, port *int) (NwakuInfo, error) {
    18  	nwakuRestPort := 8645
    19  	if port != nil {
    20  		nwakuRestPort = *port
    21  	}
    22  	envNwakuRestPort := os.Getenv("NWAKU_REST_PORT")
    23  	if envNwakuRestPort != "" {
    24  		v, err := strconv.Atoi(envNwakuRestPort)
    25  		if err != nil {
    26  			return NwakuInfo{}, err
    27  		}
    28  		nwakuRestPort = v
    29  	}
    30  
    31  	nwakuRestHost := "localhost"
    32  	if host != nil {
    33  		nwakuRestHost = *host
    34  	}
    35  	envNwakuRestHost := os.Getenv("NWAKU_REST_HOST")
    36  	if envNwakuRestHost != "" {
    37  		nwakuRestHost = envNwakuRestHost
    38  	}
    39  
    40  	resp, err := http.Get(fmt.Sprintf("http://%s:%d/debug/v1/info", nwakuRestHost, nwakuRestPort))
    41  	if err != nil {
    42  		return NwakuInfo{}, err
    43  	}
    44  	defer resp.Body.Close()
    45  
    46  	body, err := io.ReadAll(resp.Body)
    47  	if err != nil {
    48  		return NwakuInfo{}, err
    49  	}
    50  
    51  	var data NwakuInfo
    52  	err = json.Unmarshal(body, &data)
    53  	if err != nil {
    54  		return NwakuInfo{}, err
    55  	}
    56  
    57  	return data, nil
    58  }