refactor logging setup and split local/remote close APIs

This commit is contained in:
2026-03-24 13:45:19 +03:00
parent db31246eeb
commit 7776acaf12
18 changed files with 283 additions and 66 deletions
+4 -5
View File
@@ -95,10 +95,9 @@ type API struct {
}
// NewAPI creates a new API client from options.
// Always call CloseApi() when done to release resources.
// Always call Close() when done to release resources.
func NewAPI(opts *APIOpts) *API {
l := slog.CreateLogger().Level(utils.GetLoggerLevel()).Prefix("API")
l.AddWriter(l.CreateJsonStdoutWriter())
l := utils.CreateLogger("API", utils.GetLoggerLevel())
client := opts.client
if client == nil {
@@ -120,10 +119,10 @@ func NewAPI(opts *APIOpts) *API {
}
}
// CloseApi shuts down the internal worker pool and closes the logger.
// Close shuts down the internal worker pool and closes the logger.
// Must be called to avoid resource leaks.
// See https://core.telegram.org/bots/api
func (api *API) CloseApi() error {
func (api *API) Close() error {
api.pool.stop()
return api.logger.Close()
}
+2 -2
View File
@@ -35,8 +35,8 @@ func TestAPILeavesAcceptEncodingToHTTPTransport(t *testing.T) {
SetHTTPClient(client),
)
defer func() {
if err := api.CloseApi(); err != nil {
t.Fatalf("CloseApi returned error: %v", err)
if err := api.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
+4 -4
View File
@@ -49,18 +49,18 @@ func (api *API) LogOutWithContext(ctx context.Context) (bool, error) {
return req.DoWithContext(ctx, api)
}
// Close closes the bot instance on the local server.
// CloseRemote closes the bot instance on the local server.
// Returns true on success.
// See https://core.telegram.org/bots/api#close
func (api *API) Close() (bool, error) {
func (api *API) CloseRemote() (bool, error) {
req := NewRequest[bool, EmptyParams]("close", NoParams)
return req.Do(api)
}
// CloseWithContext is the context-aware variant of Close.
// CloseRemoteWithContext is the context-aware variant of CloseRemote.
// It executes the same request but uses ctx for cancellation and deadlines.
// See https://core.telegram.org/bots/api#close
func (api *API) CloseWithContext(ctx context.Context) (bool, error) {
func (api *API) CloseRemoteWithContext(ctx context.Context) (bool, error) {
req := NewRequest[bool, EmptyParams]("close", NoParams)
return req.DoWithContext(ctx, api)
}
+6 -6
View File
@@ -27,8 +27,8 @@ func TestGetFileByLinkUsesConfiguredAPIURL(t *testing.T) {
SetHTTPClient(client),
)
defer func() {
if err := api.CloseApi(); err != nil {
t.Fatalf("CloseApi returned error: %v", err)
if err := api.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
@@ -60,8 +60,8 @@ func TestGetFileByLinkReturnsHTTPStatusError(t *testing.T) {
SetHTTPClient(client),
)
defer func() {
if err := api.CloseApi(); err != nil {
t.Fatalf("CloseApi returned error: %v", err)
if err := api.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
@@ -97,8 +97,8 @@ func TestGetUpdatesOmitsAllowedUpdatesWhenEmpty(t *testing.T) {
SetHTTPClient(client),
)
defer func() {
if err := api.CloseApi(); err != nil {
t.Fatalf("CloseApi returned error: %v", err)
if err := api.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
+1 -2
View File
@@ -69,8 +69,7 @@ type Uploader struct {
// NewUploader creates a multipart uploader bound to an API client.
func NewUploader(api *API) *Uploader {
logger := slog.CreateLogger().Level(utils.GetLoggerLevel()).Prefix("UPLOADER")
logger.AddWriter(logger.CreateJsonStdoutWriter())
logger := utils.CreateLogger("UPLOADER", utils.GetLoggerLevel())
return &Uploader{api, logger}
}
+2 -2
View File
@@ -44,8 +44,8 @@ func TestUploaderEncodesJSONFieldsAndLeavesAcceptEncodingToHTTPTransport(t *test
SetHTTPClient(client),
)
defer func() {
if err := api.CloseApi(); err != nil {
t.Fatalf("CloseApi returned error: %v", err)
if err := api.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()