node build fixed

This commit is contained in:
ra_ma
2025-09-20 14:08:38 +01:00
parent c6ebbe069d
commit 3d298fa434
1516 changed files with 535727 additions and 2 deletions

View File

@@ -0,0 +1,362 @@
package handlers
import (
"fmt"
"net/url"
"seanime/internal/extension"
"seanime/internal/extension_playground"
"github.com/labstack/echo/v4"
)
// HandleFetchExternalExtensionData
//
// @summary returns the extension data from the given manifest uri.
// @route /api/v1/extensions/external/fetch [POST]
// @returns extension.Extension
func (h *Handler) HandleFetchExternalExtensionData(c echo.Context) error {
type body struct {
ManifestURI string `json:"manifestUri"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
extension, err := h.App.ExtensionRepository.FetchExternalExtensionData(b.ManifestURI)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, extension)
}
// HandleInstallExternalExtension
//
// @summary installs the extension from the given manifest uri.
// @route /api/v1/extensions/external/install [POST]
// @returns extension_repo.ExtensionInstallResponse
func (h *Handler) HandleInstallExternalExtension(c echo.Context) error {
type body struct {
ManifestURI string `json:"manifestUri"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
res, err := h.App.ExtensionRepository.InstallExternalExtension(b.ManifestURI)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, res)
}
// HandleUninstallExternalExtension
//
// @summary uninstalls the extension with the given ID.
// @route /api/v1/extensions/external/uninstall [POST]
// @returns bool
func (h *Handler) HandleUninstallExternalExtension(c echo.Context) error {
type body struct {
ID string `json:"id"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
err := h.App.ExtensionRepository.UninstallExternalExtension(b.ID)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, true)
}
// HandleUpdateExtensionCode
//
// @summary updates the extension code with the given ID and reloads the extensions.
// @route /api/v1/extensions/external/edit-payload [POST]
// @returns bool
func (h *Handler) HandleUpdateExtensionCode(c echo.Context) error {
type body struct {
ID string `json:"id"`
Payload string `json:"payload"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
err := h.App.ExtensionRepository.UpdateExtensionCode(b.ID, b.Payload)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, true)
}
// HandleReloadExternalExtensions
//
// @summary reloads the external extensions.
// @route /api/v1/extensions/external/reload [POST]
// @returns bool
func (h *Handler) HandleReloadExternalExtensions(c echo.Context) error {
h.App.ExtensionRepository.ReloadExternalExtensions()
return h.RespondWithData(c, true)
}
// HandleReloadExternalExtension
//
// @summary reloads the external extension with the given ID.
// @route /api/v1/extensions/external/reload [POST]
// @returns bool
func (h *Handler) HandleReloadExternalExtension(c echo.Context) error {
type body struct {
ID string `json:"id"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
h.App.ExtensionRepository.ReloadExternalExtension(b.ID)
return h.RespondWithData(c, true)
}
// HandleListExtensionData
//
// @summary returns the loaded extensions
// @route /api/v1/extensions/list [GET]
// @returns []extension.Extension
func (h *Handler) HandleListExtensionData(c echo.Context) error {
extensions := h.App.ExtensionRepository.ListExtensionData()
return h.RespondWithData(c, extensions)
}
// HandleGetExtensionPayload
//
// @summary returns the payload of the extension with the given ID.
// @route /api/v1/extensions/payload/{id} [GET]
// @returns string
func (h *Handler) HandleGetExtensionPayload(c echo.Context) error {
payload := h.App.ExtensionRepository.GetExtensionPayload(c.Param("id"))
return h.RespondWithData(c, payload)
}
// HandleListDevelopmentModeExtensions
//
// @summary returns the development mode extensions
// @route /api/v1/extensions/list/development [GET]
// @returns []extension.Extension
func (h *Handler) HandleListDevelopmentModeExtensions(c echo.Context) error {
extensions := h.App.ExtensionRepository.ListDevelopmentModeExtensions()
return h.RespondWithData(c, extensions)
}
// HandleGetAllExtensions
//
// @summary returns all loaded and invalid extensions.
// @route /api/v1/extensions/all [POST]
// @returns extension_repo.AllExtensions
func (h *Handler) HandleGetAllExtensions(c echo.Context) error {
type body struct {
WithUpdates bool `json:"withUpdates"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
extensions := h.App.ExtensionRepository.GetAllExtensions(b.WithUpdates)
return h.RespondWithData(c, extensions)
}
// HandleGetExtensionUpdateData
//
// @summary returns the update data that were found for the extensions.
// @route /api/v1/extensions/updates [GET]
// @returns []extension_repo.UpdateData
func (h *Handler) HandleGetExtensionUpdateData(c echo.Context) error {
return h.RespondWithData(c, h.App.ExtensionRepository.GetUpdateData())
}
// HandleListMangaProviderExtensions
//
// @summary returns the installed manga providers.
// @route /api/v1/extensions/list/manga-provider [GET]
// @returns []extension_repo.MangaProviderExtensionItem
func (h *Handler) HandleListMangaProviderExtensions(c echo.Context) error {
extensions := h.App.ExtensionRepository.ListMangaProviderExtensions()
return h.RespondWithData(c, extensions)
}
// HandleListOnlinestreamProviderExtensions
//
// @summary returns the installed online streaming providers.
// @route /api/v1/extensions/list/onlinestream-provider [GET]
// @returns []extension_repo.OnlinestreamProviderExtensionItem
func (h *Handler) HandleListOnlinestreamProviderExtensions(c echo.Context) error {
extensions := h.App.ExtensionRepository.ListOnlinestreamProviderExtensions()
return h.RespondWithData(c, extensions)
}
// HandleListAnimeTorrentProviderExtensions
//
// @summary returns the installed torrent providers.
// @route /api/v1/extensions/list/anime-torrent-provider [GET]
// @returns []extension_repo.AnimeTorrentProviderExtensionItem
func (h *Handler) HandleListAnimeTorrentProviderExtensions(c echo.Context) error {
extensions := h.App.ExtensionRepository.ListAnimeTorrentProviderExtensions()
return h.RespondWithData(c, extensions)
}
// HandleGetPluginSettings
//
// @summary returns the plugin settings.
// @route /api/v1/extensions/plugin-settings [GET]
// @returns extension_repo.StoredPluginSettingsData
func (h *Handler) HandleGetPluginSettings(c echo.Context) error {
settings := h.App.ExtensionRepository.GetPluginSettings()
return h.RespondWithData(c, settings)
}
// HandleSetPluginSettingsPinnedTrays
//
// @summary sets the pinned trays in the plugin settings.
// @route /api/v1/extensions/plugin-settings/pinned-trays [POST]
// @returns bool
func (h *Handler) HandleSetPluginSettingsPinnedTrays(c echo.Context) error {
type body struct {
PinnedTrayPluginIds []string `json:"pinnedTrayPluginIds"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
h.App.ExtensionRepository.SetPluginSettingsPinnedTrays(b.PinnedTrayPluginIds)
return h.RespondWithData(c, true)
}
// HandleGrantPluginPermissions
//
// @summary grants the plugin permissions to the extension with the given ID.
// @route /api/v1/extensions/plugin-permissions/grant [POST]
// @returns bool
func (h *Handler) HandleGrantPluginPermissions(c echo.Context) error {
type body struct {
ID string `json:"id"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
h.App.ExtensionRepository.GrantPluginPermissions(b.ID)
return h.RespondWithData(c, true)
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// HandleRunExtensionPlaygroundCode
//
// @summary runs the code in the extension playground.
// @desc Returns the logs
// @route /api/v1/extensions/playground/run [POST]
// @returns extension_playground.RunPlaygroundCodeResponse
func (h *Handler) HandleRunExtensionPlaygroundCode(c echo.Context) error {
type body struct {
Params *extension_playground.RunPlaygroundCodeParams `json:"params"`
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
res, err := h.App.ExtensionPlaygroundRepository.RunPlaygroundCode(b.Params)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, res)
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// HandleGetExtensionUserConfig
//
// @summary returns the user config definition and current values for the extension with the given ID.
// @route /api/v1/extensions/user-config/{id} [GET]
// @returns extension_repo.ExtensionUserConfig
func (h *Handler) HandleGetExtensionUserConfig(c echo.Context) error {
id := c.Param("id")
if id == "" {
return h.RespondWithError(c, fmt.Errorf("id is required"))
}
config := h.App.ExtensionRepository.GetExtensionUserConfig(id)
return h.RespondWithData(c, config)
}
// HandleSaveExtensionUserConfig
//
// @summary saves the user config for the extension with the given ID and reloads it.
// @route /api/v1/extensions/user-config [POST]
// @returns bool
func (h *Handler) HandleSaveExtensionUserConfig(c echo.Context) error {
type body struct {
ID string `json:"id"` // The extension ID
Version int `json:"version"` // The current extension user config definition version
Values map[string]string `json:"values"` // The values
}
var b body
if err := c.Bind(&b); err != nil {
return h.RespondWithError(c, err)
}
config := &extension.SavedUserConfig{
Version: b.Version,
Values: b.Values,
}
err := h.App.ExtensionRepository.SaveExtensionUserConfig(b.ID, config)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, true)
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// HandleGetMarketplaceExtensions
//
// @summary returns the marketplace extensions.
// @route /api/v1/extensions/marketplace [GET]
// @returns []extension.Extension
func (h *Handler) HandleGetMarketplaceExtensions(c echo.Context) error {
encodedMarketplaceUrl := c.QueryParam("marketplace")
marketplaceUrl := ""
if encodedMarketplaceUrl != "" {
marketplaceUrl, _ = url.PathUnescape(encodedMarketplaceUrl)
}
extensions, err := h.App.ExtensionRepository.GetMarketplaceExtensions(marketplaceUrl)
if err != nil {
return h.RespondWithError(c, err)
}
return h.RespondWithData(c, extensions)
}