This commit is contained in:
@@ -115,18 +115,20 @@ var Registry map[string]any
|
||||
|
||||
func GetToken(client *resty.Client, server config.Server) (token string) {
|
||||
var login LoginResponse
|
||||
|
||||
_, err := client.R().
|
||||
SetBody(Login{
|
||||
Email: server.Username,
|
||||
Password: server.Password,
|
||||
}).
|
||||
SetHeader("Accept", "application/json").
|
||||
SetResult(&login).
|
||||
Post(fmt.Sprintf("%s/api/login", server.Url))
|
||||
if err != nil {
|
||||
slog.Info("Health", "error", err.Error())
|
||||
body := Login{
|
||||
Email: server.Username,
|
||||
Password: server.Password,
|
||||
}
|
||||
PostJSON(client, server, "", "api", "login", body, &login)
|
||||
|
||||
// _, err := client.R().
|
||||
// SetBody(body).
|
||||
// SetHeader("Accept", "application/json").
|
||||
// SetResult(&login).
|
||||
// Post(fmt.Sprintf("%s/api/login", server.Url))
|
||||
// if err != nil {
|
||||
// slog.Info("Health", "error", err.Error())
|
||||
// }
|
||||
if config.Verbose > 2 {
|
||||
slog.Info("login", "token", login.Token)
|
||||
}
|
||||
@@ -134,14 +136,12 @@ func GetToken(client *resty.Client, server config.Server) (token string) {
|
||||
}
|
||||
|
||||
func GetData(server config.Server, apiVersion string) (data *ExportData, err error) {
|
||||
var login LoginResponse
|
||||
|
||||
client := resty.New()
|
||||
client.SetLoggerWarnLevel(true)
|
||||
PostJSON(client, server, "api/login", &login)
|
||||
token := GetToken(client, server)
|
||||
|
||||
for path, value := range Registry {
|
||||
GetJSON(client, login.Token, server, path, value)
|
||||
GetJSON(client, token, server, path, value)
|
||||
}
|
||||
export := ExportData{
|
||||
Sport: Sports,
|
||||
@@ -205,11 +205,19 @@ func GetJSON(client *resty.Client, token string, server config.Server, path stri
|
||||
if config.Verbose > 2 {
|
||||
slog.Info("GetJSON", "url", url)
|
||||
}
|
||||
_, err := client.R().
|
||||
SetAuthToken(token).
|
||||
SetHeader("Accept", "application/json").
|
||||
SetResult(v).
|
||||
Get(url)
|
||||
var err error
|
||||
if token == "" {
|
||||
_, err = client.R().
|
||||
SetHeader("Accept", "application/json").
|
||||
SetResult(v).
|
||||
Get(url)
|
||||
} else {
|
||||
_, err = client.R().
|
||||
SetAuthToken(token).
|
||||
SetHeader("Accept", "application/json").
|
||||
SetResult(v).
|
||||
Get(url)
|
||||
}
|
||||
if err != nil {
|
||||
slog.Info(url, "error", err.Error())
|
||||
}
|
||||
@@ -218,16 +226,14 @@ func GetJSON(client *resty.Client, token string, server config.Server, path stri
|
||||
}
|
||||
}
|
||||
|
||||
func PostJSON(client *resty.Client, server config.Server, path string, v any) {
|
||||
url := fmt.Sprintf("%s/%s", server.Url, path)
|
||||
func PostJSON(client *resty.Client, server config.Server, token string, apiVersion string, path string, body any, v any) {
|
||||
url := fmt.Sprintf("%s/%s/%s", server.Url, apiVersion, path)
|
||||
if config.Verbose > 2 {
|
||||
slog.Info("PostJSON", "url", url)
|
||||
}
|
||||
_, err := client.R().
|
||||
SetBody(Login{
|
||||
Email: server.Username,
|
||||
Password: server.Password,
|
||||
}).
|
||||
response, err := client.R().
|
||||
SetAuthToken(token).
|
||||
SetBody(body).
|
||||
SetHeader("Accept", "application/json").
|
||||
SetResult(v).
|
||||
Post(url)
|
||||
@@ -235,7 +241,7 @@ func PostJSON(client *resty.Client, server config.Server, path string, v any) {
|
||||
slog.Info("PostJSON", "error", err.Error())
|
||||
}
|
||||
if config.Verbose > 2 {
|
||||
slog.Info(url, "token", v)
|
||||
slog.Info("PostJSON", "response", response)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"kontor-api-gin/internal/api"
|
||||
"kontor-api-gin/internal/config"
|
||||
"kontor-api-gin/internal/helpers"
|
||||
"kontor-api-gin/internal/models"
|
||||
"log/slog"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
@@ -23,7 +26,17 @@ var updateTitleCmd = &cobra.Command{
|
||||
api.GetJSON(client, token, localServer, "media/lofis", &api.Medialofis)
|
||||
for _, lofi := range api.Medialofis {
|
||||
if lofi.Review {
|
||||
slog.Info("get title for Url", "url", lofi.WebLink)
|
||||
title, err := helpers.GetVideoTitle(lofi.WebLink)
|
||||
var updated models.MediaLoFiDTO
|
||||
if err != nil {
|
||||
slog.Info("get title for Url", "url", lofi.WebLink, "error", err.Error())
|
||||
} else {
|
||||
slog.Info("get title for Url", "url", lofi.WebLink, "title", title)
|
||||
lofi.Title = title
|
||||
lofi.Review = false
|
||||
api.PostJSON(client, localServer, token, config.Config.ApiVersion, fmt.Sprintf("media/lofis/%s", lofi.ID), lofi, &updated)
|
||||
slog.Info("MediaLoi updated", "MediaLoFi", updated)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-contrib/slog"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
@@ -58,6 +59,22 @@ func (handler *MediaLoFiHandler) Add(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, lofi)
|
||||
}
|
||||
|
||||
func (handler *MediaLoFiHandler) Update(c *gin.Context) {
|
||||
var input models.MediaLoFiDTO
|
||||
|
||||
if err := c.ShouldBindJSON(&input); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
lofi, err := handler.Service.Update(c.Request.Context(), input)
|
||||
if err != nil {
|
||||
logger := slog.Get(c)
|
||||
logger.Info("MediaLoFiHandler#Update", "error", err.Error())
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": "lofi not updated"})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, lofi)
|
||||
}
|
||||
func (handler *MediaLoFiHandler) Delete(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
err := handler.Service.Delete(c.Request.Context(), id)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package helpers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
@@ -20,3 +24,46 @@ func StripUrl(webLink string, keepParam string) string {
|
||||
u.RawQuery = values.Encode()
|
||||
return u.String()
|
||||
}
|
||||
|
||||
func GetParam(webLink string, param string) string {
|
||||
u, err := url.Parse(webLink)
|
||||
if err != nil {
|
||||
slog.Info("StripUrl", "error", err)
|
||||
return webLink
|
||||
}
|
||||
values := u.Query()
|
||||
for key := range values {
|
||||
if key == param {
|
||||
return values.Get(key)
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type OEmbedResponse struct {
|
||||
Title string `json:"title"`
|
||||
}
|
||||
|
||||
func GetVideoTitle(videoUrl string) (string, error) {
|
||||
videoID := GetParam(videoUrl, "v")
|
||||
// Construct the oEmbed URL
|
||||
url := fmt.Sprintf("https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=%s&format=json", videoID)
|
||||
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var data OEmbedResponse
|
||||
if err := json.Unmarshal(body, &data); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return data.Title, nil
|
||||
}
|
||||
|
||||
@@ -20,6 +20,17 @@ type MediaLoFi struct {
|
||||
FileName string `gorm:"column:file_name" json:"file_name"`
|
||||
}
|
||||
|
||||
func (media_lofi *MediaLoFi) Update(update MediaLoFiDTO) {
|
||||
media_lofi.CreatedAt = update.CreatedAt.Time
|
||||
media_lofi.UpdatedAt = time.Now()
|
||||
media_lofi.Version = media_lofi.Version + 1
|
||||
media_lofi.WebLink = update.WebLink
|
||||
media_lofi.Review = update.Review
|
||||
media_lofi.ShouldDownload = update.ShouldDownload
|
||||
media_lofi.Title = update.Title
|
||||
media_lofi.FileName = update.FileName
|
||||
}
|
||||
|
||||
func (media_lofi *MediaLoFi) TableName() string {
|
||||
return "media_lofi"
|
||||
}
|
||||
|
||||
@@ -78,6 +78,20 @@ func (repository *MediaLoFiRepository) Add(context context.Context, url string)
|
||||
return nil, fmt.Errorf("MediaLoFiRepository#Add unknown error")
|
||||
}
|
||||
|
||||
func (repository *MediaLoFiRepository) Update(context context.Context, update models.MediaLoFiDTO) (*models.MediaLoFi, error) {
|
||||
slog.Info("MediaLoFiRepository#Update", "lofi", update)
|
||||
var lofi = models.MediaLoFi{ID: update.ID}
|
||||
slog.Info("MediaLoFiRepository#Update", "id", update.ID)
|
||||
result := repository.db.First(&lofi)
|
||||
if result.Error != nil {
|
||||
slog.Info("MediaLoFiRepository#Update", "error", result.Error.Error())
|
||||
return nil, result.Error
|
||||
}
|
||||
lofi.Update(update)
|
||||
repository.db.Save(&lofi)
|
||||
return &lofi, nil
|
||||
}
|
||||
|
||||
func (repository *MediaLoFiRepository) Delete(context context.Context, id string) error {
|
||||
var actor = models.MediaLoFi{ID: id}
|
||||
slog.Info("MediaLoFiRepository#Delete", "id", id)
|
||||
|
||||
@@ -101,14 +101,15 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com
|
||||
secured.GET("comics/storyarcs", comics.StoryArcHandler.List)
|
||||
secured.GET("comics/comicworks", comics.ComicworkHandler.List)
|
||||
secured.GET("comics/issueworks", comics.IssueworkHandler.List)
|
||||
mediaGroup := secured.Group("/media")
|
||||
mediaGroup := secured.Group("media")
|
||||
mediaGroup.GET("/files", media.MediaFileHandler.List)
|
||||
mediaGroup.POST("/files", media.MediaFileHandler.Add)
|
||||
mediaGroup.GET("/videos", media.MediaVideoHandler.List)
|
||||
mediaGroup.GET("/lofis", media.MediaLoFiHandler.List)
|
||||
mediaGroup.POST("/lofis", media.MediaLoFiHandler.Add)
|
||||
mediaGroup.GET("/lofis/:id", media.MediaLoFiHandler.Get)
|
||||
mediaGroup.DELETE("/lofis", media.MediaLoFiHandler.Delete)
|
||||
mediaGroup.POST("/lofis/:id", media.MediaLoFiHandler.Update)
|
||||
mediaGroup.DELETE("/lofis/:id", media.MediaLoFiHandler.Delete)
|
||||
mediaGroup.GET("/actors", media.MediaActorHandler.List)
|
||||
mediaGroup.POST("/actors", media.MediaActorHandler.Add)
|
||||
mediaGroup.GET("/actors/:id", media.MediaActorHandler.Get)
|
||||
|
||||
@@ -31,6 +31,11 @@ func (service *MediaLoFiService) Add(context context.Context, url string) (*mode
|
||||
return service.repository.Add(context, url)
|
||||
}
|
||||
|
||||
func (service *MediaLoFiService) Update(context context.Context, lofi models.MediaLoFiDTO) (*models.MediaLoFi, error) {
|
||||
slog.Info("MediaLoFiService#Update")
|
||||
return service.repository.Update(context, lofi)
|
||||
}
|
||||
|
||||
func (service *MediaLoFiService) Delete(context context.Context, id string) error {
|
||||
slog.Info("MediaLoFiService#Delete")
|
||||
return service.repository.Delete(context, id)
|
||||
|
||||
Reference in New Issue
Block a user