From 5c97d1793c19c954978876482f36beec181baaf7 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Wed, 8 Feb 2023 22:07:05 -0600 Subject: [PATCH 1/4] fix: default version to lowest for compat Signed-off-by: jolheiser --- gitea/version.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gitea/version.go b/gitea/version.go index f112101..6531e89 100644 --- a/gitea/version.go +++ b/gitea/version.go @@ -6,6 +6,7 @@ package gitea import ( "fmt" + "strings" "github.com/hashicorp/go-version" ) @@ -97,6 +98,11 @@ func (c *Client) loadServerVersion() (err error) { return } if c.serverVersion, err = version.NewVersion(raw); err != nil { + if strings.TrimSpace(raw) != "" { + // Version was something, just not recognized + // Default to lowest version for safety + c.serverVersion = version1_11_0 + } return } }) -- 2.40.1 From 4ddde428589d331ce5c0d85e232376476f587ee6 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Wed, 22 Mar 2023 22:18:24 -0500 Subject: [PATCH 2/4] review: return error for compat Signed-off-by: jolheiser --- gitea/version.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gitea/version.go b/gitea/version.go index 6531e89..235886f 100644 --- a/gitea/version.go +++ b/gitea/version.go @@ -5,6 +5,7 @@ package gitea import ( + "errors" "fmt" "strings" @@ -60,15 +61,16 @@ func SetGiteaVersion(v string) ClientOption { // predefined versions only have to be parsed by library once var ( - version1_11_0 = version.Must(version.NewVersion("1.11.0")) - version1_11_5 = version.Must(version.NewVersion("1.11.5")) - version1_12_0 = version.Must(version.NewVersion("1.12.0")) - version1_12_3 = version.Must(version.NewVersion("1.12.3")) - version1_13_0 = version.Must(version.NewVersion("1.13.0")) - version1_14_0 = version.Must(version.NewVersion("1.14.0")) - version1_15_0 = version.Must(version.NewVersion("1.15.0")) - version1_16_0 = version.Must(version.NewVersion("1.16.0")) - version1_17_0 = version.Must(version.NewVersion("1.17.0")) + version1_11_0 = version.Must(version.NewVersion("1.11.0")) + version1_11_5 = version.Must(version.NewVersion("1.11.5")) + version1_12_0 = version.Must(version.NewVersion("1.12.0")) + version1_12_3 = version.Must(version.NewVersion("1.12.3")) + version1_13_0 = version.Must(version.NewVersion("1.13.0")) + version1_14_0 = version.Must(version.NewVersion("1.14.0")) + version1_15_0 = version.Must(version.NewVersion("1.15.0")) + version1_16_0 = version.Must(version.NewVersion("1.16.0")) + version1_17_0 = version.Must(version.NewVersion("1.17.0")) + ErrUnknownVersion = errors.New("unknown version; setting to 1.11.0 for compatibility") ) // checkServerVersionGreaterThanOrEqual is the canonical way in the SDK to check for versions for API compatibility reasons @@ -102,6 +104,7 @@ func (c *Client) loadServerVersion() (err error) { // Version was something, just not recognized // Default to lowest version for safety c.serverVersion = version1_11_0 + err = ErrUnknownVersion } return } -- 2.40.1 From 224a41053340de01212256b83c52194b3131f225 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Wed, 22 Mar 2023 22:32:21 -0500 Subject: [PATCH 3/4] review: return client if unknown version error Signed-off-by: jolheiser --- gitea/client.go | 4 ++++ gitea/version.go | 32 ++++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/gitea/client.go b/gitea/client.go index b8c610b..52f86ff 100644 --- a/gitea/client.go +++ b/gitea/client.go @@ -9,6 +9,7 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" "io" "io/ioutil" @@ -67,6 +68,9 @@ func NewClient(url string, options ...ClientOption) (*Client, error) { } } if err := client.checkServerVersionGreaterThanOrEqual(version1_11_0); err != nil { + if errors.As(err, &ErrUnknownVersion{}) { + return client, err + } return nil, err } diff --git a/gitea/version.go b/gitea/version.go index 235886f..b2d2d42 100644 --- a/gitea/version.go +++ b/gitea/version.go @@ -61,18 +61,27 @@ func SetGiteaVersion(v string) ClientOption { // predefined versions only have to be parsed by library once var ( - version1_11_0 = version.Must(version.NewVersion("1.11.0")) - version1_11_5 = version.Must(version.NewVersion("1.11.5")) - version1_12_0 = version.Must(version.NewVersion("1.12.0")) - version1_12_3 = version.Must(version.NewVersion("1.12.3")) - version1_13_0 = version.Must(version.NewVersion("1.13.0")) - version1_14_0 = version.Must(version.NewVersion("1.14.0")) - version1_15_0 = version.Must(version.NewVersion("1.15.0")) - version1_16_0 = version.Must(version.NewVersion("1.16.0")) - version1_17_0 = version.Must(version.NewVersion("1.17.0")) - ErrUnknownVersion = errors.New("unknown version; setting to 1.11.0 for compatibility") + version1_11_0 = version.Must(version.NewVersion("1.11.0")) + version1_11_5 = version.Must(version.NewVersion("1.11.5")) + version1_12_0 = version.Must(version.NewVersion("1.12.0")) + version1_12_3 = version.Must(version.NewVersion("1.12.3")) + version1_13_0 = version.Must(version.NewVersion("1.13.0")) + version1_14_0 = version.Must(version.NewVersion("1.14.0")) + version1_15_0 = version.Must(version.NewVersion("1.15.0")) + version1_16_0 = version.Must(version.NewVersion("1.16.0")) + version1_17_0 = version.Must(version.NewVersion("1.17.0")) ) +// ErrUnknownVersion is an unknown version from the API +type ErrUnknownVersion struct { + raw string +} + +// Error fulfills error +func (e ErrUnknownVersion) Error() string { + return fmt.Sprintf("unknown version: %s", e.raw) +} + // checkServerVersionGreaterThanOrEqual is the canonical way in the SDK to check for versions for API compatibility reasons func (c *Client) checkServerVersionGreaterThanOrEqual(v *version.Version) error { if c.ignoreVersion { @@ -102,9 +111,8 @@ func (c *Client) loadServerVersion() (err error) { if c.serverVersion, err = version.NewVersion(raw); err != nil { if strings.TrimSpace(raw) != "" { // Version was something, just not recognized - // Default to lowest version for safety c.serverVersion = version1_11_0 - err = ErrUnknownVersion + err = ErrUnknownVersion{raw: raw} } return } -- 2.40.1 From eb07a10707b3d20ec0d6a7501e1df2336519d86a Mon Sep 17 00:00:00 2001 From: John Olheiser Date: Wed, 29 Mar 2023 05:21:51 +0800 Subject: [PATCH 4/4] chore: goimports --- gitea/version.go | 1 - 1 file changed, 1 deletion(-) diff --git a/gitea/version.go b/gitea/version.go index b2d2d42..95e84bc 100644 --- a/gitea/version.go +++ b/gitea/version.go @@ -5,7 +5,6 @@ package gitea import ( - "errors" "fmt" "strings" -- 2.40.1