<?php

$pathInfo = pathinfo($_SERVER['REQUEST_URI']);
if(isset($pathInfo['extension']) && ($pathInfo['extension'] == 'png' || $pathInfo['extension'] == 'webp')) {
	$ticker = $pathInfo['filename'];
	$cachePath = 'img-cache/' . $ticker . '.' . $pathInfo['extension'];

	if(file_exists($cachePath)) {
		header('Content-type: image/' . $pathInfo['extension']);
		header('max-age: 2592000');
		readfile($cachePath);
		die();
	}

	$companiesRes = file_get_contents('https://companiesmarketcap.com/img/company-logos/80/' . $ticker . '.' . $pathInfo['extension']);

	if(!empty($companiesRes)) {
		$fp = fopen($cachePath,'w');
		fwrite($fp, $companiesRes);
		fclose($fp);
		header('Content-type: image/' . $pathInfo['extension']);
		header('max-age: 2592000');
		readfile($cachePath);
	}
	die();
}

$path = strtok($_SERVER['REQUEST_URI'],'?');

$pathParts = explode('/', trim($path, '/'));

if(count($pathParts) == 2) {
	if($pathParts[1] == 'dashboard') {
		$_GET['page'] = 'dashboard';
		$_GET['asset_url'] = $pathParts[0];
	}
}

switch($pathParts[0]) {
        case 'privacy':
                $_GET['page'] = 'privacy';
        break;
	case 'flipennings':
		$_GET['page'] = 'flippenings';
	break;
	case 'sign-up':
                $_GET['page'] = 'sign-up';
        break;
        case 'companies':
                $_GET['type'] = 'companies';
        break;
        case 'etfs':
                $_GET['type'] = 'etfs';
        break;
        case 'cryptos':
                $_GET['type'] = 'cryptos';
        break;
        case 'metals':
                $_GET['type'] = 'metals';
        break;
	case 'usd':
		$_GET['currency'] = 'USD';
	break;
        case 'euro':
                $_GET['currency'] = 'EUR';
        break;
        case 'btc':
                $_GET['currency'] = 'BTC';
        break;
        case 'eth':
                $_GET['currency'] = 'ETH';
        break;
        case 'gold':
                $_GET['currency'] = 'GOLD';
        break;
        case 'silver':
                $_GET['currency'] = 'SILVER';
        break;
	case '404':
                $_GET['page'] = '404';
        break;
	case 'compare':
		$_GET['page'] = 'compare';
		if(isset($pathParts[1]) && isset($pathParts[2])) {
			$_GET['assetA'] = $pathParts[1];
			$_GET['assetB'] = $pathParts[2];
		}
	break;
        case 'account':
                $_GET['page'] = 'account';
                if(isset($pathParts[1]) && $pathParts[1] == 'password-reset') {
                	$passwordToken = explode('?password_token=', $_SERVER['REQUEST_URI']);
                	$passwordToken = @$passwordToken[1];
                	$_GET['page'] = 'password-reset';
                } else if(isset($pathParts[1]) && $pathParts[1] == 'forgot-password') {
                	$_GET['page'] = 'forgot-password';
                }
        break;
        case 'watchlist':
                $_GET['page'] = 'watchlist';

                if(isset($pathParts[1]) && ($pathParts[1] == 'add' || $pathParts[1] == 'remove')) {
			$csrfToken = explode('?csrf_token=', $_SERVER['REQUEST_URI']);
			if(isset($csrfToken[1])) {
				include_once('inc.php');
				
				$csrfToken = $csrfToken[1];
				$assetId = $pathParts[2];
				
				if(!isset($_COOKIE['sessionToken'])) {
					die('{"success": flase, "message":"Not logged in"}');
				}
				
				$GLOBALS['user_data'] = getUserData($_COOKIE['sessionToken']);

				if($csrfToken == @$GLOBALS['user_data']['csrf_token']) {
					if($pathParts[1] == 'add') {
						addToWatchlist($GLOBALS['user_data']['user_id'], $_COOKIE['sessionToken'], $pathParts[2]);
					}
					
					if($pathParts[1] == 'remove') {
						removeFromWatchlist($GLOBALS['user_data']['user_id'], $_COOKIE['sessionToken'], $pathParts[2]);
					}

					die('{"success": true}');
				} else {
					die('{"success": flase, "message":"Invalid CSRF token"}');
				}
			} else {
				die('{"success": flase, "message":"Missing CSRF token"}');
			}
		}
        break;
        case 'login':
                include_once('inc.php');

                $credentials = [
                	'email' => $_POST['email'],
                	'password' => $_POST['password'],
                	'website' => '8marketcap',
                ];
                $resp = login($credentials);
                echo json_encode($resp);
                die();
        break;
        case 'logout':
		$csrfToken = explode('?csrf_token=', $_SERVER['REQUEST_URI']);
		if(isset($csrfToken[1])) {
			include_once('inc.php');
			$GLOBALS['user_data'] = getUserData($_COOKIE['sessionToken']);
			$resp = logout();

			$csrfToken = $csrfToken[1];

			if($csrfToken == @$GLOBALS['user_data']['csrf_token']) {
				logout();
			}
		}

		header("Location: /");
        break;
	default:
		if(!isset($_GET['page'])) {
			header("Location: /404/");
			die();
		}
}

include('index.php');
