refactor(client): wrap all external requests in retry transport

This commit is contained in:
2026-09-21 23:15:45 +03:30
parent 8e39fd4503
commit 055c8d8777
5 changed files with 612 additions and 86 deletions

View File

@@ -38,7 +38,11 @@ func run(logger *slog.Logger) error {
return fmt.Errorf("load configuration: %w", err)
}
httpClient := &http.Client{Timeout: config.ZarinHubTimeout}
httpClient := zarinhub.NewHTTPClient(
config.ZarinHubTimeout,
config.ZarinHubRetries,
logger,
)
tokenManager := zarinhub.NewTokenManager(
httpClient,
config.ZarinHubAuthEndpoint,
@@ -46,9 +50,10 @@ func run(logger *slog.Logger) error {
config.ZarinHubPassword,
)
authTimeout := time.Duration(config.ZarinHubRetries+1)*config.ZarinHubTimeout + 10*time.Second
authContext, cancelAuth := context.WithTimeout(
context.Background(),
config.ZarinHubTimeout,
authTimeout,
)
_, err = tokenManager.AccessToken(authContext)
cancelAuth()