mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-20 15:31:24 +02:00
refactor(errs): migrate from gperr.Error to standard Go error interface
This is a large-scale refactoring across the codebase that replaces the custom `gperr.Error` type with Go's standard `error` interface. The changes include: - Replacing `gperr.Error` return types with `error` in function signatures - Using `errors.New()` and `fmt.Errorf()` instead of `gperr.New()` and `gperr.Errorf()` - Using `%w` format verb for error wrapping instead of `.With()` method - Replacing `gperr.Subject()` calls with `gperr.PrependSubject()` - Converting error logging from `gperr.Log*()` functions to zerolog's `.Err().Msg()` pattern - Update NewLogger to handle multiline error message - Updating `goutils` submodule to latest commit This refactoring aligns with Go idioms and removes the dependency on custom error handling abstractions in favor of standard library patterns.
This commit is contained in:
@@ -99,7 +99,7 @@ type Location struct {
|
||||
|
||||
```go
|
||||
// LoadMaxMindDB loads or downloads the MaxMind database.
|
||||
func (cfg *MaxMind) LoadMaxMindDB(parent task.Parent) gperr.Error
|
||||
func (cfg *MaxMind) LoadMaxMindDB(parent task.Parent) error
|
||||
```
|
||||
|
||||
### Lookup
|
||||
@@ -324,8 +324,8 @@ The maxmind package integrates with:
|
||||
|
||||
```go
|
||||
var (
|
||||
ErrResponseNotOK = gperr.New("response not OK")
|
||||
ErrDownloadFailure = gperr.New("download failure")
|
||||
ErrResponseNotOK = errors.New("response not OK")
|
||||
ErrDownloadFailure = errors.New("download failure")
|
||||
)
|
||||
```
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/yusing/godoxy/internal/notif"
|
||||
gperr "github.com/yusing/goutils/errs"
|
||||
"github.com/yusing/goutils/task"
|
||||
)
|
||||
|
||||
@@ -24,7 +23,7 @@ func warnNotConfigured() {
|
||||
})
|
||||
}
|
||||
|
||||
func SetInstance(parent task.Parent, cfg *Config) gperr.Error {
|
||||
func SetInstance(parent task.Parent, cfg *Config) error {
|
||||
newInstance := &MaxMind{Config: cfg}
|
||||
if err := newInstance.LoadMaxMindDB(parent); err != nil {
|
||||
return err
|
||||
|
||||
@@ -16,7 +16,6 @@ import (
|
||||
"github.com/oschwald/maxminddb-golang"
|
||||
"github.com/yusing/godoxy/internal/common"
|
||||
maxmind "github.com/yusing/godoxy/internal/maxmind/types"
|
||||
gperr "github.com/yusing/goutils/errs"
|
||||
"github.com/yusing/goutils/task"
|
||||
)
|
||||
|
||||
@@ -52,8 +51,8 @@ var httpClient = &http.Client{
|
||||
}
|
||||
|
||||
var (
|
||||
ErrResponseNotOK = gperr.New("response not OK")
|
||||
ErrDownloadFailure = gperr.New("download failure")
|
||||
ErrResponseNotOK = errors.New("response not OK")
|
||||
ErrDownloadFailure = errors.New("download failure")
|
||||
)
|
||||
|
||||
func (cfg *MaxMind) dbPath() string {
|
||||
@@ -74,7 +73,7 @@ func (cfg *MaxMind) dbFilename() string {
|
||||
return "GeoIP2-Country.mmdb"
|
||||
}
|
||||
|
||||
func (cfg *MaxMind) LoadMaxMindDB(parent task.Parent) gperr.Error {
|
||||
func (cfg *MaxMind) LoadMaxMindDB(parent task.Parent) error {
|
||||
if cfg.Database == "" {
|
||||
return nil
|
||||
}
|
||||
@@ -92,7 +91,7 @@ func (cfg *MaxMind) LoadMaxMindDB(parent task.Parent) gperr.Error {
|
||||
// ignore invalid error, just download it again
|
||||
var invalidErr maxminddb.InvalidDatabaseError
|
||||
if !errors.As(err, &invalidErr) {
|
||||
return gperr.Wrap(err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
valid = false
|
||||
@@ -101,7 +100,7 @@ func (cfg *MaxMind) LoadMaxMindDB(parent task.Parent) gperr.Error {
|
||||
if !valid {
|
||||
cfg.Logger().Info().Msg("MaxMind DB not found/invalid, downloading...")
|
||||
if err = cfg.download(); err != nil {
|
||||
return ErrDownloadFailure.With(err)
|
||||
return fmt.Errorf("%w: %w", ErrDownloadFailure, err)
|
||||
}
|
||||
} else {
|
||||
cfg.Logger().Info().Msg("MaxMind DB loaded")
|
||||
@@ -236,7 +235,7 @@ func (cfg *MaxMind) download() error {
|
||||
// extract .tar.gz and to database
|
||||
err = extractFileFromTarGz(databaseGZ, cfg.dbFilename(), tmpDBPath)
|
||||
if err != nil {
|
||||
return gperr.New("failed to extract database from archive").With(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// test if the downloaded database is valid
|
||||
|
||||
@@ -3,7 +3,6 @@ package maxmind
|
||||
import (
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
gperr "github.com/yusing/goutils/errs"
|
||||
strutils "github.com/yusing/goutils/strings"
|
||||
)
|
||||
|
||||
@@ -21,7 +20,7 @@ const (
|
||||
MaxMindGeoIP2 DatabaseType = "geoip2"
|
||||
)
|
||||
|
||||
func (cfg *Config) Validate() gperr.Error {
|
||||
func (cfg *Config) Validate() error {
|
||||
if cfg.Database == "" {
|
||||
cfg.Database = MaxMindGeoLite
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user