status = 404; $req = $_SERVER["PATH_INFO"]; $endpoint = explode("/", $req); if ($req == "" or $req == "/") { $obj->status = 200; $obj->endpoints = endpoints(); } elseif ($req == "/all") { $obj->status = 200; //Memes $q_memes = "SELECT * FROM images"; $obj->memes = memesArray($q_memes); //Categories $q_cats = "SELECT * FROM cats"; $obj->categories = categoryArray($q_cats); //Users $users = array(); $q_users = "SELECT * FROM token"; $res_users = mysqli_query($jmcon, $q_users); checksql($res_users); while ($row = mysqli_fetch_array( $res_users, MYSQLI_ASSOC)) { array_push($users, $row["name"]); } mysqli_free_result($res_users); $obj->users = $users; } elseif ($req == "/base" or $req == "/baseurl") { $obj->status = 200; $obj->baseurl = $jmurl; } elseif ($req == "/memes") { $obj->status = 200; $query = "SELECT * FROM images"; if (isset($_GET["category"])) { $query = addCondition('cat="' . $_GET["category"] . '"', $query); } if (isset($_GET["user"])) { $query = addCondition('user LIKE "%' . $_GET["user"] . '%"', $query); } if (isset($_GET["search"])) { $query = addCondition('path LIKE "%' . $_GET["search"] . '%"', $query); } $obj->memes = memesArray($query); } elseif ($req == "/meme") { if (isset($_GET["id"])) { $q = 'SELECT * FROM images WHERE id=' . $_GET["id"]; $res = mysqli_query($jmcon, $q); checksql($res); $row = mysqli_fetch_array($res, MYSQLI_ASSOC); if ($row) { $obj->status = 200; $path = $row["path"]; $path = str_replace(" ", "%20", $path); $obj->link = $jmurl . $path; $obj->user = $row["user"]; $obj->category = $row["cat"]; } } } elseif ($req == "/random") { $query = "SELECT * FROM images"; if (isset($_GET["category"])) { $query = addCondition('cat="' . $_GET["category"] . '"', $query); } if (isset($_GET["user"])) { $query = addCondition('user LIKE "%' . $_GET["user"] . '%"', $query); } $memes = memesArray($query); $random = rand(0, count($memes) - 1); $meme = $memes[$random]; if (isset($meme->path)) { $obj->status = 200; $obj->link = $jmurl . $meme->path; $obj->category = $meme->category; $obj->user = $meme->user; } } elseif ($req == "/categories") { $obj->status = 200; $obj->categories = categoryArray("SELECT * FROM cats"); } elseif ($req == "/category") { if (isset($_GET["id"])) { $q = 'SELECT * FROM cats WHERE id="' . $_GET["id"] . '"'; $res = mysqli_query($jmcon, $q); checksql($res); $row = mysqli_fetch_array($res, MYSQLI_ASSOC); if ($row) { $obj->status = 200; $obj->id = $row["id"]; $obj->name = $row["name"]; } } } elseif ($req == "/users") { $users = array(); $q_users = "SELECT * FROM token"; $res_users = mysqli_query($jmcon, $q_users); checksql($res_users); while ($row = mysqli_fetch_array( $res_users, MYSQLI_ASSOC)) { $user = new stdClass(); $user->name = $row["name"]; $user->tokenhash = md5($row["token"]); $user->dayuploads = $row["uploadsLast24H"]; array_push($users, $user); } mysqli_free_result($res_users); $obj->users = $users; $obj->status = 200; } elseif ($req == "/token/random") { if (isset($_GET["user"])) { $obj->status = 200; $obj->token = genToken($_GET["user"]); } else { $obj->error = "Need to set a user with ?user"; } } else { $obj->endpoints = endpoints(); } header('Content-Type: application/json'); echo stripslashes(json_encode($obj, JSON_UNESCAPED_UNICODE)); function endpoints() { return array("/all", "/baseurl", "/memes", "/meme", "/random", "/categories", "/category"); } function checksql($res) { global $jmcon; global $obj; if (!$res) { $obj->status = 500; $obj->error = mysqli_error($jmcon); } } function memesArray($query) { global $jmcon; $memes = array(); $res_memes = mysqli_query($jmcon, $query); checksql($res_memes); while ($row = mysqli_fetch_array( $res_memes, MYSQLI_ASSOC)) { $meme = new stdClass(); $meme->id = $row["id"]; $path = $row["path"]; $path = str_replace(" ", "%20", $path); $meme->path = $path; $meme->category = $row["cat"]; $meme->user = $row["user"]; array_push($memes, $meme); } mysqli_free_result($res_memes); return $memes; } function categoryArray($query) { global $jmcon; $cats = array(); $res_cats = mysqli_query($jmcon, $query); checksql($res_cats); while ($row = mysqli_fetch_array( $res_cats, MYSQLI_ASSOC)) { $cat = new stdClass(); $cat->id = $row["id"]; $cat->name = $row["name"]; array_push($cats, $cat); } mysqli_free_result($res_cats); return $cats; } function addCondition($cond, $query) { if (strpos($query, "WHERE")) { $query = $query . " AND " . $cond; } else { $query = $query . " WHERE " . $cond; } return $query; } function genToken($discord) { $random = bin2hex(random_bytes(32)); $prehash = $random . md5(time()) . $discord; return md5($prehash); }