aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-07-21 14:28:15 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-07-21 14:42:45 +0200
commite3179558f05e9bb2c8c57fe9d0e916cb829df11c (patch)
treef2c5eb52ded19b870f075bed25e26e524701b2bc
parent9bcfd4733a7ae7d12129b024e93536f7136e4a8e (diff)
downloadgo-schwift-e3179558f05e9bb2c8c57fe9d0e916cb829df11c.tar.gz
bump Go to 1.26, replace errext.As with errors.AsType
-rw-r--r--CHANGELOG.md1
-rw-r--r--bulk.go4
-rw-r--r--errors.go4
-rw-r--r--go.mod2
-rw-r--r--internal/errext/errext.go26
-rw-r--r--tests/bulk_upload_test.go6
6 files changed, 8 insertions, 35 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 14589b5..adcaad4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
Changes:
- `Account.Headers` and `Container.Headers` are now thread-safe.
+- The minimum Go version is now 1.26.
# v2.2.0 (2026-07-17)
diff --git a/bulk.go b/bulk.go
index 7c08345..34f1be6 100644
--- a/bulk.go
+++ b/bulk.go
@@ -21,6 +21,7 @@ package schwift
import (
"context"
"encoding/json"
+ "errors"
"fmt"
"io"
"net/http"
@@ -29,7 +30,6 @@ import (
"strings"
"go.xyrillian.de/schwift/v2/capabilities"
- "go.xyrillian.de/schwift/v2/internal/errext"
)
// BulkUploadFormat enumerates possible archive formats for Container.BulkUpload().
@@ -216,7 +216,7 @@ func (a *Account) bulkDeleteSingle(ctx context.Context, objects []*Object, conta
numNotFound++
return nil
}
- if statusErr, ok := errext.As[UnexpectedStatusCodeError](err); ok {
+ if statusErr, ok := errors.AsType[UnexpectedStatusCodeError](err); ok {
errs = append(errs, BulkObjectError{
ContainerName: containerName,
ObjectName: objectName,
diff --git a/errors.go b/errors.go
index 1957aeb..fd34eec 100644
--- a/errors.go
+++ b/errors.go
@@ -24,8 +24,6 @@ import (
"net/http"
"strconv"
"strings"
-
- "go.xyrillian.de/schwift/v2/internal/errext"
)
var (
@@ -150,7 +148,7 @@ func (e BulkError) Error() string {
//
// It is safe to pass a nil error, in which case Is() always returns false.
func Is(err error, code int) bool {
- if e, ok := errext.As[UnexpectedStatusCodeError](err); ok {
+ if e, ok := errors.AsType[UnexpectedStatusCodeError](err); ok {
return e.ActualResponse.StatusCode == code
}
return false
diff --git a/go.mod b/go.mod
index 0d97a82..1730b9e 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module go.xyrillian.de/schwift/v2
-go 1.25.0
+go 1.26
require (
github.com/gophercloud/gophercloud/v2 v2.13.0
diff --git a/internal/errext/errext.go b/internal/errext/errext.go
deleted file mode 100644
index 3655ba7..0000000
--- a/internal/errext/errext.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package errext
-
-import "errors"
-
-// vendored from https://github.com/sapcc/go-bits/blob/master/errext/errext.go (also licensed Apache 2.0) to prevent go.mod go bump to 1.21
-
-// As is a variant of errors.As() that leverages generics to present a nicer interface.
-//
-// //this code:
-// var perr os.PathError
-// if errors.As(err, &perr) {
-// handle(perr)
-// }
-// //can be rewritten as:
-// if perr, ok := errext.As[os.PathError](err); ok {
-// handle(perr)
-// }
-//
-// This is sometimes more verbose (like in this example), but allows to scope
-// the specific error variable to the condition's then-branch, and also looks
-// more idiomatic to developers already familiar with type casts.
-func As[T error](err error) (T, bool) {
- var result T
- ok := errors.As(err, &result)
- return result, ok
-}
diff --git a/tests/bulk_upload_test.go b/tests/bulk_upload_test.go
index ede3a65..dc5b033 100644
--- a/tests/bulk_upload_test.go
+++ b/tests/bulk_upload_test.go
@@ -21,11 +21,11 @@ package tests
import (
"archive/tar"
"bytes"
+ "errors"
"strings"
"testing"
"go.xyrillian.de/schwift/v2"
- "go.xyrillian.de/schwift/v2/internal/errext"
)
func TestBulkUploadSuccess(t *testing.T) {
@@ -65,7 +65,7 @@ func TestBulkUploadArchiveError(t *testing.T) {
)
expectInt(t, n, 0)
expectError(t, err, "400 Bad Request: Invalid Tar File: truncated header")
- bulkErr, _ := errext.As[schwift.BulkError](err)
+ bulkErr, _ := errors.AsType[schwift.BulkError](err)
expectInt(t, bulkErr.StatusCode, 400)
expectString(t, bulkErr.OverallError, "Invalid Tar File: truncated header")
expectInt(t, len(bulkErr.ObjectErrors), 0)
@@ -91,7 +91,7 @@ func TestBulkUploadObjectError(t *testing.T) {
)
expectInt(t, n, 1)
expectError(t, err, "400 Bad Request (+1 object errors)")
- bulkErr, _ := errext.As[schwift.BulkError](err)
+ bulkErr, _ := errors.AsType[schwift.BulkError](err)
expectInt(t, len(bulkErr.ObjectErrors), 1)
expectString(t, bulkErr.ObjectErrors[0].ContainerName, c.Name())
expectInt(t, bulkErr.ObjectErrors[0].StatusCode, 400)