forked from NYANDEV/forgejo
Refactor some legacy code and remove unused code (#28622)
1. use slices.Contains, remove Int64sContains 2. use HashEmail, remove base.EncodeMD5 3. remove BasicAuthEncode, IsLetter
This commit is contained in:
parent
921df1cbad
commit
f3999888c0
7 changed files with 14 additions and 76 deletions
|
@ -5,6 +5,8 @@ package avatars
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"crypto/md5"
|
||||||
|
"encoding/hex"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
|
@ -13,7 +15,6 @@ import (
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/modules/base"
|
|
||||||
"code.gitea.io/gitea/modules/cache"
|
"code.gitea.io/gitea/modules/cache"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
@ -90,7 +91,9 @@ func DefaultAvatarLink() string {
|
||||||
|
|
||||||
// HashEmail hashes email address to MD5 string. https://en.gravatar.com/site/implement/hash/
|
// HashEmail hashes email address to MD5 string. https://en.gravatar.com/site/implement/hash/
|
||||||
func HashEmail(email string) string {
|
func HashEmail(email string) string {
|
||||||
return base.EncodeMD5(strings.ToLower(strings.TrimSpace(email)))
|
m := md5.New()
|
||||||
|
_, _ = m.Write([]byte(strings.ToLower(strings.TrimSpace(email))))
|
||||||
|
return hex.EncodeToString(m.Sum(nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetEmailForHash converts a provided md5sum to the email
|
// GetEmailForHash converts a provided md5sum to the email
|
||||||
|
|
|
@ -17,7 +17,6 @@ import (
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/models/unit"
|
"code.gitea.io/gitea/models/unit"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/base"
|
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
@ -127,7 +126,7 @@ func (protectBranch *ProtectedBranch) CanUserPush(ctx context.Context, user *use
|
||||||
return writeAccess
|
return writeAccess
|
||||||
}
|
}
|
||||||
|
|
||||||
if base.Int64sContains(protectBranch.WhitelistUserIDs, user.ID) {
|
if slices.Contains(protectBranch.WhitelistUserIDs, user.ID) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +149,7 @@ func IsUserMergeWhitelisted(ctx context.Context, protectBranch *ProtectedBranch,
|
||||||
return permissionInRepo.CanWrite(unit.TypeCode)
|
return permissionInRepo.CanWrite(unit.TypeCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
if base.Int64sContains(protectBranch.MergeWhitelistUserIDs, userID) {
|
if slices.Contains(protectBranch.MergeWhitelistUserIDs, userID) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +181,7 @@ func IsUserOfficialReviewer(ctx context.Context, protectBranch *ProtectedBranch,
|
||||||
return writeAccess, nil
|
return writeAccess, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if base.Int64sContains(protectBranch.ApprovalsWhitelistUserIDs, user.ID) {
|
if slices.Contains(protectBranch.ApprovalsWhitelistUserIDs, user.ID) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,11 +6,11 @@ package git
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/organization"
|
"code.gitea.io/gitea/models/organization"
|
||||||
"code.gitea.io/gitea/modules/base"
|
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
|
||||||
"github.com/gobwas/glob"
|
"github.com/gobwas/glob"
|
||||||
|
@ -76,7 +76,7 @@ func DeleteProtectedTag(ctx context.Context, pt *ProtectedTag) error {
|
||||||
|
|
||||||
// IsUserAllowedModifyTag returns true if the user is allowed to modify the tag
|
// IsUserAllowedModifyTag returns true if the user is allowed to modify the tag
|
||||||
func IsUserAllowedModifyTag(ctx context.Context, pt *ProtectedTag, userID int64) (bool, error) {
|
func IsUserAllowedModifyTag(ctx context.Context, pt *ProtectedTag, userID int64) (bool, error) {
|
||||||
if base.Int64sContains(pt.AllowlistUserIDs, userID) {
|
if slices.Contains(pt.AllowlistUserIDs, userID) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ package issues
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
@ -15,7 +16,6 @@ import (
|
||||||
access_model "code.gitea.io/gitea/models/perm/access"
|
access_model "code.gitea.io/gitea/models/perm/access"
|
||||||
"code.gitea.io/gitea/models/unit"
|
"code.gitea.io/gitea/models/unit"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/base"
|
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
@ -279,7 +279,7 @@ func IsOfficialReviewerTeam(ctx context.Context, issue *Issue, team *organizatio
|
||||||
return team.UnitAccessMode(ctx, unit.TypeCode) >= perm.AccessModeWrite, nil
|
return team.UnitAccessMode(ctx, unit.TypeCode) >= perm.AccessModeWrite, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.Int64sContains(pb.ApprovalsWhitelistTeamIDs, team.ID), nil
|
return slices.Contains(pb.ApprovalsWhitelistTeamIDs, team.ID), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateReview creates a new review based on opts
|
// CreateReview creates a new review based on opts
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
package base
|
package base
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
|
@ -16,7 +15,6 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unicode"
|
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
@ -27,13 +25,6 @@ import (
|
||||||
"github.com/minio/sha256-simd"
|
"github.com/minio/sha256-simd"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EncodeMD5 encodes string to md5 hex value.
|
|
||||||
func EncodeMD5(str string) string {
|
|
||||||
m := md5.New()
|
|
||||||
_, _ = m.Write([]byte(str))
|
|
||||||
return hex.EncodeToString(m.Sum(nil))
|
|
||||||
}
|
|
||||||
|
|
||||||
// EncodeSha1 string to sha1 hex value.
|
// EncodeSha1 string to sha1 hex value.
|
||||||
func EncodeSha1(str string) string {
|
func EncodeSha1(str string) string {
|
||||||
h := sha1.New()
|
h := sha1.New()
|
||||||
|
@ -70,11 +61,6 @@ func BasicAuthDecode(encoded string) (string, string, error) {
|
||||||
return auth[0], auth[1], nil
|
return auth[0], auth[1], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// BasicAuthEncode encode basic auth string
|
|
||||||
func BasicAuthEncode(username, password string) string {
|
|
||||||
return base64.StdEncoding.EncodeToString([]byte(username + ":" + password))
|
|
||||||
}
|
|
||||||
|
|
||||||
// VerifyTimeLimitCode verify time limit code
|
// VerifyTimeLimitCode verify time limit code
|
||||||
func VerifyTimeLimitCode(data string, minutes int, code string) bool {
|
func VerifyTimeLimitCode(data string, minutes int, code string) bool {
|
||||||
if len(code) <= 18 {
|
if len(code) <= 18 {
|
||||||
|
@ -184,22 +170,6 @@ func Int64sToStrings(ints []int64) []string {
|
||||||
return strs
|
return strs
|
||||||
}
|
}
|
||||||
|
|
||||||
// Int64sContains returns if a int64 in a slice of int64
|
|
||||||
func Int64sContains(intsSlice []int64, a int64) bool {
|
|
||||||
for _, c := range intsSlice {
|
|
||||||
if c == a {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsLetter reports whether the rune is a letter (category L).
|
|
||||||
// https://github.com/golang/go/blob/c3b4918/src/go/scanner/scanner.go#L342
|
|
||||||
func IsLetter(ch rune) bool {
|
|
||||||
return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch)
|
|
||||||
}
|
|
||||||
|
|
||||||
// EntryIcon returns the octicon class for displaying files/directories
|
// EntryIcon returns the octicon class for displaying files/directories
|
||||||
func EntryIcon(entry *git.TreeEntry) string {
|
func EntryIcon(entry *git.TreeEntry) string {
|
||||||
switch {
|
switch {
|
||||||
|
|
|
@ -11,13 +11,6 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEncodeMD5(t *testing.T) {
|
|
||||||
assert.Equal(t,
|
|
||||||
"3858f62230ac3c915f300c664312c63f",
|
|
||||||
EncodeMD5("foobar"),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestEncodeSha1(t *testing.T) {
|
func TestEncodeSha1(t *testing.T) {
|
||||||
assert.Equal(t,
|
assert.Equal(t,
|
||||||
"8843d7f92416211de9ebb963ff4ce28125932878",
|
"8843d7f92416211de9ebb963ff4ce28125932878",
|
||||||
|
@ -52,11 +45,6 @@ func TestBasicAuthDecode(t *testing.T) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBasicAuthEncode(t *testing.T) {
|
|
||||||
assert.Equal(t, "Zm9vOmJhcg==", BasicAuthEncode("foo", "bar"))
|
|
||||||
assert.Equal(t, "MjM6IjotLS0t", BasicAuthEncode("23:\"", "----"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestVerifyTimeLimitCode(t *testing.T) {
|
func TestVerifyTimeLimitCode(t *testing.T) {
|
||||||
tc := []struct {
|
tc := []struct {
|
||||||
data string
|
data string
|
||||||
|
@ -167,29 +155,6 @@ func TestInt64sToStrings(t *testing.T) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInt64sContains(t *testing.T) {
|
|
||||||
assert.True(t, Int64sContains([]int64{6, 44324, 4324, 32, 1, 2323}, 1))
|
|
||||||
assert.True(t, Int64sContains([]int64{2323}, 2323))
|
|
||||||
assert.False(t, Int64sContains([]int64{6, 44324, 4324, 32, 1, 2323}, 232))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIsLetter(t *testing.T) {
|
|
||||||
assert.True(t, IsLetter('a'))
|
|
||||||
assert.True(t, IsLetter('e'))
|
|
||||||
assert.True(t, IsLetter('q'))
|
|
||||||
assert.True(t, IsLetter('z'))
|
|
||||||
assert.True(t, IsLetter('A'))
|
|
||||||
assert.True(t, IsLetter('E'))
|
|
||||||
assert.True(t, IsLetter('Q'))
|
|
||||||
assert.True(t, IsLetter('Z'))
|
|
||||||
assert.True(t, IsLetter('_'))
|
|
||||||
assert.False(t, IsLetter('-'))
|
|
||||||
assert.False(t, IsLetter('1'))
|
|
||||||
assert.False(t, IsLetter('$'))
|
|
||||||
assert.False(t, IsLetter(0x00))
|
|
||||||
assert.False(t, IsLetter(0x93))
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Test EntryIcon
|
// TODO: Test EntryIcon
|
||||||
|
|
||||||
func TestSetupGiteaRoot(t *testing.T) {
|
func TestSetupGiteaRoot(t *testing.T) {
|
||||||
|
|
|
@ -14,6 +14,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/avatars"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/organization"
|
"code.gitea.io/gitea/models/organization"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
|
@ -130,7 +131,7 @@ func UpdateAvatarSetting(ctx *context.Context, form *forms.AvatarForm, ctxUser *
|
||||||
ctxUser.UseCustomAvatar = form.Source == forms.AvatarLocal
|
ctxUser.UseCustomAvatar = form.Source == forms.AvatarLocal
|
||||||
if len(form.Gravatar) > 0 {
|
if len(form.Gravatar) > 0 {
|
||||||
if form.Avatar != nil {
|
if form.Avatar != nil {
|
||||||
ctxUser.Avatar = base.EncodeMD5(form.Gravatar)
|
ctxUser.Avatar = avatars.HashEmail(form.Gravatar)
|
||||||
} else {
|
} else {
|
||||||
ctxUser.Avatar = ""
|
ctxUser.Avatar = ""
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue