]> source.dussan.org Git - gitea.git/commitdiff
fix go get subpackage bug (#2584)
authorLunny Xiao <xiaolunwen@gmail.com>
Sat, 23 Sep 2017 13:24:24 +0000 (21:24 +0800)
committerLauris BH <lauris@nix.lv>
Sat, 23 Sep 2017 13:24:24 +0000 (16:24 +0300)
* fix go get subpackage bug

* merge the duplicated funtions

modules/context/repo.go
routers/repo/http.go

index 6446b859add05df8d54170b6dbfe6bba537db3d1..ae38c255678c56430a06d22889c96dcd58e41007 100644 (file)
@@ -134,21 +134,23 @@ func RetrieveBaseRepo(ctx *Context, repo *models.Repository) {
        }
 }
 
-// composeGoGetImport returns go-get-import meta content.
-func composeGoGetImport(owner, repo string) string {
+// ComposeGoGetImport returns go-get-import meta content.
+func ComposeGoGetImport(owner, repo string) string {
        return path.Join(setting.Domain, setting.AppSubURL, owner, repo)
 }
 
-// earlyResponseForGoGetMeta responses appropriate go-get meta with status 200
+// EarlyResponseForGoGetMeta responses appropriate go-get meta with status 200
 // if user does not have actual access to the requested repository,
 // or the owner or repository does not exist at all.
 // This is particular a workaround for "go get" command which does not respect
 // .netrc file.
-func earlyResponseForGoGetMeta(ctx *Context) {
+func EarlyResponseForGoGetMeta(ctx *Context) {
+       username := ctx.Params(":username")
+       reponame := ctx.Params(":reponame")
        ctx.PlainText(200, []byte(com.Expand(`<meta name="go-import" content="{GoGetImport} git {CloneLink}">`,
                map[string]string{
-                       "GoGetImport": composeGoGetImport(ctx.Params(":username"), strings.TrimSuffix(ctx.Params(":reponame"), ".git")),
-                       "CloneLink":   models.ComposeHTTPSCloneURL(ctx.Params(":username"), ctx.Params(":reponame")),
+                       "GoGetImport": ComposeGoGetImport(username, strings.TrimSuffix(reponame, ".git")),
+                       "CloneLink":   models.ComposeHTTPSCloneURL(username, reponame),
                })))
 }
 
@@ -216,7 +218,7 @@ func RepoIDAssignment() macaron.Handler {
                // Check access.
                if ctx.Repo.AccessMode == models.AccessModeNone {
                        if ctx.Query("go-get") == "1" {
-                               earlyResponseForGoGetMeta(ctx)
+                               EarlyResponseForGoGetMeta(ctx)
                                return
                        }
                        ctx.Handle(404, "no access right", err)
@@ -260,7 +262,7 @@ func RepoAssignment() macaron.Handler {
                        if err != nil {
                                if models.IsErrUserNotExist(err) {
                                        if ctx.Query("go-get") == "1" {
-                                               earlyResponseForGoGetMeta(ctx)
+                                               EarlyResponseForGoGetMeta(ctx)
                                                return
                                        }
                                        ctx.Handle(404, "GetUserByName", nil)
@@ -282,7 +284,7 @@ func RepoAssignment() macaron.Handler {
                                        RedirectToRepo(ctx, redirectRepoID)
                                } else if models.IsErrRepoRedirectNotExist(err) {
                                        if ctx.Query("go-get") == "1" {
-                                               earlyResponseForGoGetMeta(ctx)
+                                               EarlyResponseForGoGetMeta(ctx)
                                                return
                                        }
                                        ctx.Handle(404, "GetRepositoryByName", nil)
@@ -315,7 +317,7 @@ func RepoAssignment() macaron.Handler {
                // Check access.
                if ctx.Repo.AccessMode == models.AccessModeNone {
                        if ctx.Query("go-get") == "1" {
-                               earlyResponseForGoGetMeta(ctx)
+                               EarlyResponseForGoGetMeta(ctx)
                                return
                        }
                        ctx.Handle(404, "no access right", err)
@@ -443,7 +445,7 @@ func RepoAssignment() macaron.Handler {
                ctx.Data["PullRequestCtx"] = ctx.Repo.PullRequest
 
                if ctx.Query("go-get") == "1" {
-                       ctx.Data["GoGetImport"] = composeGoGetImport(owner.Name, repo.Name)
+                       ctx.Data["GoGetImport"] = ComposeGoGetImport(owner.Name, repo.Name)
                        prefix := setting.AppURL + path.Join(owner.Name, repo.Name, "src", ctx.Repo.BranchName)
                        ctx.Data["GoDocDirectory"] = prefix + "{/dir}"
                        ctx.Data["GoDocFile"] = prefix + "{/dir}/{file}#L{line}"
index 4265c80ac49d65343d24132da9b8c7fc00b7374d..3f6839ee3696b359bef909ff1ed70eafec34678a 100644 (file)
@@ -22,35 +22,15 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
-
-       "github.com/Unknwon/com"
 )
 
-func composeGoGetImport(owner, repo, sub string) string {
-       return path.Join(setting.Domain, setting.AppSubURL, owner, repo, sub)
-}
-
-// earlyResponseForGoGetMeta responses appropriate go-get meta with status 200
-// if user does not have actual access to the requested repository,
-// or the owner or repository does not exist at all.
-// This is particular a workaround for "go get" command which does not respect
-// .netrc file.
-func earlyResponseForGoGetMeta(ctx *context.Context, username, reponame, subpath string) {
-       ctx.PlainText(200, []byte(com.Expand(`<meta name="go-import" content="{GoGetImport} git {CloneLink}">`,
-               map[string]string{
-                       "GoGetImport": composeGoGetImport(username, reponame, subpath),
-                       "CloneLink":   models.ComposeHTTPSCloneURL(username, reponame),
-               })))
-}
-
 // HTTP implmentation git smart HTTP protocol
 func HTTP(ctx *context.Context) {
        username := ctx.Params(":username")
        reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git")
-       subpath := ctx.Params("*")
 
        if ctx.Query("go-get") == "1" {
-               earlyResponseForGoGetMeta(ctx, username, reponame, subpath)
+               context.EarlyResponseForGoGetMeta(ctx)
                return
        }