<?php
/**
 * Basic client for the RouteYou web services. This class provides a simple
 * interface to start a new session for the RouteYou plugins.
 *
 * Usage: include the class where you need it, then call the getToken() or
 * logInWithId() method, which will return a token you can pass to the plugin.
 *      require 'RouteYou_Session.php';
 *      $token = RouteYou_Session::getToken($yourKey);
 * or
 *      require 'RouteYou_Session.php';
 *      $token = RouteYou_Session::logInWithId($yourKey, $yourId,
 *          $yourPassword);
 *
 * @category    RouteYou
 * @author      RouteYou
 */
class RouteYou_Session
{

    /**
     * Starts a new RouteYou API session and returns the token.
     *
     * @param string $key
     *
     * @return string
     */
    public static function getToken($key)
    {
        $response = file_get_contents(
            'https://api.routeyou.com/1.0/json/Session/k-' . urlencode($key) .
            '?jsonrpc=2.0&id=1&method=start');
        if ($response) {
            $response = json_decode($response);
        }
        if ($response && isset($response->result) && $response->result) {
            $token = $response->result;
        } else {
            $token = null;
        }
        return $token;
    }

    /**
     * Starts a new RouteYou API session, logs in and returns the token.
     *
     * @param string $key
     * @param integer $id
     * @param string $password
     *
     * @return string
     */
    public static function logInWithId($key, $id, $password)
    {
        $response = file_get_contents(
            'https://api.routeyou.com/2.0/json/User/k-' . urlencode($key) .
            '?jsonrpc=2.0&id=1&method=logInWithId&params=' .
            urlencode(json_encode(array($id, $password))));
        if ($response) {
            $response = json_decode($response);
        }
        if ($response && isset($response->result) && $response->result) {
            $token = $response->result->token;
        } else {
            $token = null;
        }
        return $token;
    }

}
