Example #1
0
function rest_get($req)
{
    global $JSON;
    if (checkPrivileges($req[0]) == false) {
        return;
    }
    $resp = reqRouter($req, "GET");
    $response;
    switch ($resp) {
        case 1:
            global $routes;
            $order = @$routes[$req[0]]["orderBy"];
            if (isset($order)) {
                $response = sql_GET_ALL($req[0], [$order, "ASC"]);
            } else {
                $response = sql_GET_ALL($req[0], [$routes[$req[0]]['identifier'], "ASC"]);
            }
            break;
        case 2:
            $response = sql_GET($req);
            break;
        case 3:
            $response = sql_GET_ROW($req);
            break;
        case 4:
            $response = sql_GET_SORT($req, true);
            break;
        case 5:
            $response = sql_GET_SORT($req, false);
            break;
        case 6:
            $response = sql_GET_COLUMNS();
            break;
        case 7:
            $response = sql_GET_JOIN($JSON);
            break;
        case 8:
            $response = getPrice($JSON);
            break;
        case 9:
            $response = getByTime($req, $JSON);
            break;
        case 0:
        default:
            rest_error("Mal-Formed request, check url params", 400);
            return;
    }
    if (isset($response) && (is_array($response) && count($response) > 0)) {
        rest_success(json_encode($response));
    } else {
        rest_error("Empty Results, Check if item exists in dataBase, Check Url requested.", 404);
    }
    return 0;
}
Example #2
0
function getPrice($JSON)
{
    include '../../includes/database.php';
    //json should contain: order(s) to be priced
    $orderName = "orderName";
    if (isset($JSON[$orderName]) == false) {
        //return empty array to throw error
        return [];
    }
    $price = isset($JSON["actual"]) ? "Cost" : "Price";
    $arr = [];
    $places = pow(10, 5);
    $allPossibles = sql_GET_JOIN(["tables" => ["symbols"], "from" => "ingredients", "relations" => [["symbols.Name", "ingredients.Symbol"]], "select" => ["symbols.Symbol", "ingredients." . $price, "ingredients.Units"]]);
    $order = explode(sql_GET(["settings", "search", "keyKey", "dbdelimiter"])[0]["val"], $JSON[$orderName]);
    foreach ($order as $i => $ingrediant) {
        $num = isInside($allPossibles, "Symbol", $ingrediant);
        if ($num == -1) {
            return [];
        }
        $cur = $allPossibles[$num];
        array_push($arr, $cur[$price] / $cur["Units"]);
    }
    return [floor(array_reduce($arr, "add") * $places) / $places];
}
Example #3
0
function reqRouter($req, $http)
{
    global $keyRoutes;
    global $routes;
    global $JSON;
    if (isset($req) && array_search($req[0], $keyRoutes) !== false) {
    } else {
        if (!isset($req[0]) || !isMethodAllowed($req[0], $http) && !($http == "LOGIN" || $http == "LOGOUT")) {
            //rest_error("Bad Request",401);
            return 0;
        }
    }
    if ($http == "GET") {
        if (count($req) == 1) {
            if (isset($routes[$req[0]])) {
                //the users is requesting an entire table
                return 1;
            } else {
                if ($req[0] == "columns") {
                    return 6;
                    //user is requesting to retrieve multiple columns
                } else {
                    if ($req[0] == "getPrice") {
                        return 8;
                        //user is requesting price of an order
                    } else {
                        if ($req[0] == "join") {
                            $required = ["from", "tables", "relations", "select"];
                            for ($i = 0; $i < count($required); $i++) {
                                if (!isset($JSON[$required[$i]])) {
                                    return 0;
                                }
                                if (is_string($JSON[$required[$i]]) && !isset($routes[$JSON[$required[$i]]])) {
                                    return 0;
                                }
                                if (is_array($JSON[$required[$i]])) {
                                    if ($required[$i] == "tables") {
                                        for ($c = 0; $c < count($JSON[$required[$i]]); $c++) {
                                            if (!isset($routes[$JSON[$required[$i]][$c]])) {
                                                return 0;
                                            }
                                        }
                                    }
                                    if ($required[$i] == "select") {
                                        $arr = $JSON[$required[$i]];
                                        if (!isset($arr)) {
                                            return 0;
                                        }
                                        for ($r = 0; $r < count($arr); $r++) {
                                            $cur = explode(".", $arr[$r]);
                                            if (!isset($routes[$cur[0]]) || !isIdentifier($cur[0], $cur[1])) {
                                                return 0;
                                            }
                                        }
                                    }
                                    if ($required[$i] == "relations") {
                                        for ($r = 0; $r < count($JSON[$required[$i]]); $r++) {
                                            $arr = $JSON[$required[$i]][$r];
                                            if (!isset($arr)) {
                                                return 0;
                                            }
                                            for ($r = 0; $r < count($arr); $r++) {
                                                $cur = explode(".", $arr[$r]);
                                                if (!isset($routes[$cur[0]]) || !isIdentifier($cur[0], $cur[1])) {
                                                    return 0;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            return 7;
                            //user is requesting to join multiple columns
                        } else {
                            return 0;
                        }
                    }
                }
            }
        } else {
            if ($req[0] == "getByTime") {
                return 9;
                //user is requesting a table between a given time
            }
            //the user is requesting a search
            //therefore anything after is a parameter to search by
            if (isset($req[1]) && strtolower($req[1]) == "search") {
                if (isset($req[2]) && isIdentifier($req[0], $req[2])) {
                    if (isset($req[3])) {
                        //user is searching for a row with req
                        return 2;
                    }
                    //user is searching for column
                    return 3;
                }
            } else {
                if (isset($req[1]) && strtolower($req[1]) == "sortby") {
                    if (isset($req[2]) && isIdentifier($req[0], $req[2])) {
                        if (isset($req[3]) && (strtoupper($req[3]) == "ASC" || strtoupper($req[3]) == "DESC")) {
                            //user wants entire table sorted by preference
                            return 4;
                        }
                        //user wants entire table sorted ASC
                        return 5;
                    }
                }
            }
        }
    }
    if ($http == "POST") {
        if (count($req) == 3) {
            $table = $req[0];
            $col = $req[1];
            $id = $req[2];
            $keys = $routes[$table]['identifiers'];
            for ($i = 0; $i < count($keys); $i++) {
                if (!isset($JSON[$keys[$i]])) {
                    return 0;
                }
            }
            if (isIdentifier($table, $col) == false) {
                return 0;
            }
            //count(sql_GET([$table,"search",$col,$id]))==1 checks if id exists in table
            if (isset($routes[$table]) && count(sql_GET([$table, "search", $routes[$table]['identifier'], $id])) == 1 && $col == $routes[$table]['identifier'] ? count(sql_GET([$table, "search", $col, $JSON[$col]])) == 0 : true) {
                return 1;
            }
        }
        if (count($req) == 2) {
            $table = $req[0];
            $col = $req[1];
            $keys = $routes[$table]['identifiers'];
            for ($i = 0; $i < count($keys); $i++) {
                if (!isset($JSON[$keys[$i]])) {
                    return 0;
                }
            }
            if (isset($routes[$table]) && count(sql_GET([$table, "search", $routes[$table]['identifier'], $JSON[$routes[$table]['identifier']]])) == 1) {
                return 2;
            }
        }
    }
    if ($http == "DELETE") {
        if (count($req) == 2) {
            $table = $req[0];
            $id = $req[1];
            if (isset($routes[$table]) && count(sql_GET([$table, "search", $routes[$table]['identifier'], $id])) == 1) {
                return 1;
            }
        }
    }
    if ($http == "LOGIN") {
        if ($req[0] == "logout") {
            unset($_SESSION);
            session_destroy();
            session_write_close();
            return 2;
        }
        if ($req[0] == "login") {
            return 1;
        }
    }
    if ($http == "PUT") {
        $table = $req[0];
        if (!isset($routes[$table])) {
            if ($table == "placeOrder") {
                return 2;
            }
            return 0;
        }
        $keys = $routes[$table]['props'];
        array_push($keys, $routes[$table]['identifier']);
        for ($i = 0; $i < count($keys); $i++) {
            if (!isset($JSON[$keys[$i]])) {
                echo $keys[$i];
                return 0;
            }
        }
        if (isset($routes[$table]) && count(sql_GET([$table, "search", $routes[$table]['identifier'], $JSON[$routes[$table]['identifier']]])) == 0) {
            return 1;
        }
    }
    return 0;
}