add method to handlers
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"kontor-api-gin/internal/config"
|
||||
"kontor-api-gin/internal/models"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"resty.dev/v3"
|
||||
)
|
||||
@@ -220,21 +218,6 @@ func UpdateData(target config.Server, path string, v any) {
|
||||
PostJSON(client, target, token, config.Config.ApiVersion, path, v, &result)
|
||||
}
|
||||
|
||||
func WriteJson(data *ExportData, fileName string) error {
|
||||
jsonData, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
slog.Info("JSON MarshalIndent failed", "Error:", err)
|
||||
return err
|
||||
}
|
||||
// Write bytes to file
|
||||
err = os.WriteFile(fileName, jsonData, 0644)
|
||||
if err != nil {
|
||||
slog.Info("Error writing file:", "Error", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetJSON(client *resty.Client, token string, server config.Server, path string, v any) {
|
||||
url := fmt.Sprintf("%s/%s/%s", server.Url, config.Config.ApiVersion, path)
|
||||
if config.Verbose > 2 {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"os"
|
||||
)
|
||||
|
||||
func WriteJson(data *ExportData, fileName string) error {
|
||||
jsonData, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
slog.Info("JSON MarshalIndent failed", "Error:", err)
|
||||
return err
|
||||
}
|
||||
// Write bytes to file
|
||||
err = os.WriteFile(fileName, jsonData, 0644)
|
||||
if err != nil {
|
||||
slog.Info("Error writing file:", "Error", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -7,12 +7,9 @@ import (
|
||||
"log/slog"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
"resty.dev/v3"
|
||||
)
|
||||
|
||||
var filename string
|
||||
|
||||
var exportCmd = &cobra.Command{
|
||||
Use: "export",
|
||||
Short: "Export Kontor Database",
|
||||
@@ -28,7 +25,7 @@ var exportCmd = &cobra.Command{
|
||||
localServer := config.Config.Server[config.ServerName]
|
||||
|
||||
export, _ := api.GetData(localServer, config.Config.ApiVersion)
|
||||
err := api.WriteJson(export, filename)
|
||||
err := api.WriteJson(export, config.FileName)
|
||||
if err != nil {
|
||||
slog.Info("WriteJon failed", "Error:", err)
|
||||
}
|
||||
@@ -38,9 +35,4 @@ var exportCmd = &cobra.Command{
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(exportCmd)
|
||||
|
||||
exportCmd.PersistentFlags().StringVarP(&filename, "file", "f", "/home/tpeetz/.sync/media/data-gin.json", "Filename to store data")
|
||||
viper.BindPFlag("file", exportCmd.PersistentFlags().Lookup("file"))
|
||||
exportCmd.PersistentFlags().StringVarP(&config.Config.ApiVersion, "api", "a", "api/v1", "API Version")
|
||||
viper.BindPFlag("api", exportCmd.PersistentFlags().Lookup("api"))
|
||||
}
|
||||
|
||||
@@ -35,10 +35,21 @@ func init() {
|
||||
rootCmd.PersistentFlags().StringVarP(&config.CfgFile, "config", "c", "/home/tpeetz/.config/kli.yaml", "config file")
|
||||
rootCmd.PersistentFlags().CountVarP(&config.Verbose, "verbose", "v", "increase verbosity (-v, -vv, -vvv)")
|
||||
viper.BindPFlag("config", rootCmd.PersistentFlags().Lookup("config"))
|
||||
|
||||
exportCmd.Flags().StringVarP(&config.ServerName, "servername", "s", "local", "Define server to get Kontor items")
|
||||
updateTitleCmd.Flags().StringVarP(&config.ServerName, "servername", "s", "local", "Define server to get Kontor items")
|
||||
addLinksCmd.Flags().StringVarP(&config.ServerName, "servername", "s", "local", "Define server to get Kontor items")
|
||||
|
||||
addLinksCmd.Flags().Var(&config.Mediatype, "mediatype", "MediaType: allowed values are: media, videos, lofi")
|
||||
|
||||
exportCmd.PersistentFlags().StringVarP(&config.FileName, "file", "f", "/home/tpeetz/.sync/media/data-gin.json", "Filename to store data")
|
||||
importCmd.PersistentFlags().StringVarP(&config.FileName, "file", "f", "/home/tpeetz/.sync/media/data-gin.json", "Filename to import data from")
|
||||
viper.BindPFlag("file", exportCmd.PersistentFlags().Lookup("file"))
|
||||
|
||||
exportCmd.PersistentFlags().StringVarP(&config.Config.ApiVersion, "api", "a", "api/v1", "API Version")
|
||||
viper.BindPFlag("api", exportCmd.PersistentFlags().Lookup("api"))
|
||||
|
||||
viper.BindPFlag("server", exportCmd.PersistentFlags().Lookup("server"))
|
||||
|
||||
cobra.OnInitialize(config.InitCliConfig)
|
||||
}
|
||||
|
||||
@@ -10,14 +10,25 @@ import (
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type MediaType string
|
||||
var (
|
||||
CfgFile string
|
||||
Verbose int
|
||||
Overwrite bool
|
||||
ServerName string
|
||||
Mediatype MediaType
|
||||
Config CliConfig
|
||||
DryRun bool
|
||||
FileName string
|
||||
)
|
||||
|
||||
const (
|
||||
mediaTypeMedia MediaType = "media"
|
||||
mediaTypeVideo MediaType = "video"
|
||||
mediaTypeLofi MediaType = "lofi"
|
||||
mediaTypeLofi MediaType = "lofi"
|
||||
)
|
||||
|
||||
type MediaType string
|
||||
|
||||
func (e *MediaType) String() string {
|
||||
return string(*e)
|
||||
}
|
||||
@@ -37,23 +48,13 @@ func (e *MediaType) Type() string {
|
||||
}
|
||||
|
||||
func myEnumCompletion(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
return []string{
|
||||
"media\thelp text for media",
|
||||
"video\thelp text for video",
|
||||
"lofi\thelp text for lofi",
|
||||
}, cobra.ShellCompDirectiveDefault
|
||||
return []string{
|
||||
"media\thelp text for media",
|
||||
"video\thelp text for video",
|
||||
"lofi\thelp text for lofi",
|
||||
}, cobra.ShellCompDirectiveDefault
|
||||
}
|
||||
|
||||
var (
|
||||
CfgFile string
|
||||
Verbose int
|
||||
Overwrite bool
|
||||
ServerName string
|
||||
Mediatype MediaType
|
||||
Config CliConfig
|
||||
DryRun bool
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Url string `mapstructure:"url"`
|
||||
Username string `mapstructure:"username"`
|
||||
|
||||
@@ -69,11 +69,65 @@ func (handler *MediaFileHandler) ListPage(c *gin.Context) {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
c.HTML(http.StatusOK, "mediafiles", gin.H{
|
||||
"title": "Kontor MediaFiles",
|
||||
"version": "0.4.0",
|
||||
"message": "MediaFiles...",
|
||||
"mediafiles": files,
|
||||
"user": user,
|
||||
})
|
||||
data := globals.GetDefaultValues(user, "MediaFiles...")
|
||||
data["title"] = "Kontor MediaFiles"
|
||||
data["mediafiles"] = files
|
||||
c.HTML(http.StatusOK, "mediafiles", data)
|
||||
}
|
||||
|
||||
func (handler *MediaFileHandler) EditPage(c *gin.Context) {
|
||||
session := sessions.Default(c)
|
||||
user := session.Get(globals.UserKey)
|
||||
id := c.Param("id")
|
||||
logger := slog.Get(c)
|
||||
media_file, err := handler.Service.Get(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
logger.Info("MediaLoFiHandler#EditPage", "error", err.Error())
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
logger.Info("MediaLoFiHandler#EditPage", "media_file", media_file)
|
||||
data := globals.GetDefaultValues(user, "MediaFile Details...")
|
||||
data["lofi"] = media_file
|
||||
c.HTML(http.StatusOK, "lofi_detail", data)
|
||||
}
|
||||
|
||||
func (handler *MediaFileHandler) UpdatePage(c *gin.Context) {
|
||||
session := sessions.Default(c)
|
||||
user := session.Get(globals.UserKey)
|
||||
id := c.Param("id")
|
||||
logger := slog.Get(c)
|
||||
media_file, err := handler.Service.Get(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
logger.Info("MediaFileHandler#UpdatePage", "error", err.Error())
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
var form models.MediaFileForm
|
||||
if err := c.ShouldBind(&form); err != nil {
|
||||
logger.Info("MediaFileHandler#UpdatePage", "error", err.Error())
|
||||
data := globals.GetDefaultValues(user, "MediaFile Details...")
|
||||
data["Form"] = form
|
||||
data["Errors"] = err.Error()
|
||||
c.HTML(http.StatusBadRequest, "lofi_detail", data)
|
||||
return
|
||||
}
|
||||
logger.Info("MediaFileHandler#UpdatePage", "media_file", media_file)
|
||||
//handler.Service.Update(c.Request.Context(), form.ConvertFormToMediaFileDTO())
|
||||
c.Redirect(http.StatusFound, "web/media-files")
|
||||
}
|
||||
|
||||
func (handler *MediaFileHandler) DeletePage(c *gin.Context) {
|
||||
//session := sessions.Default(c)
|
||||
//user := session.Get(globals.UserKey)
|
||||
id := c.Param("id")
|
||||
logger := slog.Get(c)
|
||||
err := handler.Service.Delete(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
logger.Info("MediaFileHandler#DeletePage", "error", err.Error())
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
logger.Info("MediaFileHandler#DeletePage", "lofi", id)
|
||||
c.Redirect(http.StatusFound, "web/media-files")
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ func (handler *MediaVideoHandler) ListPage(c *gin.Context) {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
logger.Info("MediaLoFiHandler#ListPage", "videos count", len(videos))
|
||||
logger.Info("MediaVideoHandler#ListPage", "videos count", len(videos))
|
||||
data := globals.GetDefaultValues(user, "MediaVideos...")
|
||||
data["title"] = "Kontor MediaVideos"
|
||||
data["mediavideos"] = videos
|
||||
|
||||
@@ -16,7 +16,7 @@ func RequestID(skipPaths []string) gin.HandlerFunc {
|
||||
id = uuid.NewString()
|
||||
}
|
||||
if len(skipPaths) > 0 && !slices.Contains(skipPaths, c.Request.URL.Path) {
|
||||
logger.Info("RequestID", "id", id)
|
||||
logger.Info("RequestID", "id", id, "path", c.Request.URL.Path)
|
||||
}
|
||||
c.Set("request_id", id)
|
||||
c.Writer.Header().Set("X-Request-ID", id)
|
||||
|
||||
@@ -30,6 +30,16 @@ type MediaFileAdd struct {
|
||||
Url string `json:"url"`
|
||||
}
|
||||
|
||||
type MediaFileForm struct {
|
||||
Title string `form:"title" binding:"required"`
|
||||
Url string `form:"url" binding:"required"`
|
||||
}
|
||||
|
||||
func (form *MediaFileForm) ConvertFormToMediaFileDTO() MediaFileDTO {
|
||||
media_file := MediaFileDTO{}
|
||||
return media_file
|
||||
}
|
||||
|
||||
type MediaFileDTO struct {
|
||||
ID string `json:"id" binding:"required"`
|
||||
CreatedAt helpers.KontorTime `json:"created_date"`
|
||||
|
||||
@@ -63,6 +63,8 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com
|
||||
m.POST("/actors/:id/edit", media.MediaActorHandler.UpdatePage)
|
||||
m.GET("/articles", media.MediaFileHandler.ListPage)
|
||||
m.GET("/media-files", media.MediaFileHandler.ListPage)
|
||||
m.GET("/media-files/:id", media.MediaFileHandler.EditPage)
|
||||
m.POST("/media-files/:id", media.MediaFileHandler.UpdatePage)
|
||||
m.GET("/media-videos", media.MediaVideoHandler.ListPage)
|
||||
m.GET("/media-lofis", media.MediaLoFiHandler.ListPage)
|
||||
m.GET("/media-lofis/:id/edit", media.MediaLoFiHandler.EditPage)
|
||||
|
||||
Reference in New Issue
Block a user