From 5b278e2e8623f915d775698c3458bb850694cfa1 Mon Sep 17 00:00:00 2001 From: Thomas Miceli <27960254+thomiceli@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:43:55 +0200 Subject: [PATCH] Change gist init url to /init (#109) --- internal/db/gist.go | 4 ++-- internal/git/commands.go | 2 +- internal/git/commands_test.go | 9 +++------ internal/memdb/memdb.go | 20 ++++++++++---------- internal/web/git_http.go | 14 +++++++------- internal/web/server.go | 4 ++-- internal/web/util.go | 2 +- 7 files changed, 26 insertions(+), 29 deletions(-) diff --git a/internal/db/gist.go b/internal/db/gist.go index fdd56ab..aba16c8 100644 --- a/internal/db/gist.go +++ b/internal/db/gist.go @@ -266,8 +266,8 @@ func (gist *Gist) InitRepository() error { return git.InitRepository(gist.User.Username, gist.Uuid) } -func (gist *Gist) InitRepositoryViaNewPush(ctx echo.Context) error { - return git.InitRepositoryViaNewPush(gist.User.Username, gist.Uuid, ctx) +func (gist *Gist) InitRepositoryViaInit(ctx echo.Context) error { + return git.InitRepositoryViaInit(gist.User.Username, gist.Uuid, ctx) } func (gist *Gist) DeleteRepository() error { diff --git a/internal/git/commands.go b/internal/git/commands.go index 502c0dc..1b45781 100644 --- a/internal/git/commands.go +++ b/internal/git/commands.go @@ -67,7 +67,7 @@ func InitRepository(user string, gist string) error { return createDotGitFiles(repositoryPath) } -func InitRepositoryViaNewPush(user string, gist string, ctx echo.Context) error { +func InitRepositoryViaInit(user string, gist string, ctx echo.Context) error { repositoryPath := RepositoryPath(user, gist) if err := InitRepository(user, gist); err != nil { diff --git a/internal/git/commands_test.go b/internal/git/commands_test.go index cc510a0..c879430 100644 --- a/internal/git/commands_test.go +++ b/internal/git/commands_test.go @@ -2,7 +2,6 @@ package git import ( "github.com/labstack/echo/v4" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/thomiceli/opengist/internal/config" "net/http" @@ -248,7 +247,7 @@ func TestTruncate(t *testing.T) { require.Equal(t, 2, len(content), "Content size is not correct") } -func TestInitViaNewPush(t *testing.T) { +func TestInitViaGitInit(t *testing.T) { setup(t) defer teardown(t) @@ -267,11 +266,9 @@ func TestInitViaNewPush(t *testing.T) { user := "testUser" gist := "testGist" - // Call InitRepositoryViaNewPush - err := InitRepositoryViaNewPush(user, gist, c) + err := InitRepositoryViaInit(user, gist, c) - // Perform assertions - assert.NoError(t, err) + require.NoError(t, err) } func commitToBare(t *testing.T, user string, gist string, files map[string]string) { diff --git a/internal/memdb/memdb.go b/internal/memdb/memdb.go index 6929b5d..3b8a952 100644 --- a/internal/memdb/memdb.go +++ b/internal/memdb/memdb.go @@ -5,7 +5,7 @@ import ogdb "github.com/thomiceli/opengist/internal/db" var db *memdb.MemDB -type GistPush struct { +type GistInit struct { UserID uint Gist *ogdb.Gist } @@ -14,8 +14,8 @@ func Setup() error { var err error schema := &memdb.DBSchema{ Tables: map[string]*memdb.TableSchema{ - "gist_push": { - Name: "gist_push", + "gist_init": { + Name: "gist_init", Indexes: map[string]*memdb.IndexSchema{ "id": { Name: "id", @@ -35,9 +35,9 @@ func Setup() error { return nil } -func InsertGistPush(userId uint, gist *ogdb.Gist) error { +func InsertGistInit(userId uint, gist *ogdb.Gist) error { txn := db.Txn(true) - if err := txn.Insert("gist_push", &GistPush{ + if err := txn.Insert("gist_init", &GistInit{ UserID: userId, Gist: gist, }); err != nil { @@ -49,11 +49,11 @@ func InsertGistPush(userId uint, gist *ogdb.Gist) error { return nil } -func GetGistPushAndDelete(userId uint) (*GistPush, error) { +func GetGistInitAndDelete(userId uint) (*GistInit, error) { txn := db.Txn(true) defer txn.Abort() - raw, err := txn.First("gist_push", "id", userId) + raw, err := txn.First("gist_init", "id", userId) if err != nil { return nil, err } @@ -62,11 +62,11 @@ func GetGistPushAndDelete(userId uint) (*GistPush, error) { return nil, nil } - gistPush := raw.(*GistPush) - if err := txn.Delete("gist_push", gistPush); err != nil { + gistInit := raw.(*GistInit) + if err := txn.Delete("gist_init", gistInit); err != nil { return nil, err } txn.Commit() - return gistPush, nil + return gistInit, nil } diff --git a/internal/web/git_http.go b/internal/web/git_http.go index 3fd2b30..a514d8d 100644 --- a/internal/web/git_http.go +++ b/internal/web/git_http.go @@ -51,8 +51,8 @@ func gitHttp(ctx echo.Context) error { gist := getData(ctx, "gist").(*db.Gist) - isPushNew := strings.HasPrefix(ctx.Request().URL.Path, "/push/info/refs") - isPushReceive := strings.HasPrefix(ctx.Request().URL.Path, "/push/git-receive-pack") + isInit := strings.HasPrefix(ctx.Request().URL.Path, "/init/info/refs") + isInitReceive := strings.HasPrefix(ctx.Request().URL.Path, "/init/git-receive-pack") isInfoRefs := strings.HasSuffix(route.gitUrl, "/info/refs$") isPull := ctx.QueryParam("service") == "git-upload-pack" || strings.HasSuffix(ctx.Request().URL.Path, "git-upload-pack") || @@ -92,7 +92,7 @@ func gitHttp(ctx echo.Context) error { return basicAuth(ctx) } - if !isPushNew && !isPushReceive { + if !isInit && !isInitReceive { if gist.ID == 0 { return plainText(ctx, 404, "Check your credentials or make sure you have access to the Gist") } @@ -122,7 +122,7 @@ func gitHttp(ctx echo.Context) error { return errorRes(401, "Invalid credentials", nil) } - if isPushNew { + if isInit { gist = new(db.Gist) gist.UserID = user.ID gist.User = *user @@ -133,7 +133,7 @@ func gitHttp(ctx echo.Context) error { gist.Uuid = strings.Replace(uuidGist.String(), "-", "", -1) gist.Title = "gist:" + gist.Uuid - if err = gist.InitRepositoryViaNewPush(ctx); err != nil { + if err = gist.InitRepositoryViaInit(ctx); err != nil { return errorRes(500, "Cannot init repository in the file system", err) } @@ -141,13 +141,13 @@ func gitHttp(ctx echo.Context) error { return errorRes(500, "Cannot init repository in database", err) } - if err := memdb.InsertGistPush(user.ID, gist); err != nil { + if err := memdb.InsertGistInit(user.ID, gist); err != nil { return errorRes(500, "Cannot save the URL for the new Gist", err) } setData(ctx, "gist", gist) } else { - gistFromMemdb, err := memdb.GetGistPushAndDelete(user.ID) + gistFromMemdb, err := memdb.GetGistInitAndDelete(user.ID) if err != nil { return errorRes(500, "Cannot get the gist link from the in memory database", err) } diff --git a/internal/web/server.go b/internal/web/server.go index f95191b..33332f9 100644 --- a/internal/web/server.go +++ b/internal/web/server.go @@ -159,7 +159,7 @@ func NewServer(isDev bool) *Server { return nil }, })) - e.Use(middleware.Recover()) + //e.Use(middleware.Recover()) e.Use(middleware.Secure()) e.Renderer = &Template{ @@ -235,7 +235,7 @@ func NewServer(isDev bool) *Server { } if config.C.HttpGit { - e.Any("/push/*", gitHttp, gistNewPushSoftInit) + e.Any("/init/*", gitHttp, gistNewPushSoftInit) } g1.GET("/all", allGists, checkRequireLogin) diff --git a/internal/web/util.go b/internal/web/util.go index df506c7..dadc7dd 100644 --- a/internal/web/util.go +++ b/internal/web/util.go @@ -168,7 +168,7 @@ func validateReservedKeywords(fl validator.FieldLevel) bool { name := fl.Field().String() restrictedNames := map[string]struct{}{} - for _, restrictedName := range []string{"assets", "register", "login", "logout", "settings", "admin-panel", "all", "search", "push"} { + for _, restrictedName := range []string{"assets", "register", "login", "logout", "settings", "admin-panel", "all", "search", "init"} { restrictedNames[restrictedName] = struct{}{} }