} else {
        $url = $api->get_authorization_url();
    }
    header('Location: ' . $url);
    exit;
    //return from the Envato authorization page
} elseif (isset($_GET['code'])) {
    @session_start();
    $response = $api->get_authentication($_GET['code']);
    if (isset($response['error'])) {
        $url = buildquery($_SESSION['returnto'], array('mymail_error' => urlencode($response['error_description']), 'mymail_nonce' => $_SESSION['auth']));
    } else {
        if (isset($response['refresh_token']) && isset($response['access_token'])) {
            $api->set_personal_token($response['access_token']);
            $params = buildquery(array('item_id' => (int) $_SESSION['item_id'], 'shorten_url' => 'true'));
            $response = $api->get('v3/market/buyer/download' . $params, false, false);
            $item_id = (int) $_SESSION['item_id'];
            $slug = $_SESSION['slug'];
            if (isset($response['error'])) {
                $error_description = $response['description'];
                $url = buildquery($_SESSION['returnto'], array('mymail_error' => urlencode($error_description), 'mymail_slug' => $slug, 'mymail_nonce' => $_SESSION['auth']));
            } else {
                if (isset($response['download_url'])) {
                    $download_url = $response['download_url'];
                    if (isset($items[$item_id]['file_path']) && file_exists($items[$item_id]['file_path'])) {
                        //expire every 30 minutes
                        $time = floor(time() / 86400 * (2 * 24));
                        $download_url = buildquery($redirect_uri, array('item_id' => $item_id, 'download' => md5(SEED . $item_id . $time)));
                    }
                    $url = buildquery($_SESSION['returnto'], array('mymail_download_url' => urlencode($download_url), 'mymail_slug' => $slug, 'mymail_nonce' => $_SESSION['auth']));
                }