* remove ReplaceLeft * remove GetRepositoryByOwnerAndName chainload to models.GetRepositoryByOwnerAndName * remove CheckUnitUser chainload to models.CheckUnitUser * remove MakeAssigneeList * remove DownloadDiff & DownloadPatch -> DownloadDiffOrPatch * remove GetRandomBytesAsBase64 * remove PushUpdateDeleteTags * remove GetUserByKeyID (you still can resolve user by "k, err := GetPublicKeyByID; userID := k.OwnerID") * remove BasicAuthEncode from struct package -> same function in modules/base/tools ! * remove UserID from api.utils * remove unused func from structs packagetags/v1.21.12.1
| @@ -81,23 +81,6 @@ func isUserAssignedToIssue(e Engine, issue *Issue, user *User) (isAssigned bool, | |||||
| return e.Get(&IssueAssignees{IssueID: issue.ID, AssigneeID: user.ID}) | return e.Get(&IssueAssignees{IssueID: issue.ID, AssigneeID: user.ID}) | ||||
| } | } | ||||
| // MakeAssigneeList concats a string with all names of the assignees. Useful for logs. | |||||
| func MakeAssigneeList(issue *Issue) (assigneeList string, err error) { | |||||
| err = issue.loadAssignees(x) | |||||
| if err != nil { | |||||
| return "", err | |||||
| } | |||||
| for in, assignee := range issue.Assignees { | |||||
| assigneeList += assignee.Name | |||||
| if len(issue.Assignees) > (in + 1) { | |||||
| assigneeList += ", " | |||||
| } | |||||
| } | |||||
| return | |||||
| } | |||||
| // ClearAssigneeByUserID deletes all assignments of an user | // ClearAssigneeByUserID deletes all assignments of an user | ||||
| func clearAssigneeByUserID(sess *xorm.Session, userID int64) (err error) { | func clearAssigneeByUserID(sess *xorm.Session, userID int64) (err error) { | ||||
| _, err = sess.Delete(&IssueAssignees{AssigneeID: userID}) | _, err = sess.Delete(&IssueAssignees{AssigneeID: userID}) | ||||
| @@ -9,20 +9,6 @@ import ( | |||||
| "strings" | "strings" | ||||
| ) | ) | ||||
| // PushUpdateDeleteTags updates a number of delete tags | |||||
| func PushUpdateDeleteTags(repo *Repository, tags []string) error { | |||||
| sess := x.NewSession() | |||||
| defer sess.Close() | |||||
| if err := sess.Begin(); err != nil { | |||||
| return fmt.Errorf("Unable to begin sess in PushUpdateDeleteTags: %v", err) | |||||
| } | |||||
| if err := pushUpdateDeleteTags(sess, repo, tags); err != nil { | |||||
| return err | |||||
| } | |||||
| return sess.Commit() | |||||
| } | |||||
| // PushUpdateDeleteTagsContext updates a number of delete tags with context | // PushUpdateDeleteTagsContext updates a number of delete tags with context | ||||
| func PushUpdateDeleteTagsContext(ctx DBContext, repo *Repository, tags []string) error { | func PushUpdateDeleteTagsContext(ctx DBContext, repo *Repository, tags []string) error { | ||||
| return pushUpdateDeleteTags(ctx.e, repo, tags) | return pushUpdateDeleteTags(ctx.e, repo, tags) | ||||
| @@ -1315,21 +1315,6 @@ func UserPath(userName string) string { | |||||
| return filepath.Join(setting.RepoRootPath, strings.ToLower(userName)) | return filepath.Join(setting.RepoRootPath, strings.ToLower(userName)) | ||||
| } | } | ||||
| // GetUserByKeyID get user information by user's public key id | |||||
| func GetUserByKeyID(keyID int64) (*User, error) { | |||||
| var user User | |||||
| has, err := x.Join("INNER", "public_key", "`public_key`.owner_id = `user`.id"). | |||||
| Where("`public_key`.id=?", keyID). | |||||
| Get(&user) | |||||
| if err != nil { | |||||
| return nil, err | |||||
| } | |||||
| if !has { | |||||
| return nil, ErrUserNotExist{0, "", keyID} | |||||
| } | |||||
| return &user, nil | |||||
| } | |||||
| func getUserByID(e Engine, id int64) (*User, error) { | func getUserByID(e Engine, id int64) (*User, error) { | ||||
| u := new(User) | u := new(User) | ||||
| has, err := e.ID(id).Get(u) | has, err := e.ID(id).Get(u) | ||||
| @@ -6,13 +6,11 @@ package base | |||||
| import ( | import ( | ||||
| "crypto/md5" | "crypto/md5" | ||||
| "crypto/rand" | |||||
| "crypto/sha1" | "crypto/sha1" | ||||
| "crypto/sha256" | "crypto/sha256" | ||||
| "encoding/base64" | "encoding/base64" | ||||
| "encoding/hex" | "encoding/hex" | ||||
| "fmt" | "fmt" | ||||
| "io" | |||||
| "net/http" | "net/http" | ||||
| "net/url" | "net/url" | ||||
| "os" | "os" | ||||
| @@ -75,18 +73,6 @@ func BasicAuthEncode(username, password string) string { | |||||
| return base64.StdEncoding.EncodeToString([]byte(username + ":" + password)) | return base64.StdEncoding.EncodeToString([]byte(username + ":" + password)) | ||||
| } | } | ||||
| // GetRandomBytesAsBase64 generates a random base64 string from n bytes | |||||
| func GetRandomBytesAsBase64(n int) string { | |||||
| bytes := make([]byte, 32) | |||||
| _, err := io.ReadFull(rand.Reader, bytes) | |||||
| if err != nil { | |||||
| log.Fatal("Error reading random bytes: %v", err) | |||||
| } | |||||
| return base64.RawURLEncoding.EncodeToString(bytes) | |||||
| } | |||||
| // 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 { | ||||
| @@ -6,15 +6,9 @@ | |||||
| package structs | package structs | ||||
| import ( | import ( | ||||
| "encoding/base64" | |||||
| "time" | "time" | ||||
| ) | ) | ||||
| // BasicAuthEncode generate base64 of basic auth head | |||||
| func BasicAuthEncode(user, pass string) string { | |||||
| return base64.StdEncoding.EncodeToString([]byte(user + ":" + pass)) | |||||
| } | |||||
| // AccessToken represents an API access token. | // AccessToken represents an API access token. | ||||
| // swagger:response AccessToken | // swagger:response AccessToken | ||||
| type AccessToken struct { | type AccessToken struct { | ||||
| @@ -1,20 +0,0 @@ | |||||
| // Copyright 2015 The Gogs Authors. All rights reserved. | |||||
| // Use of this source code is governed by a MIT-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package structs | |||||
| // Bool return address of bool value | |||||
| func Bool(v bool) *bool { | |||||
| return &v | |||||
| } | |||||
| // String return address of string value | |||||
| func String(v string) *string { | |||||
| return &v | |||||
| } | |||||
| // Int64 return address of int64 value | |||||
| func Int64(v int64) *int64 { | |||||
| return &v | |||||
| } | |||||
| @@ -437,31 +437,6 @@ func Sha1(str string) string { | |||||
| return base.EncodeSha1(str) | return base.EncodeSha1(str) | ||||
| } | } | ||||
| // ReplaceLeft replaces all prefixes 'oldS' in 's' with 'newS'. | |||||
| func ReplaceLeft(s, oldS, newS string) string { | |||||
| oldLen, newLen, i, n := len(oldS), len(newS), 0, 0 | |||||
| for ; i < len(s) && strings.HasPrefix(s[i:], oldS); n++ { | |||||
| i += oldLen | |||||
| } | |||||
| // simple optimization | |||||
| if n == 0 { | |||||
| return s | |||||
| } | |||||
| // allocating space for the new string | |||||
| curLen := n*newLen + len(s[i:]) | |||||
| replacement := make([]byte, curLen) | |||||
| j := 0 | |||||
| for ; j < n*newLen; j += newLen { | |||||
| copy(replacement[j:j+newLen], newS) | |||||
| } | |||||
| copy(replacement[j:], s[i:]) | |||||
| return string(replacement) | |||||
| } | |||||
| // RenderCommitMessage renders commit message with XSS-safe and special links. | // RenderCommitMessage renders commit message with XSS-safe and special links. | ||||
| func RenderCommitMessage(msg, urlPrefix string, metas map[string]string) template.HTML { | func RenderCommitMessage(msg, urlPrefix string, metas map[string]string) template.HTML { | ||||
| return RenderCommitMessageLink(msg, urlPrefix, "", metas) | return RenderCommitMessageLink(msg, urlPrefix, "", metas) | ||||
| @@ -13,14 +13,6 @@ import ( | |||||
| "code.gitea.io/gitea/modules/convert" | "code.gitea.io/gitea/modules/convert" | ||||
| ) | ) | ||||
| // UserID user ID of authenticated user, or 0 if not authenticated | |||||
| func UserID(ctx *context.APIContext) int64 { | |||||
| if ctx.User == nil { | |||||
| return 0 | |||||
| } | |||||
| return ctx.User.ID | |||||
| } | |||||
| // GetQueryBeforeSince return parsed time (unix format) from URL query's before and since | // GetQueryBeforeSince return parsed time (unix format) from URL query's before and since | ||||
| func GetQueryBeforeSince(ctx *context.APIContext) (before, since int64, err error) { | func GetQueryBeforeSince(ctx *context.APIContext) (before, since int64, err error) { | ||||
| qCreatedBefore := strings.Trim(ctx.Query("before"), " ") | qCreatedBefore := strings.Trim(ctx.Query("before"), " ") | ||||
| @@ -8,7 +8,6 @@ package private | |||||
| import ( | import ( | ||||
| "strings" | "strings" | ||||
| "code.gitea.io/gitea/models" | |||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/private" | "code.gitea.io/gitea/modules/private" | ||||
| "code.gitea.io/gitea/modules/setting" | "code.gitea.io/gitea/modules/setting" | ||||
| @@ -27,55 +26,6 @@ func CheckInternalToken(ctx *macaron.Context) { | |||||
| } | } | ||||
| } | } | ||||
| //GetRepositoryByOwnerAndName chainload to models.GetRepositoryByOwnerAndName | |||||
| func GetRepositoryByOwnerAndName(ctx *macaron.Context) { | |||||
| //TODO use repo.Get(ctx *context.APIContext) ? | |||||
| ownerName := ctx.Params(":owner") | |||||
| repoName := ctx.Params(":repo") | |||||
| repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName) | |||||
| if err != nil { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| return | |||||
| } | |||||
| ctx.JSON(200, repo) | |||||
| } | |||||
| //CheckUnitUser chainload to models.CheckUnitUser | |||||
| func CheckUnitUser(ctx *macaron.Context) { | |||||
| repoID := ctx.ParamsInt64(":repoid") | |||||
| userID := ctx.ParamsInt64(":userid") | |||||
| repo, err := models.GetRepositoryByID(repoID) | |||||
| if err != nil { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| return | |||||
| } | |||||
| var user *models.User | |||||
| if userID > 0 { | |||||
| user, err = models.GetUserByID(userID) | |||||
| if err != nil { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| return | |||||
| } | |||||
| } | |||||
| perm, err := models.GetUserRepoPermission(repo, user) | |||||
| if err != nil { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| return | |||||
| } | |||||
| ctx.JSON(200, perm.UnitAccessMode(models.UnitType(ctx.QueryInt("unitType")))) | |||||
| } | |||||
| // RegisterRoutes registers all internal APIs routes to web application. | // RegisterRoutes registers all internal APIs routes to web application. | ||||
| // These APIs will be invoked by internal commands for example `gitea serv` and etc. | // These APIs will be invoked by internal commands for example `gitea serv` and etc. | ||||
| func RegisterRoutes(m *macaron.Macaron) { | func RegisterRoutes(m *macaron.Macaron) { | ||||
| @@ -19,16 +19,6 @@ import ( | |||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| ) | ) | ||||
| // DownloadDiff will write the patch for the pr to the writer | |||||
| func DownloadDiff(pr *models.PullRequest, w io.Writer, patch bool) error { | |||||
| return DownloadDiffOrPatch(pr, w, false) | |||||
| } | |||||
| // DownloadPatch will write the patch for the pr to the writer | |||||
| func DownloadPatch(pr *models.PullRequest, w io.Writer, patch bool) error { | |||||
| return DownloadDiffOrPatch(pr, w, true) | |||||
| } | |||||
| // DownloadDiffOrPatch will write the patch for the pr to the writer | // DownloadDiffOrPatch will write the patch for the pr to the writer | ||||
| func DownloadDiffOrPatch(pr *models.PullRequest, w io.Writer, patch bool) error { | func DownloadDiffOrPatch(pr *models.PullRequest, w io.Writer, patch bool) error { | ||||
| // Clone base repo. | // Clone base repo. | ||||