<?php

namespace routes;

use classes\authentication;
use classes\openai;
use classes\upload_store;
use objects\logs_o;
use traits\route_t;


class uploadRoute
{
    use route_t;

    protected array $allowedFileTypes = [
        'image/jpeg', 'jpg',
        'image/png', 'png',
        'image/gif', 'gif',
        'image/webp', 'webp',
    ];

    public function run(): void
    {
        $this->post('/upload/image', function () {
            global $response;
            // Get the uploaded file
            $file = $_FILES['file'] ?? null;
            if (!$file) {
                $response->error('No file uploaded');
            }
            // Validate the file type
            $fileType = mime_content_type($file['tmp_name']);
            if (!in_array($fileType, $this->allowedFileTypes)) {
                $response->error('Invalid file type');
            }
            // Validate the file size (optional, e.g., max 5MB)
            if ($file['size'] > 5 * 1024 * 1024) {
                $response->error('File size exceeds the limit of 5MB');
            }
            // Generate a unique object key for the file
            $objectKey = uniqid('image_', true) . '.' . pathinfo($file['name'], PATHINFO_EXTENSION);
            $uploads = new upload_store();
            if(!$file = $uploads->uploadFile(
                $objectKey,
                $file
            )) {
                $response->error('Failed to upload file');
            }
            $response->success($uploads->getPresignedUrl($objectKey));
        });
        $this->get('/openai/test', function () {
            global $response;
            // Validate the input parameters
            // Example image URL for testing
            $image = 'TRUCK_WASH_EXAMPLE_5.jpg';
            // Return the response
            $openai = new openai();
            $response->success($openai->lpr($image));
        });
    }
}