summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Anime.php30
-rw-r--r--app/Console/Kernel.php42
-rw-r--r--app/Exceptions/Handler.php55
-rw-r--r--app/Http/Controllers/.IndexController.php.swpbin0 -> 12288 bytes
-rw-r--r--app/Http/Controllers/Auth/ConfirmPasswordController.php40
-rw-r--r--app/Http/Controllers/Auth/ForgotPasswordController.php22
-rw-r--r--app/Http/Controllers/Auth/LoginController.php40
-rw-r--r--app/Http/Controllers/Auth/RegisterController.php73
-rw-r--r--app/Http/Controllers/Auth/ResetPasswordController.php30
-rw-r--r--app/Http/Controllers/Auth/VerificationController.php42
-rw-r--r--app/Http/Controllers/Controller.php13
-rw-r--r--app/Http/Controllers/IndexController.php40
-rw-r--r--app/Http/Kernel.php82
-rw-r--r--app/Http/Middleware/Authenticate.php21
-rw-r--r--app/Http/Middleware/CheckForMaintenanceMode.php17
-rw-r--r--app/Http/Middleware/EncryptCookies.php17
-rw-r--r--app/Http/Middleware/RedirectIfAuthenticated.php27
-rw-r--r--app/Http/Middleware/TrimStrings.php18
-rw-r--r--app/Http/Middleware/TrustProxies.php23
-rw-r--r--app/Http/Middleware/VerifyCsrfToken.php24
-rw-r--r--app/Libraries/AnimeSchedule.php138
-rw-r--r--app/Libraries/AnimeSeason.php32
-rw-r--r--app/Providers/AppServiceProvider.php28
-rw-r--r--app/Providers/AuthServiceProvider.php30
-rw-r--r--app/Providers/BroadcastServiceProvider.php21
-rw-r--r--app/Providers/EventServiceProvider.php34
-rw-r--r--app/Providers/RouteServiceProvider.php80
-rw-r--r--app/User.php39
28 files changed, 1058 insertions, 0 deletions
diff --git a/app/Anime.php b/app/Anime.php
new file mode 100644
index 0000000..b13f785
--- /dev/null
+++ b/app/Anime.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App;
+
+class Anime {
+
+ public $id;
+
+ public $title_eng;
+ public $title_rom;
+ public $title_nat;
+ public $title_pref;
+
+ public $airing_at;
+ public $time_until_airing;
+ public $episode;
+ public $duration;
+
+ public $episodes_complete;
+ public $episodes_watched;
+ public $score_user;
+ public $score;
+
+ public $rank;
+ public $popularity;
+
+ public function __construct( $id ) {
+ $this->id = $id;
+ }
+}
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
new file mode 100644
index 0000000..a8c5158
--- /dev/null
+++ b/app/Console/Kernel.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Console;
+
+use Illuminate\Console\Scheduling\Schedule;
+use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
+
+class Kernel extends ConsoleKernel
+{
+ /**
+ * The Artisan commands provided by your application.
+ *
+ * @var array
+ */
+ protected $commands = [
+ //
+ ];
+
+ /**
+ * Define the application's command schedule.
+ *
+ * @param \Illuminate\Console\Scheduling\Schedule $schedule
+ * @return void
+ */
+ protected function schedule(Schedule $schedule)
+ {
+ // $schedule->command('inspire')
+ // ->hourly();
+ }
+
+ /**
+ * Register the commands for the application.
+ *
+ * @return void
+ */
+ protected function commands()
+ {
+ $this->load(__DIR__.'/Commands');
+
+ require base_path('routes/console.php');
+ }
+}
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
new file mode 100644
index 0000000..364621e
--- /dev/null
+++ b/app/Exceptions/Handler.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
+
+class Handler extends ExceptionHandler
+{
+ /**
+ * A list of the exception types that are not reported.
+ *
+ * @var array
+ */
+ protected $dontReport = [
+ //
+ ];
+
+ /**
+ * A list of the inputs that are never flashed for validation exceptions.
+ *
+ * @var array
+ */
+ protected $dontFlash = [
+ 'password',
+ 'password_confirmation',
+ ];
+
+ /**
+ * Report or log an exception.
+ *
+ * @param \Exception $exception
+ * @return void
+ *
+ * @throws \Exception
+ */
+ public function report(Exception $exception)
+ {
+ parent::report($exception);
+ }
+
+ /**
+ * Render an exception into an HTTP response.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \Exception $exception
+ * @return \Symfony\Component\HttpFoundation\Response
+ *
+ * @throws \Exception
+ */
+ public function render($request, Exception $exception)
+ {
+ return parent::render($request, $exception);
+ }
+}
diff --git a/app/Http/Controllers/.IndexController.php.swp b/app/Http/Controllers/.IndexController.php.swp
new file mode 100644
index 0000000..efd5752
--- /dev/null
+++ b/app/Http/Controllers/.IndexController.php.swp
Binary files differ
diff --git a/app/Http/Controllers/Auth/ConfirmPasswordController.php b/app/Http/Controllers/Auth/ConfirmPasswordController.php
new file mode 100644
index 0000000..138c1f0
--- /dev/null
+++ b/app/Http/Controllers/Auth/ConfirmPasswordController.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\ConfirmsPasswords;
+
+class ConfirmPasswordController extends Controller
+{
+ /*
+ |--------------------------------------------------------------------------
+ | Confirm Password Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller is responsible for handling password confirmations and
+ | uses a simple trait to include the behavior. You're free to explore
+ | this trait and override any functions that require customization.
+ |
+ */
+
+ use ConfirmsPasswords;
+
+ /**
+ * Where to redirect users when the intended url fails.
+ *
+ * @var string
+ */
+ protected $redirectTo = RouteServiceProvider::HOME;
+
+ /**
+ * Create a new controller instance.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ $this->middleware('auth');
+ }
+}
diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php
new file mode 100644
index 0000000..465c39c
--- /dev/null
+++ b/app/Http/Controllers/Auth/ForgotPasswordController.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
+
+class ForgotPasswordController extends Controller
+{
+ /*
+ |--------------------------------------------------------------------------
+ | Password Reset Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller is responsible for handling password reset emails and
+ | includes a trait which assists in sending these notifications from
+ | your application to your users. Feel free to explore this trait.
+ |
+ */
+
+ use SendsPasswordResetEmails;
+}
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
new file mode 100644
index 0000000..18a0d08
--- /dev/null
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\AuthenticatesUsers;
+
+class LoginController extends Controller
+{
+ /*
+ |--------------------------------------------------------------------------
+ | Login Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller handles authenticating users for the application and
+ | redirecting them to your home screen. The controller uses a trait
+ | to conveniently provide its functionality to your applications.
+ |
+ */
+
+ use AuthenticatesUsers;
+
+ /**
+ * Where to redirect users after login.
+ *
+ * @var string
+ */
+ protected $redirectTo = RouteServiceProvider::HOME;
+
+ /**
+ * Create a new controller instance.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ $this->middleware('guest')->except('logout');
+ }
+}
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
new file mode 100644
index 0000000..c6a6de6
--- /dev/null
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use App\User;
+use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Validator;
+
+class RegisterController extends Controller
+{
+ /*
+ |--------------------------------------------------------------------------
+ | Register Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller handles the registration of new users as well as their
+ | validation and creation. By default this controller uses a trait to
+ | provide this functionality without requiring any additional code.
+ |
+ */
+
+ use RegistersUsers;
+
+ /**
+ * Where to redirect users after registration.
+ *
+ * @var string
+ */
+ protected $redirectTo = RouteServiceProvider::HOME;
+
+ /**
+ * Create a new controller instance.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ $this->middleware('guest');
+ }
+
+ /**
+ * Get a validator for an incoming registration request.
+ *
+ * @param array $data
+ * @return \Illuminate\Contracts\Validation\Validator
+ */
+ protected function validator(array $data)
+ {
+ return Validator::make($data, [
+ 'name' => ['required', 'string', 'max:255'],
+ 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
+ 'password' => ['required', 'string', 'min:8', 'confirmed'],
+ ]);
+ }
+
+ /**
+ * Create a new user instance after a valid registration.
+ *
+ * @param array $data
+ * @return \App\User
+ */
+ protected function create(array $data)
+ {
+ return User::create([
+ 'name' => $data['name'],
+ 'email' => $data['email'],
+ 'password' => Hash::make($data['password']),
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
new file mode 100644
index 0000000..b1726a3
--- /dev/null
+++ b/app/Http/Controllers/Auth/ResetPasswordController.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\ResetsPasswords;
+
+class ResetPasswordController extends Controller
+{
+ /*
+ |--------------------------------------------------------------------------
+ | Password Reset Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller is responsible for handling password reset requests
+ | and uses a simple trait to include this behavior. You're free to
+ | explore this trait and override any methods you wish to tweak.
+ |
+ */
+
+ use ResetsPasswords;
+
+ /**
+ * Where to redirect users after resetting their password.
+ *
+ * @var string
+ */
+ protected $redirectTo = RouteServiceProvider::HOME;
+}
diff --git a/app/Http/Controllers/Auth/VerificationController.php b/app/Http/Controllers/Auth/VerificationController.php
new file mode 100644
index 0000000..5e749af
--- /dev/null
+++ b/app/Http/Controllers/Auth/VerificationController.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\VerifiesEmails;
+
+class VerificationController extends Controller
+{
+ /*
+ |--------------------------------------------------------------------------
+ | Email Verification Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller is responsible for handling email verification for any
+ | user that recently registered with the application. Emails may also
+ | be re-sent if the user didn't receive the original email message.
+ |
+ */
+
+ use VerifiesEmails;
+
+ /**
+ * Where to redirect users after verification.
+ *
+ * @var string
+ */
+ protected $redirectTo = RouteServiceProvider::HOME;
+
+ /**
+ * Create a new controller instance.
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ $this->middleware('auth');
+ $this->middleware('signed')->only('verify');
+ $this->middleware('throttle:6,1')->only('verify', 'resend');
+ }
+}
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
new file mode 100644
index 0000000..a0a2a8a
--- /dev/null
+++ b/app/Http/Controllers/Controller.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
+use Illuminate\Foundation\Bus\DispatchesJobs;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Routing\Controller as BaseController;
+
+class Controller extends BaseController
+{
+ use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
+}
diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php
new file mode 100644
index 0000000..c77de48
--- /dev/null
+++ b/app/Http/Controllers/IndexController.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Http\Request;
+
+use App\Libraries\AnimeSchedule;
+use App\Libraries\AnimeSeason;
+
+class IndexController extends Controller {
+ /**
+ * Shows the index page.
+ *
+ * @return Response
+ */
+ public function showPage() {
+
+ return view('index', [ ]);
+ }
+
+ #public function iCal(Request $request) {
+ public function iCal($username) {
+
+ if ( ! Cache::has('schedule_' . $username)) {
+ $userSchedule = new AnimeSchedule( $username );
+ $schedule = $userSchedule->getCalendar();
+ Cache::put('schedule_' . $username, $schedule, 360);
+ } else {
+ $schedule = Cache::get('schedule_' . $username);
+ }
+
+ header('Content-Type: text/calendar; charset=utf-8');
+ #var_dump($schedule);
+ echo $schedule;
+ }
+
+ public function test($param = null) {
+ $season = new AnimeSeason();
+ }
+}
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
new file mode 100644
index 0000000..deb65e8
--- /dev/null
+++ b/app/Http/Kernel.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http;
+
+use Illuminate\Foundation\Http\Kernel as HttpKernel;
+
+class Kernel extends HttpKernel
+{
+ /**
+ * The application's global HTTP middleware stack.
+ *
+ * These middleware are run during every request to your application.
+ *
+ * @var array
+ */
+ protected $middleware = [
+ \App\Http\Middleware\TrustProxies::class,
+ \App\Http\Middleware\CheckForMaintenanceMode::class,
+ \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
+ \App\Http\Middleware\TrimStrings::class,
+ \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+ ];
+
+ /**
+ * The application's route middleware groups.
+ *
+ * @var array
+ */
+ protected $middlewareGroups = [
+ 'web' => [
+ \App\Http\Middleware\EncryptCookies::class,
+ \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
+ \Illuminate\Session\Middleware\StartSession::class,
+ // \Illuminate\Session\Middleware\AuthenticateSession::class,
+ \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+ \App\Http\Middleware\VerifyCsrfToken::class,
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ ],
+
+ 'api' => [
+ 'throttle:60,1',
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ ],
+ ];
+
+ /**
+ * The application's route middleware.
+ *
+ * These middleware may be assigned to groups or used individually.
+ *
+ * @var array
+ */
+ protected $routeMiddleware = [
+ 'auth' => \App\Http\Middleware\Authenticate::class,
+ 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
+ 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
+ 'can' => \Illuminate\Auth\Middleware\Authorize::class,
+ 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+ 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
+ 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
+ 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+ ];
+
+ /**
+ * The priority-sorted list of middleware.
+ *
+ * This forces non-global middleware to always be in the given order.
+ *
+ * @var array
+ */
+ protected $middlewarePriority = [
+ \Illuminate\Session\Middleware\StartSession::class,
+ \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+ \App\Http\Middleware\Authenticate::class,
+ \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ \Illuminate\Session\Middleware\AuthenticateSession::class,
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ \Illuminate\Auth\Middleware\Authorize::class,
+ ];
+}
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
new file mode 100644
index 0000000..704089a
--- /dev/null
+++ b/app/Http/Middleware/Authenticate.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Auth\Middleware\Authenticate as Middleware;
+
+class Authenticate extends Middleware
+{
+ /**
+ * Get the path the user should be redirected to when they are not authenticated.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return string|null
+ */
+ protected function redirectTo($request)
+ {
+ if (! $request->expectsJson()) {
+ return route('login');
+ }
+ }
+}
diff --git a/app/Http/Middleware/CheckForMaintenanceMode.php b/app/Http/Middleware/CheckForMaintenanceMode.php
new file mode 100644
index 0000000..35b9824
--- /dev/null
+++ b/app/Http/Middleware/CheckForMaintenanceMode.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
+
+class CheckForMaintenanceMode extends Middleware
+{
+ /**
+ * The URIs that should be reachable while maintenance mode is enabled.
+ *
+ * @var array
+ */
+ protected $except = [
+ //
+ ];
+}
diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php
new file mode 100644
index 0000000..033136a
--- /dev/null
+++ b/app/Http/Middleware/EncryptCookies.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
+
+class EncryptCookies extends Middleware
+{
+ /**
+ * The names of the cookies that should not be encrypted.
+ *
+ * @var array
+ */
+ protected $except = [
+ //
+ ];
+}
diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php
new file mode 100644
index 0000000..2395ddc
--- /dev/null
+++ b/app/Http/Middleware/RedirectIfAuthenticated.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Providers\RouteServiceProvider;
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfAuthenticated
+{
+ /**
+ * Handle an incoming request.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \Closure $next
+ * @param string|null $guard
+ * @return mixed
+ */
+ public function handle($request, Closure $next, $guard = null)
+ {
+ if (Auth::guard($guard)->check()) {
+ return redirect(RouteServiceProvider::HOME);
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php
new file mode 100644
index 0000000..5a50e7b
--- /dev/null
+++ b/app/Http/Middleware/TrimStrings.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
+
+class TrimStrings extends Middleware
+{
+ /**
+ * The names of the attributes that should not be trimmed.
+ *
+ * @var array
+ */
+ protected $except = [
+ 'password',
+ 'password_confirmation',
+ ];
+}
diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php
new file mode 100644
index 0000000..3625f37
--- /dev/null
+++ b/app/Http/Middleware/TrustProxies.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Fideloper\Proxy\TrustProxies as Middleware;
+use Illuminate\Http\Request;
+
+class TrustProxies extends Middleware
+{
+ /**
+ * The trusted proxies for this application.
+ *
+ * @var array|string
+ */
+ protected $proxies = [ '192.168.122.1' ];
+
+ /**
+ * The headers that should be used to detect proxies.
+ *
+ * @var int
+ */
+ protected $headers = Request::HEADER_X_FORWARDED_ALL;
+}
diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php
new file mode 100644
index 0000000..324a166
--- /dev/null
+++ b/app/Http/Middleware/VerifyCsrfToken.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
+
+class VerifyCsrfToken extends Middleware
+{
+ /**
+ * Indicates whether the XSRF-TOKEN cookie should be set on the response.
+ *
+ * @var bool
+ */
+ protected $addHttpCookie = true;
+
+ /**
+ * The URIs that should be excluded from CSRF verification.
+ *
+ * @var array
+ */
+ protected $except = [
+ //
+ ];
+}
diff --git a/app/Libraries/AnimeSchedule.php b/app/Libraries/AnimeSchedule.php
new file mode 100644
index 0000000..c81d0f7
--- /dev/null
+++ b/app/Libraries/AnimeSchedule.php
@@ -0,0 +1,138 @@
+<?php
+
+namespace App\Libraries;
+use App\Libraries\AnimeSchedule;
+use App\Anime;
+
+use Carbon\Carbon;
+use Jikan\MyAnimeList\MalClient;
+
+use Eluceo\iCal\Component\Calendar;
+use Eluceo\iCal\Component\Event;
+
+
+class AnimeSchedule {
+
+ private $animeSchedule = array();
+
+ private $jikan;
+ private $userProfile;
+ private $animeList;
+ private $animeInfo;
+ private const STATUS_WATCHING = 1;
+
+ public function __construct( $username ) {
+ $this->jikan = new MalClient;
+
+ $this->userProfile = $this->jikan->getUserProfile(
+ new \Jikan\Request\User\UserProfileRequest( $username )
+ );
+ $this->animeList = $this->jikan->getUserAnimelist(
+ new \Jikan\Request\User\UserAnimeListRequest( $this->userProfile->getUsername(), 1 )
+ );
+
+ foreach ( $this->animeList as $entry ) {
+ // currently watching
+ if ( $this::STATUS_WATCHING != $entry->getAiringStatus() ){
+ continue;
+ }
+
+ $data = $this->getDataFromAnilist( $entry->getMalID() );
+
+ // check if anilist has no info about airing next episode (this happens!)
+ if ( is_null( $data->nextAiringEpisode ) ) {
+ continue;
+ }
+
+ $animeInfo = $this->jikan->getAnime(
+ (new \Jikan\Request\Anime\AnimeRequest( $entry->getMalID() ))
+ );
+
+ $anime = new Anime( $entry->getMalID() );
+
+ $anime->title_eng = $data->title->english;
+ $anime->title_rom = $data->title->romaji;
+ $anime->title_nat = $data->title->native;
+ $anime->title_pref = $data->title->userPreferred;
+
+ $anime->airing_at = Carbon::createFromTimestamp($data->nextAiringEpisode->airingAt);
+ $anime->time_until_airing = Carbon::createFromTimestamp($data->nextAiringEpisode->timeUntilAiring);
+ $anime->episode = $data->nextAiringEpisode->episode;
+ $anime->duration = $data->duration;
+
+ $anime->episodes_complete = $data->episodes;
+ $anime->episodes_watched = $entry->getWatchedEpisodes();
+ $anime->score_user = $entry->getScore();
+ $anime->score = $animeInfo->getScore();
+
+ $anime->rank = $animeInfo->getRank();
+ $anime->popularity = $animeInfo->getPopularity();
+
+ $this->animeSchedule[] = $anime;
+ }
+ }
+
+ public function getSchedule() {
+ return $this->animeSchedule;
+ }
+
+ public function getCalendar() {
+ $vCalendar = new Calendar('animes.iamfabulous.de');
+ $vCalendar->setName('Anime Schedule');
+
+ foreach ( $this->animeSchedule as $anime ) {
+ $vEvent = new Event();
+
+ $vEvent
+ ->setDtStart(new \DateTime($anime->airing_at))
+ ->setDtEnd( new \DateTime($anime->airing_at->add($anime->duration, 'minutes')) )
+ ->setNoTime(false)
+ ->setSummary( $anime->title_pref . " (" . $anime->episode . "/" . $anime->episodes_complete . ")" )
+ ->setUrl( env("APP_URL") )
+ ->setDescription( "(Episode " . $anime->episode . "/" . $anime->episodes_complete . ") You have watched " . $anime->episodes_watched . " episodes of " . $anime->title_pref . " and scored it with " . $anime->score_user . ". (Public score: ". $anime->score .")" );
+
+ $vCalendar->addComponent($vEvent);
+ }
+
+ return $vCalendar->render();
+ }
+
+ private function getDataFromAnilist( $malID ) {
+ $query = '
+ query($id: Int!) {
+ Media(idMal: $id, type: ANIME) {
+ title {
+ romaji
+ english
+ native
+ userPreferred
+ }
+ nextAiringEpisode {
+ airingAt
+ timeUntilAiring
+ episode
+ }
+ episodes
+ duration
+ }
+ }
+ ';
+
+ // Define our query variables and values that will be used in the query request
+ $variables = [
+ "id" => $malID,
+ ];
+
+ // Make the HTTP Api request
+ $http = new \GuzzleHttp\Client;
+ $response = $http->post('https://graphql.anilist.co', [
+ 'json' => [
+ 'query' => $query,
+ 'variables' => $variables,
+ ]
+ ]);
+
+ $data = json_decode( $response->getBody() )->data->Media;
+ return $data;
+ }
+}
diff --git a/app/Libraries/AnimeSeason.php b/app/Libraries/AnimeSeason.php
new file mode 100644
index 0000000..cc01ff7
--- /dev/null
+++ b/app/Libraries/AnimeSeason.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Libraries;
+use App\Libraries\AnimeSeason;
+use App\Anime;
+
+use Carbon\Carbon;
+
+use Jikan\MyAnimeList\MalClient;
+use Jikan\Helper\Constants;
+
+
+class AnimeSeason {
+
+ public $year;
+ public $name;
+
+ public $anime;
+
+ public function __construct() {
+ $jikan = new MalClient;
+
+ $season = $jikan->getSeasonal(
+ (new \Jikan\Request\Seasonal\SeasonalRequest(
+ ))
+ );
+
+ $this->year = $season->seasonYear;
+ $this->name= $season->seasonName;
+ }
+
+}
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
new file mode 100644
index 0000000..ee8ca5b
--- /dev/null
+++ b/app/Providers/AppServiceProvider.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Support\ServiceProvider;
+
+class AppServiceProvider extends ServiceProvider
+{
+ /**
+ * Register any application services.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ //
+ }
+
+ /**
+ * Bootstrap any application services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
new file mode 100644
index 0000000..3049068
--- /dev/null
+++ b/app/Providers/AuthServiceProvider.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
+use Illuminate\Support\Facades\Gate;
+
+class AuthServiceProvider extends ServiceProvider
+{
+ /**
+ * The policy mappings for the application.
+ *
+ * @var array
+ */
+ protected $policies = [
+ // 'App\Model' => 'App\Policies\ModelPolicy',
+ ];
+
+ /**
+ * Register any authentication / authorization services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ $this->registerPolicies();
+
+ //
+ }
+}
diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php
new file mode 100644
index 0000000..395c518
--- /dev/null
+++ b/app/Providers/BroadcastServiceProvider.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Support\Facades\Broadcast;
+use Illuminate\Support\ServiceProvider;
+
+class BroadcastServiceProvider extends ServiceProvider
+{
+ /**
+ * Bootstrap any application services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ Broadcast::routes();
+
+ require base_path('routes/channels.php');
+ }
+}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
new file mode 100644
index 0000000..723a290
--- /dev/null
+++ b/app/Providers/EventServiceProvider.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Auth\Events\Registered;
+use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
+use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
+use Illuminate\Support\Facades\Event;
+
+class EventServiceProvider extends ServiceProvider
+{
+ /**
+ * The event listener mappings for the application.
+ *
+ * @var array
+ */
+ protected $listen = [
+ Registered::class => [
+ SendEmailVerificationNotification::class,
+ ],
+ ];
+
+ /**
+ * Register any events for your application.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ parent::boot();
+
+ //
+ }
+}
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
new file mode 100644
index 0000000..527eee3
--- /dev/null
+++ b/app/Providers/RouteServiceProvider.php
@@ -0,0 +1,80 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
+use Illuminate\Support\Facades\Route;
+
+class RouteServiceProvider extends ServiceProvider
+{
+ /**
+ * This namespace is applied to your controller routes.
+ *
+ * In addition, it is set as the URL generator's root namespace.
+ *
+ * @var string
+ */
+ protected $namespace = 'App\Http\Controllers';
+
+ /**
+ * The path to the "home" route for your application.
+ *
+ * @var string
+ */
+ public const HOME = '/home';
+
+ /**
+ * Define your route model bindings, pattern filters, etc.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+
+ parent::boot();
+ }
+
+ /**
+ * Define the routes for the application.
+ *
+ * @return void
+ */
+ public function map()
+ {
+ $this->mapApiRoutes();
+
+ $this->mapWebRoutes();
+
+ //
+ }
+
+ /**
+ * Define the "web" routes for the application.
+ *
+ * These routes all receive session state, CSRF protection, etc.
+ *
+ * @return void
+ */
+ protected function mapWebRoutes()
+ {
+ Route::middleware('web')
+ ->namespace($this->namespace)
+ ->group(base_path('routes/web.php'));
+ }
+
+ /**
+ * Define the "api" routes for the application.
+ *
+ * These routes are typically stateless.
+ *
+ * @return void
+ */
+ protected function mapApiRoutes()
+ {
+ Route::prefix('api')
+ ->middleware('api')
+ ->namespace($this->namespace)
+ ->group(base_path('routes/api.php'));
+ }
+}
diff --git a/app/User.php b/app/User.php
new file mode 100644
index 0000000..e79dab7
--- /dev/null
+++ b/app/User.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace App;
+
+use Illuminate\Contracts\Auth\MustVerifyEmail;
+use Illuminate\Foundation\Auth\User as Authenticatable;
+use Illuminate\Notifications\Notifiable;
+
+class User extends Authenticatable
+{
+ use Notifiable;
+
+ /**
+ * The attributes that are mass assignable.
+ *
+ * @var array
+ */
+ protected $fillable = [
+ 'name', 'email', 'password',
+ ];
+
+ /**
+ * The attributes that should be hidden for arrays.
+ *
+ * @var array
+ */
+ protected $hidden = [
+ 'password', 'remember_token',
+ ];
+
+ /**
+ * The attributes that should be cast to native types.
+ *
+ * @var array
+ */
+ protected $casts = [
+ 'email_verified_at' => 'datetime',
+ ];
+}