Browse Source

added endpoint to handle asset addition via the api

aeth 2 months ago
parent
commit
b8ab942954
4 changed files with 64 additions and 6 deletions
  1. 28 1
      cmd/seed/seed.go
  2. 34 0
      pkg/controller/admin_handlers.go
  3. 1 5
      pkg/helpers/storage.go
  4. 1 0
      pkg/routes/register.go

+ 28 - 1
cmd/seed/seed.go

@@ -15,7 +15,7 @@ import (
 	_ "github.com/mattn/go-sqlite3"
 )
 
-const DEFAULT_URL = "http://localhost:10277"
+const DEFAULT_URL = "http://horus-ctn01.void:10277"
 
 // authenticate and get the cookie needed to make updates
 func auth() string {
@@ -39,6 +39,33 @@ func main() {
 
 	client := http.Client{}
 	switch cmd {
+	case "asset":
+		b, err := os.ReadFile(pngFile)
+		if err != nil {
+			log.Fatal(err)
+		}
+		_, fileName := path.Split(pngFile)
+		item := helpers.Asset{
+			Name: fileName,
+			Data: b,
+		}
+		data, _ := json.Marshal(item)
+		req, _ := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/admin/asset", DEFAULT_URL), bytes.NewReader(data))
+		req.Header.Add("Content-Type", "application/json")
+		resp, err := client.Do(req)
+		if err != nil {
+			fmt.Println("There was an error performing the desired request: ", err.Error())
+			os.Exit(1)
+		}
+		if resp.StatusCode > 200 {
+			defer resp.Body.Close()
+			b, _ := io.ReadAll(resp.Body)
+			fmt.Println("There was an error performing the desired request: ", string(b))
+			os.Exit(2)
+		}
+		fmt.Println("navigation bar item upload successfully.")
+		os.Exit(0)
+
 	case "png":
 		fmt.Println(string(pngFile))
 		b, err := os.ReadFile(pngFile)

+ 34 - 0
pkg/controller/admin_handlers.go

@@ -138,9 +138,43 @@ func (c *Controller) AddNavbarItem(ctx *gin.Context) {
 		})
 		return
 	}
+
+	err = c.database.AddAsset(item.Link, item.Png)
+	if err != nil {
+		ctx.JSON(400, map[string]string{
+			"Error": err.Error(),
+		})
+		return
+	}
+
 	ctx.Data(200, "text", []byte("navbar item added."))
 }
 
+/*
+@Name AddAsset
+@Summary add an asset to the db
+@Tags admin
+@Router /admin/assets
+*/
+func (c *Controller) AddAsset(ctx *gin.Context) {
+	var item helpers.Asset
+	err := ctx.ShouldBind(&item)
+	if err != nil {
+		ctx.JSON(400, map[string]string{
+			"Error": err.Error(),
+		})
+		return
+	}
+	err = c.database.AddAsset(item.Name, item.Data)
+	if err != nil {
+		ctx.JSON(400, map[string]string{
+			"Error": err.Error(),
+		})
+		return
+	}
+
+}
+
 // @Name AdminPanel
 // @Summary serve the admin panel page
 // @Tags admin

+ 1 - 5
pkg/helpers/storage.go

@@ -88,6 +88,7 @@ type DocumentIO interface {
 	DeleteDocument(id Identifier) error
 	AddDocument(doc Document) error
 	AddImage(data []byte, title, desc string) error
+	AddAsset(name string, data []byte) error
 	AddAdminTableEntry(TableData, string) error
 	AddNavbarItem(NavBarItem) error
 	AddMenuItem(MenuLinkPair) error
@@ -512,11 +513,6 @@ func (s *SQLiteRepo) AddNavbarItem(item NavBarItem) error {
 		tx.Rollback()
 		return err
 	}
-	err = s.AddAsset(item.Link, item.Png)
-	if err != nil {
-		tx.Rollback()
-		return err
-	}
 	tx.Commit()
 	return nil
 

+ 1 - 0
pkg/routes/register.go

@@ -27,6 +27,7 @@ func Register(e *gin.Engine, domain string, redisPort string, redisAddr string,
 	priv.Use(c.IsAuthenticated)
 	priv.GET("/upload", c.ServeFileUpload)
 	priv.POST("/upload", c.SaveFile)
+	priv.POST("/asset", c.AddAsset)
 	priv.GET("/panel", c.AdminPanel)
 	priv.POST("/panel", c.AddAdminTableEntry)
 	priv.POST("/menu", c.AddMenuItem)