This is an automated email from the ASF dual-hosted git repository.

klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new d571e97c7 Support human readable project name (#7357)
d571e97c7 is described below

commit d571e97c7b353997a25c055274a3c0a9ed79b5d5
Author: Klesh Wong <[email protected]>
AuthorDate: Mon Apr 22 15:51:35 2024 +0800

    Support human readable project name (#7357)
    
    * feat: name your project whatever you like
    
    * docs: add comment explaing why router.UseRawPath is needed
    
    * fix: python test
---
 backend/server/api/api.go             | 3 +++
 backend/server/api/project/project.go | 4 ++--
 backend/server/api/router.go          | 4 ++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/backend/server/api/api.go b/backend/server/api/api.go
index 482adb960..50f5ceb2d 100644
--- a/backend/server/api/api.go
+++ b/backend/server/api/api.go
@@ -93,6 +93,9 @@ func CreateApiServer() *gin.Engine {
 func SetupApiServer(router *gin.Engine) {
        // Set gin mode
        gin.SetMode(basicRes.GetConfig("MODE"))
+       // Required for `/projects/hello%20%2F%20world` to be parsed properly 
with `/projects/:projectName`
+       // end up with `name = "hello / world"`
+       router.UseRawPath = true
 
        // Endpoint to proceed database migration
        router.GET("/proceed-db-migration", func(ctx *gin.Context) {
diff --git a/backend/server/api/project/project.go 
b/backend/server/api/project/project.go
index 3305974ac..e826c71d1 100644
--- a/backend/server/api/project/project.go
+++ b/backend/server/api/project/project.go
@@ -144,7 +144,7 @@ func PostProject(c *gin.Context) {
 // @Failure 500  {string} errcode.Error "Internal Error"
 // @Router /projects/:projectName [patch]
 func PatchProject(c *gin.Context) {
-       projectName := c.Param("projectName")[1:]
+       projectName := c.Param("projectName")
 
        var body map[string]interface{}
        err := c.ShouldBind(&body)
@@ -171,7 +171,7 @@ func PatchProject(c *gin.Context) {
 // @Failure 500  {string} errcode.Error "Internal Error"
 // @Router /projects/:projectName [delete]
 func DeleteProject(c *gin.Context) {
-       projectName := c.Param("projectName")[1:]
+       projectName := c.Param("projectName")
        err := services.DeleteProject(projectName)
        if err != nil {
                shared.ApiOutputError(c, errors.Default.Wrap(err, "error 
deleting project"))
diff --git a/backend/server/api/router.go b/backend/server/api/router.go
index 3698aef25..721517cf5 100644
--- a/backend/server/api/router.go
+++ b/backend/server/api/router.go
@@ -72,8 +72,8 @@ func RegisterRouter(r *gin.Engine, basicRes context.BasicRes) 
{
        // project api
        r.GET("/projects/:projectName", project.GetProject)
        r.GET("/projects/:projectName/check", project.GetProjectCheck)
-       r.PATCH("/projects/*projectName", project.PatchProject)
-       r.DELETE("/projects/*projectName", project.DeleteProject)
+       r.PATCH("/projects/:projectName", project.PatchProject)
+       r.DELETE("/projects/:projectName", project.DeleteProject)
        r.POST("/projects", project.PostProject)
        r.GET("/projects", project.GetProjects)
        // on board api

Reply via email to