<?php

use Aws\SecretsManager\SecretsManagerClient;
require_once __DIR__ . '/vendor/autoload.php';

class AwsManagerHelper
{
    private $cacheFile;
    private $cacheTTL;

    public function __construct()
    {
        $this->cacheFile = __DIR__ . '/aws_secrets_cache.json';
        $this->cacheTTL  = 604800; // 7 days
    }

    public function getValue($key)
    {
        // $secrets = $this->getCachedSecrets();

        // if ($secrets === null) {
        //     $secrets = $this->fetchSecretsFromAWS();
        //     if (is_array($secrets)) {
        //         $this->cacheSecrets($secrets);
        //     }
        // }
        $secrets = $this->fetchSecretsFromAWS();

        return $secrets[$key] ?? null;
    }

    private function fetchSecretsFromAWS()
    {
        $client = new SecretsManagerClient([
            'region'  => 'us-east-2',
            'version' => '2017-10-17',

            //FORCE static credentials
            'credentials' => [
                'key'    => 'AKIA4G5EDNFJKX4M5WXI',
                'secret' => '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',
            ],

            'suppress_php_deprecation_warning' => true,
        ]);

        $result = $client->getSecretValue([
            'SecretId' => 'quicklly-website-dev',
        ]);

        if (!isset($result['SecretString'])) {
            return null;
        }

        return json_decode($result['SecretString'], true);
    }

    private function getCachedSecrets()
    {
        if (!file_exists($this->cacheFile)) {
            return null;
        }

        if ((time() - filemtime($this->cacheFile)) > $this->cacheTTL) {
            return null;
        }

        return json_decode(file_get_contents($this->cacheFile), true);
    }

    private function cacheSecrets(array $secrets)
    {
        file_put_contents(
            $this->cacheFile,
            json_encode($secrets, JSON_PRETTY_PRINT)
        );
    }
}
