Finish v2 protocol
This commit is contained in:
parent
faf1eeef5f
commit
fd74f7a646
1 changed files with 72 additions and 20 deletions
|
@ -11,12 +11,12 @@ $jsx = json_decode(file_get_contents("php://input"), true);
|
||||||
|
|
||||||
// Get operation information
|
// Get operation information
|
||||||
// DISCLAIMER: All php code below this point is AI Generated
|
// DISCLAIMER: All php code below this point is AI Generated
|
||||||
function create($DB, $jsx, $blank=false) {
|
function create($DB, $jsx, $blank) {
|
||||||
// Get UUID from MySQL and insert into sessions table
|
// Get UUID from MySQL and insert into sessions table
|
||||||
$result = $DB->query("SELECT UUID() AS id");
|
$result = $DB->query("SELECT UUID() AS id");
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
http_response_code(500);
|
http_response_code(500);
|
||||||
echo json_encode(["error" => "Failed to generate UUID"]);
|
echo json_encode({"error" => "Failed to generate UUID"});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,10 +34,14 @@ function create($DB, $jsx, $blank=false) {
|
||||||
$stmt->close();
|
$stmt->close();
|
||||||
|
|
||||||
// Prepare data as JSON and insert into `data` table
|
// Prepare data as JSON and insert into `data` table
|
||||||
if($jsx['type'] == "json") {
|
if(!$blank) {
|
||||||
$data = json_encode($jsx['data']);
|
if($jsx['type'] == "json") {
|
||||||
}else if($jsx ['type'] == "nbt") {
|
$data = json_encode($jsx['data']);
|
||||||
$data = base64_decode($jsx['data']);
|
}else if($jsx ['type'] == "nbt") {
|
||||||
|
$data = base64_decode($jsx['data']);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$data = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt = $DB->prepare("INSERT INTO `data` (`ID`, `SessionData`) VALUES (?, ?)");
|
$stmt = $DB->prepare("INSERT INTO `data` (`ID`, `SessionData`) VALUES (?, ?)");
|
||||||
|
@ -56,6 +60,44 @@ function create($DB, $jsx, $blank=false) {
|
||||||
|
|
||||||
return $sessionId;
|
return $sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_version($DB, $jsx) {
|
||||||
|
|
||||||
|
$sessionId = $jsx['id'];
|
||||||
|
$stmt = $DB->prepare("SELECT `version` FROM `sessions` WHERE `ID` = ?");
|
||||||
|
$stmt->bind_param("s", $sessionId);
|
||||||
|
$stmt->execute();
|
||||||
|
$stmt->store_result();
|
||||||
|
|
||||||
|
if($stmt->num_rows === 0) {
|
||||||
|
|
||||||
|
$stmt->close();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$stmt->bind_result($version);
|
||||||
|
$stmt->fetch();
|
||||||
|
$stmt->close();
|
||||||
|
|
||||||
|
return $version;
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_version($DB, $sesisonId, $newVer) {
|
||||||
|
$stmt = $DB->prepare("UPDATE `sessions` SET `version` = ? WHERE `ID` = ?");
|
||||||
|
$stmt->bind_param("is", $newVer, $sesisonId);
|
||||||
|
$stmt->execute();
|
||||||
|
$stmt->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
function pushNewData($DB, $sessionId, $data) {
|
||||||
|
$stmt = $DB->prepare("UPDATE `data` SET `SessionData` = ? WHERE `ID` = ?");
|
||||||
|
$stmt->bind_param("bs", NULL, $sessionId);
|
||||||
|
$stmt->send_long_data(0, $data);
|
||||||
|
if(!$stmt->execute()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
switch($jsx['cmd']) {
|
switch($jsx['cmd']) {
|
||||||
case "create": {
|
case "create": {
|
||||||
$session = create($DB, $jsx, false);
|
$session = create($DB, $jsx, false);
|
||||||
|
@ -72,25 +114,35 @@ switch($jsx['cmd']) {
|
||||||
}
|
}
|
||||||
// Not AI Generated
|
// Not AI Generated
|
||||||
case "get_version": {
|
case "get_version": {
|
||||||
|
$ver = get_version($DB, $jsx);
|
||||||
|
|
||||||
|
|
||||||
|
echo json_encode({"status" => "version_back", "version" => $ver});
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Not AI Generated
|
||||||
|
case "patch": {
|
||||||
$sessionId = $jsx['id'];
|
$sessionId = $jsx['id'];
|
||||||
$stmt = $DB->prepare("SELECT `version` FROM `sessions` WHERE `ID` = ?");
|
|
||||||
$stmt->bind_param("s", $sessionId);
|
|
||||||
$stmt->execute();
|
|
||||||
$stmt->store_result();
|
|
||||||
|
|
||||||
if($stmt->num_rows === 0) {
|
if($jsx['type'] == "json") {
|
||||||
http_response_code(418);
|
$data = json_encode($jsx['data']);
|
||||||
echo json_encode({"error" => "Session not found"});
|
}else if($jsx ['type'] == "nbt") {
|
||||||
$stmt->close();
|
$data = base64_decode($jsx['data']);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt->bind_result($version);
|
|
||||||
$stmt->fetch();
|
|
||||||
$stmt->close();
|
|
||||||
|
|
||||||
echo json_encode({"status" => "version_back", "version" => $version});
|
$curVer = get_version($DB, $jsx);
|
||||||
|
$curVer += 1; // We'll push this back to the database momentarily.
|
||||||
|
|
||||||
|
// Now, we update the data blob.
|
||||||
|
$success = pushNewData($DB, $sessionId, $data);
|
||||||
|
|
||||||
|
if($success) {
|
||||||
|
update_version($DB, $sessionId, $curVer);
|
||||||
|
die(json_encode({"status" => "patched", "version" => $curVer}));
|
||||||
|
} else {
|
||||||
|
die(json_encode({"status" => "failed"}));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "get": {
|
case "get": {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue