42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package extension_repo
|
|
|
|
import (
|
|
"fmt"
|
|
"seanime/internal/extension"
|
|
"seanime/internal/util"
|
|
)
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Anime Torrent provider
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
func (r *Repository) loadExternalAnimeTorrentProviderExtension(ext *extension.Extension) (err error) {
|
|
defer util.HandlePanicInModuleWithError("extension_repo/loadExternalAnimeTorrentProviderExtension", &err)
|
|
|
|
switch ext.Language {
|
|
case extension.LanguageJavascript, extension.LanguageTypescript:
|
|
err = r.loadExternalAnimeTorrentProviderExtensionJS(ext, ext.Language)
|
|
default:
|
|
err = fmt.Errorf("unsupported language: %v", ext.Language)
|
|
}
|
|
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (r *Repository) loadExternalAnimeTorrentProviderExtensionJS(ext *extension.Extension, language extension.Language) error {
|
|
provider, gojaExt, err := NewGojaAnimeTorrentProvider(ext, language, r.logger, r.gojaRuntimeManager)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Add the extension to the map
|
|
retExt := extension.NewAnimeTorrentProviderExtension(ext, provider)
|
|
r.extensionBank.Set(ext.ID, retExt)
|
|
r.gojaExtensions.Set(ext.ID, gojaExt)
|
|
return nil
|
|
}
|