From 2abebfd01b7f4e3868a6c059968ebdca9922779b Mon Sep 17 00:00:00 2001 From: bdoerfchen Date: Thu, 24 Jul 2025 22:21:11 +0200 Subject: [PATCH] feat: add request timeout --- cmd/config.go | 11 +++++++---- cmd/root.go | 1 + cmd/verbs.go | 3 +++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index d957b7e..4a1ecda 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -1,8 +1,11 @@ package cmd +const DefaultRequestTimeout uint = 30 + type AppConfig struct { - OutputVerbose bool - OutputFormatter string - OutputOrderReverse bool - PrintConfig bool + OutputVerbose bool + OutputFormatter string + OutputOrderReverse bool + PrintConfig bool + RequestTimeoutSeconds uint } diff --git a/cmd/root.go b/cmd/root.go index 1ff55d1..459381d 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -34,6 +34,7 @@ func initRootCmd() { rootCmd.PersistentFlags().StringVarP(&appConfig.OutputFormatter, "output", "o", "table", "Set output format") rootCmd.PersistentFlags().BoolVar(&appConfig.OutputOrderReverse, "reverse", false, "Reverses output item order") rootCmd.PersistentFlags().BoolVar(&appConfig.PrintConfig, "print-config", false, "Enable printing the application config") + rootCmd.PersistentFlags().UintVar(&appConfig.RequestTimeoutSeconds, "timeout", DefaultRequestTimeout, "Set the request timeout in seconds") logger := jlog.New(slog.LevelDebug) ctx := jlog.ContextWith(context.Background(), logger) diff --git a/cmd/verbs.go b/cmd/verbs.go index 4a24b24..e3a1841 100644 --- a/cmd/verbs.go +++ b/cmd/verbs.go @@ -8,6 +8,7 @@ import ( "os" "slices" "strings" + "time" "git.bissendorf.co/bissendorf/unifood/m/v2/core/interfaces" "git.bissendorf.co/bissendorf/unifood/m/v2/core/interfaces/params" @@ -92,6 +93,8 @@ func getVerbs(ctx context.Context, config *AppConfig) (commands []*cobra.Command } logger := jlog.New(logLevel) ctx := jlog.ContextWith(context.Background(), logger) + ctx, cancel := context.WithTimeout(ctx, time.Duration(config.RequestTimeoutSeconds)*time.Second) + defer cancel() // Print config if config.PrintConfig {