Esempio n. 1
0
});
$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
Esempio n. 2
0
$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');