Skip to content

Commit

Permalink
config: make lwk-related settings clear
Browse files Browse the repository at this point in the history
To make lwk-related settings easier to understand,
the following changes have been made.

* Simplification of default settings in documentation
* Clarified logging in case of incorrect configuration
  • Loading branch information
YusukeShimizu committed May 29, 2024
1 parent 58c516c commit 53e56fd
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 22 deletions.
4 changes: 2 additions & 2 deletions clightning/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,14 +257,14 @@ func LWKConfigFromToml(filePath string) (*lwk.Conf, error) {
c.SetSignerName(lwk.NewConfName(cfg.LWK.SignerName))
}
if cfg.LWK.LWKEndpoint != "" {
lwkEndpoint, err := lwk.NewConfURL(cfg.LWK.LWKEndpoint)
lwkEndpoint, err := lwk.NewLWKURL(cfg.LWK.LWKEndpoint)
if err != nil {
return nil, err
}
c.SetLWKEndpoint(*lwkEndpoint)
}
if cfg.LWK.ElectrumEndpoint != "" {
electrumEndpoint, err := lwk.NewConfURL(cfg.LWK.ElectrumEndpoint)
electrumEndpoint, err := lwk.NewElectrsURL(cfg.LWK.ElectrumEndpoint)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/peerswaplnd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,14 @@ func LWKFromIniFileConfig(filePath string) (*lwk.Conf, error) {
c.SetSignerName(lwk.NewConfName(cfg.LWK.SignerName))
}
if cfg.LWK.LWKEndpoint != "" {
lwkEndpoint, err := lwk.NewConfURL(cfg.LWK.LWKEndpoint)
lwkEndpoint, err := lwk.NewLWKURL(cfg.LWK.LWKEndpoint)
if err != nil {
return nil, err
}
c.SetLWKEndpoint(*lwkEndpoint)
}
if cfg.LWK.ElectrumEndpoint != "" {
electrumEndpoint, err := lwk.NewConfURL(cfg.LWK.ElectrumEndpoint)
electrumEndpoint, err := lwk.NewElectrsURL(cfg.LWK.ElectrumEndpoint)
if err != nil {
return nil, err
}
Expand Down
4 changes: 1 addition & 3 deletions docs/setup_lwk.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ The following settings are available
* signer name
* lwk endpoint : lwk jsonrpc endpoint
* electrumEndpoint : electrum JSON-RPC serverのendpoint
* network : `liquid``liquid-testnet`.`"liquid-regtest`
* network : **`liquid`, `liquid-testnet`, `liquid-regtest`**
* liquidSwaps : `true` if used

Set up in INI (.ini) File Format for lnd and in toml format for cln
Expand All @@ -52,7 +52,6 @@ Example configuration in lnd
```sh
lwk.signername=signername
lwk.walletname=walletname
lwk.lwkendpoint=http://localhost:32110
lwk.network=liquid
lwk.liquidswaps=true
```
Expand All @@ -62,7 +61,6 @@ Example configuration in cln
[LWK]
signername="signername"
walletname="walletname"
lwkendpoint="http://localhost:32110"
network="liquid"
liquidswaps=true
```
8 changes: 4 additions & 4 deletions lwk/conf_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ func (b *confBuilder) DefaultConf() (*confBuilder, error) {
lwkEndpoint = "http://localhost:32110"
electrumEndpoint = "ssl://blockstream.info:995"
}
lwkURL, err := NewConfURL(lwkEndpoint)
lwkURL, err := NewLWKURL(lwkEndpoint)
if err != nil {
return nil, err
}
elementsURL, err := NewConfURL(electrumEndpoint)
elementsURL, err := NewElectrsURL(electrumEndpoint)
if err != nil {
return nil, err
}
Expand All @@ -53,12 +53,12 @@ func (b *confBuilder) SetWalletName(name confname) *confBuilder {
return b
}

func (b *confBuilder) SetLWKEndpoint(endpoint confurl) *confBuilder {
func (b *confBuilder) SetLWKEndpoint(endpoint lwkurl) *confBuilder {
b.lwkEndpoint = endpoint
return b
}

func (b *confBuilder) SetElectrumEndpoint(endpoint confurl) *confBuilder {
func (b *confBuilder) SetElectrumEndpoint(endpoint electsurl) *confBuilder {
b.electrumEndpoint = endpoint
return b
}
Expand Down
47 changes: 38 additions & 9 deletions lwk/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package lwk

import (
"errors"
"fmt"
"net/url"

"github.com/vulpemventures/go-elements/network"
Expand All @@ -10,8 +11,8 @@ import (
type Conf struct {
signerName confname
walletName confname
lwkEndpoint confurl
electrumEndpoint confurl
lwkEndpoint lwkurl
electrumEndpoint electsurl
network LwkNetwork
liquidSwaps bool
}
Expand Down Expand Up @@ -100,7 +101,7 @@ func NewlwkNetwork(lekNetwork string) (LwkNetwork, error) {
case "liquid-regtest":
return NetworkRegtest, nil
default:
return "", errors.New("invalid network")
return "", fmt.Errorf("expected liquid, liquid-testnet or liquid-regtest, got %s", lekNetwork)
}
}

Expand Down Expand Up @@ -130,24 +131,52 @@ func (n confname) String() string {
return string(n)
}

type confurl struct {
type lwkurl struct {
*url.URL
}

func NewConfURL(endpoint string) (*confurl, error) {
func NewLWKURL(endpoint string) (*lwkurl, error) {
u, err := url.ParseRequestURI(endpoint)
if err != nil {
return nil, err
}
return &confurl{u}, nil
return &lwkurl{u}, nil
}

func (n confurl) validate() error {
if n.URL == nil {
func (u lwkurl) validate() error {
if u.URL == nil {
return errors.New("url must be set")
}
if n.URL.String() == "" {
if u.URL.String() == "" {
return errors.New("could not parse url")
}
if u.Scheme != "http" && u.Scheme != "https" {
return fmt.Errorf("expected http or https scheme, got %s", u.Scheme)
}
return nil
}

type electsurl struct {
*url.URL
}

func NewElectrsURL(endpoint string) (*electsurl, error) {
u, err := url.ParseRequestURI(endpoint)
if err != nil {
return nil, err
}
return &electsurl{u}, nil
}

func (u electsurl) validate() error {
if u.URL == nil {
return errors.New("url must be set")
}
if u.URL.String() == "" {
return errors.New("could not parse url")
}
if u.Scheme != "ssl" && u.Scheme != "tcp" {
return fmt.Errorf("expected ssl or tcp scheme, got %s", u.Scheme)
}
return nil
}
40 changes: 38 additions & 2 deletions lwk/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func TestNewlwkNetwork(t *testing.T) {
}
}

func TestNewConfURL(t *testing.T) {
func TestLWKURL(t *testing.T) {
t.Parallel()
tests := map[string]struct {
endpoint string
Expand All @@ -65,7 +65,43 @@ func TestNewConfURL(t *testing.T) {
tt := tt
t.Run(name, func(t *testing.T) {
t.Parallel()
got, err := lwk.NewConfURL(tt.endpoint)
got, err := lwk.NewLWKURL(tt.endpoint)
if tt.wantErr {
assert.Error(t, err)
return
}
if got.String() != tt.want {
t.Errorf("NewConfURL() = %v, want %v", got, tt.want)
}
})
}
}

func TestElectrsURL(t *testing.T) {
t.Parallel()
tests := map[string]struct {
endpoint string
want string
wantErr bool
}{
"valid url": {
endpoint: "ssl://localhost:32111",
want: "ssl://localhost:32111",
},
"without protocol": {
endpoint: "localhost:32111",
want: "localhost:32111",
},
"invalid url": {
endpoint: "invalid url",
wantErr: true,
},
}
for name, tt := range tests {
tt := tt
t.Run(name, func(t *testing.T) {
t.Parallel()
got, err := lwk.NewElectrsURL(tt.endpoint)
if tt.wantErr {
assert.Error(t, err)
return
Expand Down

0 comments on commit 53e56fd

Please sign in to comment.