diff --git a/README.md b/README.md index 68961f0..73ce466 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,14 @@ Usage example: `sbanken a r --id checking` +### HTTP Timeout + +Number of seconds to wait before timing out http requests. + +Global option: `--http-timeout value` +Config option: `http-timeout: value` +Default: `30` + ## Usage ``` @@ -146,6 +154,7 @@ GLOBAL OPTIONS: --customer-id value, --cuid value customer id [$SBANKEN_CUSTOMER_ID] --style value set output style --colors add colors to values (default: false) + --http-timeout value timeout in seconds (default: 30) --config value, -c value path to YAML config [$SBANKEN_CONFIG] --help, -h show help (default: false) --version, -v print the version (default: false) diff --git a/internal/cli/flags.go b/internal/cli/flags.go index bf607be..ef75fba 100644 --- a/internal/cli/flags.go +++ b/internal/cli/flags.go @@ -33,6 +33,11 @@ func getGlobalFlags() []cli.Flag { Name: "colors", Usage: "add colors to values", }), + altsrc.NewIntFlag(&cli.IntFlag{ + Name: "http-timeout", + Usage: "timeout in seconds", + Value: 30, + }), &cli.StringFlag{ Name: "config", Usage: "path to YAML config", diff --git a/internal/sbanken/sbanken.go b/internal/sbanken/sbanken.go index 1ffc223..84a9a09 100644 --- a/internal/sbanken/sbanken.go +++ b/internal/sbanken/sbanken.go @@ -4,9 +4,11 @@ import ( "context" "fmt" "io" + "net/http" "os" "regexp" "strings" + "time" "github.com/engvik/sbanken-go" "github.com/urfave/cli/v2" @@ -75,7 +77,12 @@ func (c *Connection) ConnectClient(ctx context.Context, cliCtx *cli.Context, ver CustomerID: cliCtx.String("customer-id"), UserAgent: fmt.Sprintf("sbanken-cli/%s (github.com/engvik/sbanken-cli)", version), } - sClient, err := sbanken.NewClient(ctx, cfg, nil) + + httpClient := &http.Client{ + Timeout: time.Second * time.Duration(cliCtx.Int("http-timeout")), + } + + sClient, err := sbanken.NewClient(ctx, cfg, httpClient) if err != nil { return err }