/** * Save podcasts from uploaded opml file. * * @param Request $request * @return Response */ public function postPodcastsByOpml(Request $request, FeedService $parser) { if (!$request->hasFile('xml')) { return response()->json(['error' => 'No file.'], $status = 500); } elseif (!$request->file('xml')->isValid()) { return response()->json(['error' => 'File invalid.'], $status = 500); } $user = Auth::user(); $file = $request->file('xml'); $pos = $user->getNewPodcastPosition(); $new = []; try { $feeds = $parser->parseOpml($file); } catch (\Exception $e) { return response()->json(['error' => 'File could not be parsed.'], $status = 500); } foreach ($feeds as $feed) { $podcast = Podcast::getOrCreateFromRss($feed); $created = $user->addPodcast($podcast, $pos); if ($created) { $pos++; $new[] = $podcast; } } return response()->json(['success' => true, 'new' => $new, 'feeds' => $feeds]); }