<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
set_time_limit(3600);
require 'vendor/autoload.php';

use Aws\S3\S3Client;

$response = array();

if (isset($_POST["file"]) && isset($_POST["original"])) {
    $s3 = new S3Client([
        'version' => 'latest',
        'region' => 'ap-south-1',
        'credentials' => [
            'key' => 'AKIA4GEI66ILGXETZLHU',
            'secret' => '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'
        ]
    ]);

    $bucketName = 'rough-work';
    $original = $_POST["original"];
    $fileName = basename($original);

    $path_parts = pathinfo($original);
    if (substr($path_parts['filename'], 0, 9) === "26042021_") {
        $targetKeyname = $path_parts['filename'] . '_' . rand() . '.' . $path_parts['extension'];
    } else {
        $targetKeyname = rand() . '_' . $fileName;
    }

    try {
        $s3->copyObject(array(
            'Bucket' => $bucketName,
            'Key' => "original/" . $targetKeyname,
            'CopySource' => "{$bucketName}/{$fileName}",
            'ContentType' => '',
            'ACL' => 'public-read',
        ));

        $img = $_POST['file'];
        $img = str_replace('data:image/png;base64,', '', $img);
        $img = str_replace(' ', '+', $img);
        $fileData = base64_decode($img);

        if (file_put_contents("uploads/" . $fileName, $fileData)) {
            if (file_exists("uploads/" . $fileName)) {
                $result = $s3->putObject([
                    'Bucket' => $bucketName,
                    'Key' => $fileName,
                    'SourceFile' => "uploads/" . $fileName,
                    'ContentType' => '',
                    'ACL' => 'public-read',
                ]);
                $success = "Success";
                $message = $result->get('ObjectURL');
                unlink("uploads/" . $fileName);
            } else {
                $success = "Error";
                $message = "Error while uploading";
            }
        } else {
            $success = "Error";
            $message = "Couldn't Write to File";
        }
    } catch (Aws\S3\Exception\S3Exception $e) {
        $success = "Error";
        $message = $e->getMessage();
    }
} else {
    $success = "Error";
    $message = "Required Field Missing";
}
$response["code"] = $success;
$response["message"] = $message;

echo json_encode($response);
?>
