From 9339dc054a9955c437ae5da15ba4863a90669e0c Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Sun, 18 Mar 2018 22:44:03 +0100 Subject: [PATCH] Implemented kitsu import --- pages/animeimport/animeimport.go | 36 +++++++++++++++++++++++++++++--- scripts/Actions/Editor.ts | 5 ++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/pages/animeimport/animeimport.go b/pages/animeimport/animeimport.go index 6e00257a..799fe939 100644 --- a/pages/animeimport/animeimport.go +++ b/pages/animeimport/animeimport.go @@ -1,19 +1,49 @@ package animeimport import ( + "fmt" "net/http" + "github.com/animenotifier/kitsu" + "github.com/fatih/color" + + "github.com/animenotifier/arn" + "github.com/aerogo/aero" + "github.com/animenotifier/notify.moe/utils" ) // Kitsu anime import. func Kitsu(ctx *aero.Context) string { - // id := ctx.Get("id") - // user := utils.GetUser(ctx) + id := ctx.Get("id") + user := utils.GetUser(ctx) - if true { + if user == nil || (user.Role != "editor" && user.Role != "admin") { return ctx.Error(http.StatusUnauthorized, "Not authorized", nil) } + kitsuAnimeObj, err := arn.Kitsu.Get("Anime", id) + + if kitsuAnimeObj == nil { + return ctx.Error(http.StatusNotFound, "Kitsu anime not found", err) + } + + kitsuAnime := kitsuAnimeObj.(*kitsu.Anime) + + // Convert + anime, characters, relations, episodes := arn.NewAnimeFromKitsuAnime(kitsuAnime) + + // Add user ID to the anime + anime.CreatedBy = user.ID + + // Save in database + anime.Save() + characters.Save() + relations.Save() + episodes.Save() + + // Log + fmt.Println(color.GreenString("✔"), anime.ID, anime.Title.Canonical) + return "" } diff --git a/scripts/Actions/Editor.ts b/scripts/Actions/Editor.ts index 67a4da3b..195b237d 100644 --- a/scripts/Actions/Editor.ts +++ b/scripts/Actions/Editor.ts @@ -30,12 +30,15 @@ export function malDiffFilterAnime(arn: AnimeNotifier, input: HTMLInputElement) // Import Kitsu anime export async function importKitsuAnime(arn: AnimeNotifier, button: HTMLButtonElement) { - let response = await fetch(`/api/import/kitsu/anime/${button.dataset.id}`, { + let newTab = window.open() + let animeId = button.dataset.id + let response = await fetch(`/api/import/kitsu/anime/${animeId}`, { method: "POST", credentials: "same-origin" }) if(response.ok) { + newTab.location.href = `/anime/${animeId}` arn.reloadContent() } else { arn.statusMessage.showError(await response.text())