app.post("/AiL",function (req, res) {
	var username=decodeURI(req.body.username)
	var operation=decodeURI(req.body.operation)
	var checksum=decodeURI(req.body.checksum)
	var data=decodeURI(req.body.data)
	const saveDir="files/AiLsaves/";
	if(username&&operation&&checksum&&data){
	  if(username.length<=24&&
		(operation==="GET_LOAD_FILES"||operation==="GET_FILE"||operation==="SAVE_FILE"||operation==="SAVE_METADATA_FILE")&&
		data.length<=1000000&&
		Number(checksum)===username.length*8+data.length*2+operation.length){
		  //Checksum: Length of username*8+Length of data*2+Length of operation
		  if(!fs.existsSync(`${saveDir+username}`)){
			fs.mkdirSync(`${saveDir+username}`);
		  }
		  switch(operation){
			  case "GET_LOAD_FILES":{
				if(fs.existsSync(`${saveDir+username}/metadata.dat`)){
				  res.status(200).send(fs.readFileSync(`${saveDir+username}/metadata.dat`));
				}else{
				  res.status(404).send("Not Found!");
				}
			  }break;
			  case "GET_FILE":{
				if(fs.existsSync(`${saveDir+username}/save.${data.padStart(4,'0')}`)){
				  res.status(200).send(fs.readFileSync(`${saveDir+username}/save.${data.padStart(4,'0')}`));
				}else{
				  res.status(404).send("Not Found!");
				}
			  }break;
			  case "SAVE_FILE":{
				var fileData=data.split("|");
				var fileNumb=fileData[0];
				var saveFileData=fileData[1];
  
				fs.writeFileSync(`${saveDir+username}/save.${fileNumb.padStart(4,'0')}`,saveFileData);
				res.status(200).send("Saved!");
			  }break;
			  case "SAVE_METADATA_FILE":{
				fs.writeFileSync(`${saveDir+username}/metadata.dat`,data);
				res.status(200).send("Saved!");
			  }break;
			  default:{
				  res.status(418).send('I\'m definitely a teapot.');
			  }
		  }
		}else{
		  res.status(418).send('I\'m definitely a teapot.');
		}
	}else{
	  res.status(400).send('Invalid input!');
	}
  });