}); $StatTracker->get("/api/{token}/profile/{when}.{format}", function ($token, $when, $format) use($StatTracker) { $agent = Agent::lookupAgentByToken($token); $response = new stdClass(); $response->agent = $agent->name; $t = new stdClass(); if ($StatTracker->isValidDate($when)) { $ts = $agent->getUpdateTimestamp($when, true); if ($ts == null) { return $StatTracker->abort(403); } else { $response->date = date("c", $ts); $response->badges = $agent->getBadges($when, true); $response->stats = $agent->getStats($when, true); } } else { if ($when == "latest") { $response->date = date("c", $agent->getUpdateTimestamp()); $response->badges = $agent->getBadges(); $response->stats = $agent->getStats("latest", true); } else { return $StatTracker->abort(403); } } switch ($format) { case "json": return $StatTracker->json($response); break; } })->before($validateRequest)->assert("format", "json")->assert("when", "latest|[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}")->value("format", "json")->value("when", "latest"); // Retrieve basic information about the agent
$StatTracker->get('/{page}', function ($page) use($StatTracker) { if ($page == "dashboard" || $page == "leaderboards" || $page == "submit-stats" || $page == "settings" || $page == "trends" || $page == "terms") { $StatTracker['session']->set("page_after_login", $page); return $StatTracker['twig']->render("index.twig", array("agent" => $StatTracker->getAgent(), "constants" => array("ga_id" => StatTracker::getConstant("GOOGLE_ANALYTICS_ID"), "admin_agent" => StatTracker::getConstant("ADMIN_AGENT"), "contributors" => $StatTracker->getContributors(), "debug" => StatTracker::getConstant("DEBUG", false), "group_name" => StatTracker::getConstant("GROUP_NAME"), "version" => StatTracker::getConstant("VERSION", "bleeding edge")), "stats" => $StatTracker->getStats(), "page" => $page)); } else { if ($page == "logout") { $StatTracker->getAuthenticationProvider()->logout($StatTracker); return $StatTracker->redirect("./"); } else { if ($page == "authenticate") { switch ($_REQUEST['action']) { case "login": $authResponse = $StatTracker->getAuthenticationProvider()->login($StatTracker); if ($authResponse->status == "registration_required") { $StatTracker->sendRegistrationEmail($authResponse->email); } return $StatTracker->json($authResponse); break; case "callback": $StatTracker->getAuthenticationProvider()->callback($StatTracker); $StatTracker->getAuthenticationProvider()->login($StatTracker); $page = $StatTracker['session']->get("page_after_login"); $page = empty($page) ? "dashboard" : $page; return $StatTracker->redirect("./{$page}"); break; case "logout": return $StatTracker->json($StatTracker->getAuthenticationProvider()->logout($StatTracker)); break; default: $StatTracker->abort(400, "Invalid authentication action"); } } else { $StatTracker->abort(404); } } } })->assert('page', '[a-z-]+')->value('page', 'dashboard');