From c3894602f279729dc9bb017b9982a08a27fcd746 Mon Sep 17 00:00:00 2001 From: Kwesi Banson Jnr Date: Thu, 19 Mar 2026 18:54:07 +0000 Subject: [PATCH] Initial commit --- .gitignore | 40 ++ composer.json | 12 + composer.lock | 918 +++++++++++++++++++++++++++++++++++ download.php | 42 ++ downloaded_proposed-l4l.docx | Bin 0 -> 15053 bytes get_file_url.php | 48 ++ index.php | 15 + upload.php | 50 ++ 8 files changed, 1125 insertions(+) create mode 100644 .gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 download.php create mode 100644 downloaded_proposed-l4l.docx create mode 100644 get_file_url.php create mode 100644 index.php create mode 100644 upload.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e0299b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +docker-compose.yml +Dockerfile + +.DS_Store + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + + + +/vendor +/node_modules +/public/hot +/public/storage +/storage +/bootstrap/cache +/.env +.env.backup +.phpunit.result.cache +Homestead.yaml +Homestead.json +/.vagrant +npm-debug.log +yarn-error.log +.idea +.vscode diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..2098f75 --- /dev/null +++ b/composer.json @@ -0,0 +1,12 @@ +{ + "name": "kwesibanson/minio-uploads", + "type": "project", + "authors": [ + { + "name": "Kwesi Banson" + } + ], + "require": { + "aws/aws-sdk-php": "^3.337" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..081cdef --- /dev/null +++ b/composer.lock @@ -0,0 +1,918 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "7c7fec9a47d997e83cf444f1c65acf6c", + "packages": [ + { + "name": "aws/aws-crt-php", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/awslabs/aws-crt-php.git", + "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/d71d9906c7bb63a28295447ba12e74723bd3730e", + "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "AWS SDK Common Runtime Team", + "email": "aws-sdk-common-runtime@amazon.com" + } + ], + "description": "AWS Common Runtime for PHP", + "homepage": "https://github.com/awslabs/aws-crt-php", + "keywords": [ + "amazon", + "aws", + "crt", + "sdk" + ], + "support": { + "issues": "https://github.com/awslabs/aws-crt-php/issues", + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7" + }, + "time": "2024-10-18T22:15:13+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.337.3", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "06dfc8f76423b49aaa181debd25bbdc724c346d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/06dfc8f76423b49aaa181debd25bbdc724c346d6", + "reference": "06dfc8f76423b49aaa181debd25bbdc724c346d6", + "shasum": "" + }, + "require": { + "aws/aws-crt-php": "^1.2.3", + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "guzzlehttp/promises": "^1.4.0 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "mtdowling/jmespath.php": "^2.6", + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "composer/composer": "^1.10.22", + "dms/phpunit-arraysubset-asserts": "^0.4.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", + "nette/neon": "^2.3", + "paragonie/random_compat": ">= 2", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Aws\\": "src/" + }, + "exclude-from-classmap": [ + "src/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "support": { + "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "issues": "https://github.com/aws/aws-sdk-php/issues", + "source": "https://github.com/aws/aws-sdk-php/tree/3.337.3" + }, + "time": "2025-01-21T19:10:05+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.10.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-08-23T22:36:01+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "481557b130ef3790cf82b713667b43030dc9c957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:34:08+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "21dc724a0583619cd1652f673303492272778051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-08-23T21:21:41+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" + }, + "time": "2024-09-04T18:46:31+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:11:13+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/download.php b/download.php new file mode 100644 index 0000000..5dd8ca6 --- /dev/null +++ b/download.php @@ -0,0 +1,42 @@ + 'latest', + 'region' => 'gh-greater-accra-dzen-ayor-home', + 'endpoint' => 'http://192.168.68.152:9201', + 'use_path_style_endpoint' => true, + 'credentials' => [ + 'key' => 'c7TpMCcy8txJftPu12Za', // MinIO Access Key + 'secret' => 'NpbiqTjYkUDxUjliOP5fmXaTu6fOSWoKKJXnK1Ev', // MinIO Secret Key + ], +]; + + +$bucketName = 'permituploads'; +$objectKey = 'uploads/Proposed L4L.docx'; // Path inside bucket +$saveAs = __DIR__ . '/downloaded_proposed-l4l.docx'; // Local save path + +try { + $s3Client = new S3Client($minioConfig); + + // Download object + $result = $s3Client->getObject([ + 'Bucket' => $bucketName, + 'Key' => $objectKey, + 'SaveAs' => $saveAs + ]); + + echo "✅ File downloaded successfully to: $saveAs\n"; + +} catch (AwsException $e) { + echo "❌ AWS SDK Error: " . $e->getMessage(); +} catch (Exception $e) { + echo "❌ Error: " . $e->getMessage(); +} + + + diff --git a/downloaded_proposed-l4l.docx b/downloaded_proposed-l4l.docx new file mode 100644 index 0000000000000000000000000000000000000000..20a2fd21443d31f3957f2c21a30b570165fe7bad GIT binary patch literal 15053 zcmZ{L19&A%xAu;0Ozeqm+nU&#*tV^SZQHhuiJeTGOl(i|XU;v}J-FY$`|awz`{{Re zKdW}Fs$P(j0s%z@005AH>J$mdNEG^GP9OlF7#ILR{5Wf9V<2a5W9vZo)z+5Q)ylFm zZbBBA0X0as@Mz;`%O9f;mZ8QrcL;RA$?AeW@>R-1;OC0gqj;D983F9^1;7i(Qqm7FDaCTe$+eium?>j*$ z%{VgzGpDwhpOaBpt> zu?Vf+nUVqsId)iFRea$(M&!J5KB&26Zq<%$JEO|ir$<<5wzI2C;PQ$d)u#mF5ogLe2_Zt+0Uuw1Yz&XibOd)17r^^Ev5CSHjZfw4!KNzidHy1F{@;toRu zi%oo94+9ik+p707ZZtPq=&Y-_WTH$5Lcc9Nuw4@hv{22E#0wQ zZel&8C>2+dqrcQanH{RS2BXAjYE_EAVQwS|JnaNg+`tdI@-Ir`;q1Hz{_Rc)LstNZ z2#%nZgl>0Q$5QAwW6Sq5S`U4tFCMA-ta;`~KGhxz zP6H)+Zr3It3W0?{uGtxZ)H~v3WS^XzDQ@;WK+KoKu7Iq`ONyR{&9FvneM-sPIV?VV zbr3Wg{2h#&zlIdph0q3Zo?FQWRQt8mtPagQ85Jw2=WOlUaV-%tJDc!j>$XfDk)&o4 z|G8gJ!B@Nb76h?w6T2yVhH%d>8psBzYxfaC9RzXToUof%npq7g&rMfI@j|z~F$qnc zfElH@qRAd+-zF{`rY8yG#(s{3AP~bBzPi5U9Mi|LcTt}`>Y`>t#Eh!j@S{F>Pcm9mPTE4g z4Wg5DnWyS>xgTq|8e2!HF1Wh<#h>s9*TGns(R7%!CK+>wBwqy-2c|yjf&|8^pVMpF zg7Ued@WDIp<&y#N&_iQ}#gzu%=P8Z~1P|aY$sNM^0@SKtF`T3>4I1|yJX_IgcKf`3 z(P(0_C8AE|3{2gEO$BvwV!5Ho^yWp?r;6QnDyPZs^|R=ngV)ijyFUJuZ%gkB-g(&% zC%ucK)rLp65X}~*%j4bu{F^(ZD2NGx0RUDXCjGay`QvZyVC3j%W^Ll|+uAg$t=X@! zBEF(UW>I|ubzK-3y<8pH$&x+OwDsAdx%sBE487Nr6wORZ;U;Ng@{7{s zW{0ss=Tl1fLpB4;jo5pk-PtE`}7nXN%NV6ZTU<*`Sz z)gW`;a^j&5sAY~M#0JdH)SSkpq0%JKV=vEh)-}qbQ;^J6pfC`|-29BdVk$VZIyB32 z)Ax*Gzz=%f%0f-s{k$sz;3YtCav;no=weA6%8uE0*hLq0vt8hivweV*M0PZeu})D_ z$jx$lLl&7BS z?o)4!owb~lP%o{8L>h94Xg!3X6u3PLAQqD)p%@{6CshlQ9OKB%MD81Z3A0)Za?xxP zPsp7@+LBW);!+TtA#YIjTF|InZ?;J0Fhh&WRx&D$-I(*JXv>*NfW+!3&wA+iQw=ZZ z)Es0VYo#}@Q>E)_>`aq@Qc(!2&NXr_Fhe{noiatPUcc&4f+q+GyaIjdIs&rtn8VMJ z_T+S8E*3u9F7Qrj+-AK_b9#`5q}^!zyw^WfKU5YDUDFeq_Yfm2eYtBpZ$m+m%ky5c zy>CP-&`ejTs&@C31BNhp|@B2i54`?Cn;h-pablAq&IkuRdCK*ky=&EB5bF$Rw?9y}A|B@L!(N5$4Vdn30+k7j}OZ#sY@P}FTL1$#RS@FdrdL1H`1XD zE87er!S}rDy=N`HQg`*-TRm+P3=wl>qe|0GQwCdmi3KMyLC!f}4Qo6UXjD9V3tmVp zMOvBFH`*MqtevC&0Fvubgu=J!?>GKN3JZsURlDtn>g7tnLo?|?!1B?kU2NarMcmHq zbU^50|8C>28V(5)Uz8WE-m@9H+IUA1qBX*RR2s+)=wW4LB#95c2FmL6Le;GFE8 z)n>#nAk9WmJ&|21EFobRn}UX}>BE-x1|E(jTZY|_&eQVnL$lj%67OTKbY17ZB!dOa zYh|ZRxEXh(dRC_frsf4aDcI%q>WWS~t9+*0xa+SrIM!+6k}f({9rJdFr=>KzheSW^|t5@`(*Lnt1cQ;1ON5flph zpPQa7ybj6kK0*5uh=c`7Bd^slosDVKk|1Mmt(f3zLA@O4zQ0`^JUf|s=1X7=%&eGR z_aBYq#D01faCBfDtKT2BG%Uaj^F$s(;=$&bcD%j$!ne^WSsxNp1TKYFSbffl@@&~K zRyR?8#eS#aC^L({=$AZT*74o@a_5d+hZZC{>SAXAKfO3!@yaZI08d6SX(c`IM=c*Q zRLeb2?Qq4XRZMpEc&ah5TnSAL2 zd@^RkP`iXGe;JLubti!}uL>u%tx5?*W%_>0M)+ocEFYjAXsf6JKaiMk=%_z!W68Ip z=OSb;Nu1gUt{8u$;z<~<6F->2nBpYqipggIW|SHV>!yK(m@2Ny87cWIpKyDynyV^? zM>Da(S?4cXltC!V@& zOP$Q++8hX;N#@kR<9sU%Hi4Mm8_Kh3XNRH*!>q^f%^a`SlzEowXH@O4m!#h2`~|Wj z#qI6yGzxIW53n!z?u_5lN8E+Diwvv-jYQSCQ(LHo>wbXX!A%@>yj*`ih=}3-Hm(KQ z=laRzM-BHkChB7?w3!6$!tv+`vtwPO)4mmP!y)gNvwkDw0Vo(-ll&*GH&>CR-sheN zGo^M04KUtUFOmFBg<~6^_q$A6;-`R52T0GBGGu+&ee*sZ7c+1OZl~tL>qqJf)yV@1|m@k0U+lI0-z=cd;>`k`TKT}`1^8^ z_#M1*sPEIz0>OZ-=dsAQL_hm|e1ZD-g60csE$oSEOWc$1i+zOy#_a>Wm4|8UsptQV z(W}J>$3#9uo;d#jz>ds7Kcfr|bX^uhnsOk#h3Y4(GX2XI4`~xSYA1*4SA+{vq^lWq zKsxu=eAZQw;u$uqIwXXEM_v$NB2wn@c*w&aP};MBaE9_FAt3T@$uptXcfi~E*!BS+ z`LWTgU!lUn5ED)6C-1{g$oO3!(rUIbgjx7)dv^?CfKLbIBW}21DWFf8MixLZa$pE; z0X&d?Acy>rI1pnv-=&e^jcA}k7}EkBa-yK?GXsTIWczY0$+iJa?eKLm=WOz%Jfd&3 zeJNAkhsk@CEn$!r*Z@jGjze>;xWFGIhV_h(m(IHscTAkouMoRf3Jc0|H9xyA6JYMQ z1QI|Z+CU)Y)WJd(G{8b&CS{CK zaQ#F=A&Yp{0;&4;J-s7CNu1dEZh^u&vF*ej?H^1pjtJVm`r5Oc4Q{*gMj|(Fm|HF7zlwtIt4>E^(lq z(ojX!7O)ytdkhnwbW0&1y|N8Jn96RYvcedoXK=u8)0{5>G@-cM{3imoV`Z@CBcTWD zy&&8d@OY#W1I~5=McZ`rHPRU#Z8bIt6 zHDEhB;uZ(!FbD7+SJRkFFA9nk0q+OCE11(8ifF2a4k-6GH}x$PU}?aFhFf4S$?biC zTchWf!Cjcvdn5hZZrsUmXg`WI*5h6r40Y3qMOt$o#@Mzo040GZmtrI2E`*q00rtZP zneNGh!A_}yDx|@6#gwfAco)#|ULa zEniI4ZluUSDcY$f#7nt@x$Ye_{@kD#KOkM%SgW#ZG=LM{2V}ptz=+I;Ogn^njrt-j zq`3NpKsVXQs%qb<60Z~+##y^v=-7(MfUIM`ZcQaR1@E??OtIv$|ENImcrju^R${Hg&fEzd9y{ay5p=+?#D5-uTUY>oSV+Ml zO=nm7wXIw_(oW7=_psSl^`%p=bfi|JdZq;N^!(~}DMM!H93+KjL+H5&OI2PnQiY&= zxMErMhdg$@2SCBVF;+#+-a)ySLV(tM(!93-BMly1S$Fh{+*D#$Tn|Es4)%d^w z9STafqXyK+wG&`0qCP8WfR*D0l6j0*LkoRF3*i6YXl!vdu`($3H^5^4j~t=Zk0HQ%iKTfG3uczKe-D;Q!uJm(A_P~yMP;! zy^a@xpIn^}xZ!MKRaVPss30WhA%WLoJbIgM5hUrp*vtEHm@QX**2Wj@>LC1SiVc$I zd{7W6fVp;>)-c1+Q2EiHk&0{QX$|rMs}LZyh-R&{!ODt}^ToJ|Ur>+MqmI&pvz(<@ z8g42K#)?u8a1}YhqnDpYGpmN|%NMHQLM6mPOR@S+#Zv88bGTg0Lnlef2s!IZgAc{Z zkxc;I<`r+k<+b39*2hd$gqkeEHbXLqyQDF8C?hRl`afn(KA=UcUrrdzU=4)X>>Hs; zK4j(fC!DA(K1YG?vc}k954Pk_{Rt5LA3%)f08AITi1uIq0l|bG135P`j$k7`Suw@ejCDodpS;<<7Etjv9}J z94Ebpvcyfl^>URw2wRdR@i zU>7~c4rZ{Wa_Uc58}Zb5IDI_wNK2&tj~SCc0mSh8k$oe$$cMDO{sY9{kNjz*rObn6 zgXgAby=A)ZZJ6}CYwR~ zo3YMs{Tws(u6UCY-V0A4Ub*)cY@20P1h69|FFNBWMJE|4OSKda!+Q;Zz z-NvZNl$KQ#+_=7Vi}?4g1{%FdH5}Y}a8iWA?*dg&&m3`ijD3n@h`(+ZvE{->LRxL&y8+|%tQ=||S_xWE@_IcLd@?u# z6$JA;BdlTE~i$I{7iho&%nio4kE>C6CeMk%d; zQ_-&11

C0xg7cj2PXd@N7pPp*ec9FFa}1mofXDOB!M@od?aP57p)kfg+0z$%0(x zt)$ddvD6i%!u5zUI%ZMj6(p~xzydYpc70vB`#EaP|ewWofj zz&x75Jer!k$_v4npTyyB#OwnCPOCf%X8rSK_+K*pUiu?K2*nhGniPUq)q?IF%4}6W z_@(m>afa8MRB+>J=%nhxVDk(Q#UQT4+!RA3WYKYNV)kv zPMN!s*qljeW|r@MKwH|w`~pr<`4iKE?C|1@R%t$mn%K>!()<nrdFCA* zuig<{DAbPYxy<1y-sCzbNcocZGNoqbFb&bK<<5a?jPz7KIFucII+cbwsH!*q!=`3) zDnh)2YM`p{^>Nx>PjL>zL~iJ+y!dw6lM>`EWqcKt??9hSRn6Su?8S1Enolg8JOb;- z=*9~1=nAwqwybt=j5sS96T)E~O1!$(pp??ZvXp z^K-ns)48DT5;Ws^>JxcJ`@g03A!1Lvz>4qayqc0cbf~6URp)w5E8J7OFAcsklM#k9 zHe-RJA)8Bc8>jU*K1^D+w(OUy3fg|!!JAeQz+an%NL(GJbAeZ!ewcEHO3=Dw!pc&g zKFexT{1uQS$YC8{J8Zf5vpe0PyUAPgM>eAmtx5rm1$+&0wa|c;dM?5_Pw_KMXEtZ~ z)%^;dW+`PCnm36`$IZfV1?FV4Wdh99K3hUrwECPl+sb)ZvHj#~mD_5fZ6lzn5?M$5 zWtN%Z=Hk-dQZC7y*%^n%=qBiGZO#I9N|RG;z2^B~gPZbM+n~^LE~Iu@_Dq~AI&Qc1bq|WMY9G;nT$8iblB)64B?YvT_NA?qcR<_Q?gb0Ro*fevWV`U z{deChApXrC)yTD)!jb%BrKn7b6TbFP7`%G2p8fMMHLq>X3<~d$w#7lODD$^}i{vm_ z$f=mE!=XKW_*SK`0RXiBD9zE-$jXTBkCx%LfAvgVyLyfltiA%i`9-9a`ehO{Mv*$gY)nW13)On)^Pbk=&gnge@oh~%vghs`Q}(XTcU zibUfG$A^3BWcb3O+j-XElPofDl-wk}OnaK!&@@021Z#)+*qn*i$_+~or-+b*Sw!0^ zD#dyGg~K&zm|TFrMv-(Z?8vb(<>s`as-E9bz?rmHKo&Fenh8k8ku!4#a1@t>xXvgo z^@TvTaTff?&KzuEo{i)UsJ;9IG0*qyS~=3EV9jgA6v(ej1zxst%S$T2V!|&H98_4q zaTlM8;VqIN1FQ%ERmg-93F}TfiX=wHzH;guIz^viXXu)dJaKs0M0Z zsKY)Jb2pGMM3Yh#G1PIdX+;wt1=@g!>0D`RCO~3<>NovFUv|{$uTR>7HkVgYd*Cwm z2#~|f?d0*lxTk5CjVTeC*~mIv#)r$~6v#stG5I#lRME9rg+gL3@7N4^U$Rsy>f|px z2wEJnX4|~$c8=WDCr!~>Fz{Su;TSCSf>ordvf9T#mcFPBY%}Lc4PYFL*+so{3ofEZ zY|$B_01^7m2z-Dwq9>VZ%1S+l`fZxEV!>tG#TC65y3-P7*;$his)k?~^THe-x?cnA zX6FcjE{hku_#rD}s{8q+Iwaed58vncr8gN4ROR!_{cdsh z+qDQtoNDY;m;3E=yx3IN+iCO#e#vDgj%?W@NCp9TRi1%u0O{Z!s!)!^TUtT@#tvm+ zvM6j(4MFJ^G2YUa>Ol-YT21tER7dK!yT!G_b!A%W)li$+RZg0#T51I4mK(CWJiL1hSF$0YZ*SA>mfQVYB2!EH*lUOzaRK`-2rr1>#5V=-6CAusg4O(z z<bI0N*f^KEums=fF%LbdvYEwZf|5S16Hd9=X5b3aEm2SU4lM!iFd)w&x@ByQKg~UGA!?4_ zr|yo6wszoU?32B+X>y-@dd(I)wM3y+t#enHS#Y(%HyC(&!y%xWBK;Pixjl1C@yZ-j{hOMyP_H*G?!xvl=PD&`<~`p$;XyMtVV7j6NtaTn z4pelD1(00>^yc#ZI2by=e;<)vp`THP3*L=r^5TJYY0=?Y`!_ckF{iTyC#6qDutE(B zUAraEiOY*58s?vIFD8VwH)SzMDwld{mxHXtVn9-y8cSPb!u8{z0xDVp_>sewJb>t4 zU#n+jl9+e{sdcstRgVHd9TGtNQEIO(W(bZnvdqG$uUJoR21$Kj?vB!DMCT}=U4_Qm zD1S*(jh(-T(^5K;I$jKKGo-|*dxJpRaNyQo>W5vf$VkTqoKL!1avqDbPPEdB{v6;`JNc9x_X|zWGrj-yYFLBT4;8MPmfyFA_VWa za}j4G+Mvn~SP&DM^-?JYSn7~wpuih*oSVDA7MmbYn@lruo6Og(HO*XS=(I05WHfQu zOB*aVpF>ZLWQU^XM-OV!GH#B35ev`u2B1&2?rIoxpFON6ZJtMJ-q&0-zWA-#z^x0I zu;anwOyO@X^u&U$b>8!J$&!a-Pt}*+>tXGCT=8gOJZY~yn@_NgY=R^)zQX-hx6Qm zZb&5k1n5vcUXJ}Y`MMh~p6mGGwygUSemVXm7rMpUC;1Zc1+O}E2xOjEdnR+_--T&K z2i3`oco?um2rsn1SuQKq`j3AxBNfa#xMXG%|0&?zP-5-g&Ki3S>Wvd-iG_N}g8fh= zaBr5BC3t2gCmcW?6^>nked5Fd{43`3s|Z^0IQXdMFXaGqpJT2%nJmrq9U2lj-rD3V zj8%d-PvpXKYwl*&M>_>oMxPRt8#Arsc3HH#O!yA!mSDbeXg0IAnl>{mRT`fbQ81ev zB=y1TD4DdHx9@GA=LjTK5WJI2vHFw`=P2dY&^{4_@{7)NrgJbaqNDwq}taDSRe@Ud1x740uxP;#k+aA7@m)A;<8=Jb&8 z{iTD`-PS~rv0tCvO+m&yaxbfcjoe=%=F6f5&fu5wSZ4Ez;IGtzzH`i{x)CU`U;!AY zkV5diB?7b5xeBG%J~8Dlir#zK^6Q0zA@ZIi2T6Vy8zbEmZRh>pnO`n{L8hbUcY)Q* zI~`r$#Rkj7(=U|Ld0jq|rwk5id=0vtBY>d=KrGidZnCL4HEw0YxG6tS%+M^+;AiL< zUw=_~#pEBn0R-mbS%6vbG>PY4fJK1O`bkd|x zBtc&nk;K;?<=_pSfyfHyrWAG#h%zyw_W!zp9ez^q;^<%00ZH=xiyS?+C>UiOLHLa- zuDIwO^^z@vc5=iR>XehRlWv^+^PzSO5x5taRQMaR^jvqIRF+JBUPn)yU4pG6cf^p~ z4vZG3fB~(_&;#hJ1-keY6qp-)GD%(=VzNMKzD89iEiK3zmIJei?#}G5LwnZHd_*?@ z@~uE91!q*8zlngFutU`B@eGub53?O2B^@XLZW_25;|Y*^yl#)u2k8tDCuJpG0`VobAj zW>eX*j6kHAKMTrB02hQ_N{wq$vR@aKeUmCN$N-~o^)RA~TWO%g8oX(t4OQjSfwd`h zbsHC4dP;5!l|*OzsjD)rrsW9;c#wKjW!R5~O3?UDl(uU_GA+7Y#P3y<+7-D3CK*Dl>P>Ck5*GgW02pwMUV5G&dfUQ-4xVmtL9%3+9#f;MFL}* zj7K=YwUn6#@uSBB)jb-!WxDvjgcq%UzNUXZ@^*#%$9%Dvmr!+Mht{S0_g+@&fbLJ4 z&8IIaO_Q?zkKofWbl_Veabmj?u`W4ed9D!}S!?#jDF#?=ufCgaLdO!5BI@!Mqx&?c5#HXONj!B0sjfdIVcy*$|DoJb0(`>Svn#(9&SQGqA z_ySHe5`4&x!oWA7h$rdPdCad`R*p%Vd*+&cj3k{1k@TH!ucR(yj@)mC1S9}gxUA%y z9Zw~}X$W{9rq#W&+Jhf{!J{b z;stQ()ZFCU=Xd_RqnQ@ephBkJ^hzMCp!B+jnrKYnqa~v+IFXDsFdlW2<_C7AZ8w^w z$IXmq%}NQdnR~d0;x46MtnO5R)tPFhOkFtRe08PSyiOS*g={I&-f5sU`y|d^cFKUN_+gw#!GprmC|ydSs)@H89R2jPXE3BV(B#15&nO&Va_c-@MOxZ>=^7Sh@J=NTplsHA?{ zUMYv~5#=#w8aD$gL(3Mt&Wr_F?sBf_)VxF_;L5gaaohkiSJFSJT4IzB77HCc?F1u- zCpA|sp%9vWPq7>$$Easd3!)*UMXOTBu`JBkq#&yKv~4RJFF#iY1}X%)L>A z?V;j?i2IV-?n^S;ifDjw3VV$k4@O+lo*LnbMN<2j!UIl~R2Wxgm9VPIVCrWX;0t@m zDcIqwIcp|3qaxQnPz#M419!Y(Z#@b#LLIrd;0Dw~@KgBi?&4T>Ta-12ArqrkGuGN% z99EuuRg|Wbx%M5dhKXQSui}v&E^I?zJJW3RSFvKO-at$AQcF}F;!Z&8a89LXN-uMS z-&Q?cK(13Kx{k9qm6JAe%QqGzCBqZXsa{Lw9n2Vm!3+~S+Z%RVX9$gXtpLufs-~PN zSWIb!wz(aI28}Kl`KfG0V-SoBDk{BVic3PtGGU0r-UKX+6pb^>pdtXKk0;hev0u1=g>aov$NWJj6&;wA5pW@Og z(~7#-kavMZ+x_JmEfeIwU!q{-!XxIV6zwuB7CkaaxuDiHe;);6;7T8&b-&mkQcKSr zk3h&bH+xo5sPhTv8BiWU2{j0#EuznKk2+7Sw1nQ<;|cd8opB=A@z65Lx&iI`1g2|1 zdtX@eWxBeTfO0GQM}|gFITt~1NsPmtgvVTtsP=lj)vHCsGLJ+55xij`Q0BCXnMD9l zQCit^Qs>tgw(P>Xg(ppM$&PFp2*eWeep5uae9e+>w8a(blKeviFegCWH0)84#$7T3 zlUteqK;*)h-LGU%)K7W*4f3REjByhY?AV&1@j-^qE)iBw4s~rg?rQEw>CFJRX;bM5 zDy`Lmuh`P2Fa&8sE+sZx@rNzn)o)b_L6xA=H|L<0$92)2gFE6p@BFZw(6P1Wo5bF) z?0hZ|X*1fx!KQ}k5&0HbWhD(<6EFO=r|oieBIceNv_>NS9k7Nqm`1h`Ju@|DEh&xH zK4nGfSx2W$>}ju#l;ZDeSI4aRT@5!6EQ?K%mkvgRf< zi-A(Y%Tt@K(CR5xP4>9Q+8CW&TZ(Ol+CI$T&X{4=k7KWIeA3jLtD1}<&S%oJT-}LD zZ%LsiDG0+jubkL9yT!D2&a>d&th^p!5SvUHFt*5kwCD#$6?|jmb29Qeb>l>D>_LVQ z7{OY6$_bk3`bv>sMV#9EFA?^fH^E9xrpmuD7ewUj9abV{8=FCt%vj~g3z^Lg_vq>e zcd{Li0I{?SMrth(^GWWh+r^A;Sh_61>*beF7DQ?c1p@-+=quqPCtNHMItCds4=*S} z5?g+p$XSn!aS@Q9tlw#^TjH+g%1;%gHLZl%X>u~T^e)z-R&&~!fh>P46uk76>pi74 zcx%BUaLcS(yj^2u+Q&CKMoM|O5Ic&fn!eatY!^KheMR=MS;M-;U*%{8VbUx}oe?A4 z>G;k}H#d&Ylm*-F8|^0(km@w#=2VAU$a!<0q{-W3qI%gH@e|mT=DOl$^^y9E%hAY- zE4;ksSAj9^{<`H2qH&0qQ)s@l5Z-HQm^{!~wT0f1OdJ-2JHe zJ4Lh+RNPdz?EHx`02lOVyg{Z z>cx65A#gY}QS&O9*kkaNWuFeYadUuoX@p-szordzUsN8T@VjfNw^eqwYR}1F((G*V zjt~!YW7pVAM|v1HUuE5GH(H!IeCq^l2`n^2ib+!+UmFDLkDG>b>c{3DDepOURzJH!Njxnp{KGr9i^UO?1X(GaF z`>KyEq;#6oRJ5vLqg*1WY+8$j=n~@NK%WZpBf6SIZYyzwU%6z*`;t}-OxA>)4@4Vg zi1P7Jj%*(@s&(#V9ChuDEFI`*f47-&QnDZnu))>HZktyP;*hyT>yC4{ zf}OsJuEs=ZA;=HCe1NC^ zDqDBhc}Lu(XYWrph0hA`1QF$hff#pAvR|LtY4Kf^$5UrsHpMebw(|ZO znmxCjoFD)IsMOz5)2*GX^o{I4vUdM)Drd}Cr_-Yb>wXqo-6vS)H&xP*iKlcrE;B1{ zumF+OA59rym+)9iULii!|Kw5d;rBG1ErQA`sdGc`gPQU7n z8}r{Ms?+i?g)0%iP6#tIq?z9{FwM;V2>$BF4k{hb`mrJox}vEw75+3BrijCw5dV7M zK#j+WwSjXm@NEQD9W?IuPdy1TQbH^_-hGedDvaC^26wyJep|YF6SkgC z;`1?ozW%Dlee<)vPE>cNtC$VC|6$6edh@AL+gQQ-*=x!MfmrdH>(ImdS?J>R#$*2C zf@uiA=@C)K~=@&mmUqx8ANuXjtaSCTNkSvfagB2b~ z2Jj!7K5((Cw%r&c897`Z$`~Tu$L|lp)5X5LV7C;n z+o;V{vRCv_UJ;$|N@CfwfkuJ&Sq46~XZJz3#^Rf9U3u5xlp;nG%dzV~UsH0GbP?V> zvXJDNoIPz%<77;RM;6vESptSdMLJAea#rYt;5KlsyVm{4f52Wj8;n5MKs|NhidDlr z^_0Zmui%bUP9Tc2g?O5}QCi{Iw^qLc4H(&2uaxvWC&*)g4?@zSNigkJp zymmd4)y;EL3GQ6g8&zq~3(MQ?T(3XNnuYG1e>v&e94xLWH@g|A;+Ff=b3Q}-bEKjC zpmg|Mi<9#a#X|Ib9_;TO$YUKl0<1{!@)(mDpnBhiJYERud$73tYuy zM)MNSb97)y&5o?97uSF!SXgShA}smy)i~oLF>~0pjfGQPD0FNkBeITAsz*|ly#2d+ zkdgavQT&zX0U;@9BZCQ*u+NlR0u?=x@nk@ua^gBXJ?(%Y1a1 zBh?U)s~}P&C7@AhP*3z=J$=HG_>cqe(-SVd`k^ymIR?ZVjQF5+B zIAptGLLENQa*tp>0_0sj!qpq~*SXJ5i@#kOs8bYUe#Xdop z8OpjNJECVqH>_+UMB=M78yC;lh4_{oES*qGJnz8gcA-I&PqNq;TT<2g@{2jV#-A6o zqjt2~km>%jBgDBm3*J9Ep!LJ-;d~tbh(G?%4Dfd+=^wK}|GjSSLwkSw{JV

B`o+gI{(oz#{>}e)dCFh>#g8HRe~MN9P5*bU z^dA4{me6aU*9<1b=3!=Ly4$BN_M{C``{zxcPz p|J9EETfo0Z{9gjRSpR&0|IhfBlL7<(eKqXI2J~Ssn%I8-`hTO!#$x~g literal 0 HcmV?d00001 diff --git a/get_file_url.php b/get_file_url.php new file mode 100644 index 0000000..9106ce5 --- /dev/null +++ b/get_file_url.php @@ -0,0 +1,48 @@ + + 'latest', + 'region' => 'gh-greater-accra-dzen-ayor-home', + 'endpoint' => 'http://192.168.68.152:9201', + 'use_path_style_endpoint' => true, + 'credentials' => [ + 'key' => 'c7TpMCcy8txJftPu12Za', // MinIO Access Key + 'secret' => 'NpbiqTjYkUDxUjliOP5fmXaTu6fOSWoKKJXnK1Ev', // MinIO Secret Key + ], +]; + +$bucketName = 'permituploads'; +$objectKey = 'uploads/Proposed L4L.docx'; // Path inside bucket + + +try { + $s3Client = new S3Client($minioConfig); + + // Create a pre-signed request valid for 1 hour + $cmd = $s3Client->getCommand('GetObject', [ + 'Bucket' => $bucketName, + 'Key' => $objectKey + ]); + + $request = $s3Client->createPresignedRequest($cmd, '+1 hour'); + + // Get the actual URL + $presignedUrl = (string) $request->getUri(); + + echo "Pre-signed URL (valid for 1 hour):\n$presignedUrl\n"; + +} +catch (AwsException $e) { + echo "SDK Error: " . $e->getMessage(); +} +catch (Exception $e) { + echo "Error: " . $e->getMessage(); +} + diff --git a/index.php b/index.php new file mode 100644 index 0000000..13b75e7 --- /dev/null +++ b/index.php @@ -0,0 +1,15 @@ + + + + Upload to MinIO + + +

Upload File to MinIO

+
+ + +

+ +
+ + \ No newline at end of file diff --git a/upload.php b/upload.php new file mode 100644 index 0000000..1fbab2e --- /dev/null +++ b/upload.php @@ -0,0 +1,50 @@ + 'latest', + 'region' => 'gh-greater-accra-dzen-ayor-home', + 'endpoint' => 'http://192.168.68.152:9201', + 'use_path_style_endpoint' => true, + 'credentials' => [ + 'key' => 'c7TpMCcy8txJftPu12Za', // MinIO Access Key + 'secret' => 'NpbiqTjYkUDxUjliOP5fmXaTu6fOSWoKKJXnK1Ev', // MinIO Secret Key + ], +]; + +$bucketName = 'permituploads'; + +try { + // Validate file upload + if (!isset($_FILES['fileToUpload']) || $_FILES['fileToUpload']['error'] !== UPLOAD_ERR_OK) { + throw new Exception("File upload failed. Please try again."); + } + + $uploadedFile = $_FILES['fileToUpload']['tmp_name']; + $originalName = basename($_FILES['fileToUpload']['name']); + + // Create S3 client + $s3Client = new S3Client($minioConfig); + + // Upload file to MinIO + $result = $s3Client->putObject([ + 'Bucket' => $bucketName, + 'Key' => 'uploads/' . $originalName, + 'SourceFile' => $uploadedFile, + 'ACL' => 'private', + ]); + + echo "

File uploaded successfully!

"; + echo "

Object URL: {$result['ObjectURL']}

"; + +} +catch (AwsException $e) { + echo "SDK Error: " . $e->getMessage(); +} +catch (Exception $e) { + echo "General Error: " . $e->getMessage(); +} \ No newline at end of file