Skip to content

Commit

Permalink
Add API routes to explore integrations content in ui
Browse files Browse the repository at this point in the history
  • Loading branch information
nemunaire committed Nov 17, 2024
1 parent adefc34 commit a5bd8c2
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
78 changes: 78 additions & 0 deletions internal/ui/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"time"

"github.com/ddvk/rmfakecloud/internal/common"
"github.com/ddvk/rmfakecloud/internal/integrations"
"github.com/ddvk/rmfakecloud/internal/model"
"github.com/ddvk/rmfakecloud/internal/storage"
"github.com/ddvk/rmfakecloud/internal/ui/viewmodel"
Expand Down Expand Up @@ -648,3 +649,80 @@ func (app *ReactAppWrapper) deleteIntegration(c *gin.Context) {

c.AbortWithStatus(http.StatusNotFound)
}

func (app *ReactAppWrapper) exploreIntegration(c *gin.Context) {
uid := c.GetString(userIDContextKey)

integrationID := common.ParamS(intIDParam, c)

integrationProvider, err := integrations.GetIntegrationProvider(app.userStorer, uid, integrationID)
if err != nil {
log.Error(err)
c.AbortWithStatus(http.StatusInternalServerError)
return
}

folder := common.ParamS("path", c)
if folder == "" {
folder = "root"
}

response, err := integrationProvider.List(folder, 2)
if err != nil {
log.Error(err)
c.AbortWithStatus(http.StatusInternalServerError)
return
}

c.JSON(http.StatusOK, response)
}

func (app *ReactAppWrapper) getMetadataIntegration(c *gin.Context) {
uid := c.GetString(userIDContextKey)

integrationID := common.ParamS(intIDParam, c)

integrationProvider, err := integrations.GetIntegrationProvider(app.userStorer, uid, integrationID)
if err != nil {
log.Error(err)
c.AbortWithStatus(http.StatusInternalServerError)
return
}

fileid := common.ParamS("path", c)

response, err := integrationProvider.GetMetadata(fileid)
if err != nil {
log.Error(err)
c.AbortWithStatus(http.StatusInternalServerError)
return
}

c.JSON(http.StatusOK, response)
}

func (app *ReactAppWrapper) downloadThroughIntegration(c *gin.Context) {
uid := c.GetString(userIDContextKey)

integrationID := common.ParamS(intIDParam, c)

integrationProvider, err := integrations.GetIntegrationProvider(app.userStorer, uid, integrationID)
if err != nil {
log.Error(err)
c.AbortWithStatus(http.StatusInternalServerError)
return
}

fileid := common.ParamS("path", c)

response, size, err := integrationProvider.Download(fileid)
if err != nil {
log.Error(err)
c.AbortWithStatus(http.StatusInternalServerError)
return
}

defer response.Close()

c.DataFromReader(http.StatusOK, size, "", response, nil)
}
4 changes: 4 additions & 0 deletions internal/ui/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ func (app *ReactAppWrapper) RegisterRoutes(router *gin.Engine) {
auth.PUT("integrations/:intid", app.updateIntegration)
auth.DELETE("integrations/:intid", app.deleteIntegration)

auth.GET("integrations/:intid/explore/*path", app.exploreIntegration)
auth.GET("integrations/:intid/metadata/*path", app.getMetadataIntegration)
auth.GET("integrations/:intid/download/*path", app.downloadThroughIntegration)

//admin
admin := auth.Group("")
admin.Use(app.adminMiddleware())
Expand Down

0 comments on commit a5bd8c2

Please sign in to comment.