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