diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..28b9aaf --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +.gitattributes export-ignore +.github export-ignore +.gitignore export-ignore +.travis.yml export-ignore +CHANGELOG.md export-ignore +CONTRIBUTING.md export-ignore +Makefile export-ignore +README.md export-ignore +phpunit.xml export-ignore +tests/ export-ignore diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 94d19fb..946fd2f 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -12,6 +12,14 @@ body: description: What is the problem? A clear and concise description of the bug. validations: required: true + - type: checkboxes + id: regression + attributes: + label: Regression Issue + description: What is a regression? If it worked in a previous version but doesn't in the latest version, it's considered a regression. In this case, please provide specific version number in the report. + options: + - label: Select this option if this issue appears to be a regression. + required: false - type: textarea id: expected attributes: diff --git a/.github/workflows/closed-issue-message.yml b/.github/workflows/closed-issue-message.yml index 3340afb..3691dea 100644 --- a/.github/workflows/closed-issue-message.yml +++ b/.github/workflows/closed-issue-message.yml @@ -11,7 +11,6 @@ jobs: # These inputs are both required repo-token: "${{ secrets.GITHUB_TOKEN }}" message: | - ### ⚠️COMMENT VISIBILITY WARNING⚠️ Comments on closed issues are hard for our team to see. If you need more assistance, please either tag a team member or open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so. diff --git a/.github/workflows/handle-stale-discussions.yml b/.github/workflows/handle-stale-discussions.yml new file mode 100644 index 0000000..ce9a066 --- /dev/null +++ b/.github/workflows/handle-stale-discussions.yml @@ -0,0 +1,19 @@ +name: HandleStaleDiscussions +on: + schedule: + - cron: '0 */4 * * *' + discussion_comment: + types: [created] + +jobs: + handle-stale-discussions: + if: github.repository_owner == 'aws' + name: Handle stale discussions + runs-on: ubuntu-latest + permissions: + discussions: write + steps: + - name: Stale discussions action + uses: aws-github-ops/handle-stale-discussions@v1 + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/issue-regression-labeler.yml b/.github/workflows/issue-regression-labeler.yml new file mode 100644 index 0000000..bd00071 --- /dev/null +++ b/.github/workflows/issue-regression-labeler.yml @@ -0,0 +1,32 @@ +# Apply potential regression label on issues +name: issue-regression-label +on: + issues: + types: [opened, edited] +jobs: + add-regression-label: + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Fetch template body + id: check_regression + uses: actions/github-script@v7 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TEMPLATE_BODY: ${{ github.event.issue.body }} + with: + script: | + const regressionPattern = /\[x\] Select this option if this issue appears to be a regression\./i; + const template = `${process.env.TEMPLATE_BODY}` + const match = regressionPattern.test(template); + core.setOutput('is_regression', match); + - name: Manage regression label + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if [ "${{ steps.check_regression.outputs.is_regression }}" == "true" ]; then + gh issue edit ${{ github.event.issue.number }} --add-label "potential-regression" -R ${{ github.repository }} + else + gh issue edit ${{ github.event.issue.number }} --remove-label "potential-regression" -R ${{ github.repository }} + fi diff --git a/.github/workflows/stale_issues.yml b/.github/workflows/stale_issues.yml index 1156d97..4741bcb 100644 --- a/.github/workflows/stale_issues.yml +++ b/.github/workflows/stale_issues.yml @@ -29,7 +29,7 @@ jobs: closed-for-staleness-label: closed-for-staleness # Issue timing - days-before-stale: 7 + days-before-stale: 10 days-before-close: 4 days-before-ancient: 1095 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0f26ad9..aacf1e1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,41 +9,65 @@ on: jobs: run: - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest strategy: - #for each of the following versions of PHP, with and without --prefer-lowest matrix: - php-versions: ['5.5.0', '5.6.0', '7.0.0', '7.1.0', '7.2.0', '7.2.1', '7.2.2', '7.3.0', '7.3.1', '7.3.2', '7.4.0', '7.4.1', '7.4.2'] include: - - php-versions: '5.5.0' - laravel-versions: '5.1.*' - - php-versions: '5.6.0' - laravel-versions: '5.1.*' - - php-versions: '7.0.0' - laravel-versions: '5.5.*' - - php-versions: '7.1.0' - laravel-versions: '^5.5' - - php-versions: '7.2.0' - laravel-versions: '^5.5' - - php-versions: '7.2.1' + - php-versions: '8.1' laravel-versions: '^6.0' - - php-versions: '7.2.2' - laravel-versions: '^7.0' - - php-versions: '7.3.0' + - php-versions: '8.2' laravel-versions: '^6.0' - - php-versions: '7.3.1' - laravel-versions: '^7.0' - - php-versions: '7.3.2' - laravel-versions: '^8.0' - - php-versions: '7.4.0' + - php-versions: '8.3' laravel-versions: '^6.0' - - php-versions: '7.4.1' + - php-versions: '8.4' + laravel-versions: '^6.0' + - php-versions: '8.1' + laravel-versions: '^7.0' + - php-versions: '8.2' + laravel-versions: '^7.0' + - php-versions: '8.3' laravel-versions: '^7.0' - - php-versions: '7.4.2' + - php-versions: '8.4' + laravel-versions: '^7.0' + - php-versions: '8.1' + laravel-versions: '^8.0' + - php-versions: '8.2' + laravel-versions: '^8.0' + - php-versions: '8.3' laravel-versions: '^8.0' + - php-versions: '8.4' + laravel-versions: '^8.0' + - php-versions: '8.1' + laravel-versions: '^9.0' + - php-versions: '8.2' + laravel-versions: '^9.0' + - php-versions: '8.3' + laravel-versions: '^9.0' + - php-versions: '8.4' + laravel-versions: '^9.0' + - php-versions: '8.1' + laravel-versions: '^10.0' + - php-versions: '8.2' + laravel-versions: '^10.0' + - php-versions: '8.3' + laravel-versions: '^10.0' + - php-versions: '8.4' + laravel-versions: '^10.0' + - php-versions: '8.2' + laravel-versions: '^11.0' + - php-versions: '8.3' + laravel-versions: '^11.0' + - php-versions: '8.4' + laravel-versions: '^11.0' + - php-versions: '8.2' + laravel-versions: '^12.0' + - php-versions: '8.3' + laravel-versions: '^12.0' + - php-versions: '8.4' + laravel-versions: '^12.0' #set the name for each job - name: PHP ${{ matrix.php-versions }} + name: PHP ${{ matrix.php-versions }} with Laravel ${{ matrix.laravel-versions }} #set up environment variables used by unit tests env: AWS_ACCESS_KEY_ID: foo @@ -63,7 +87,7 @@ jobs: #require laravel - name: Require laravel - run: composer require laravel/framework:${{ matrix.laravel-versions }} --no-interaction --prefer-dist + run: composer require laravel/framework:${{ matrix.laravel-versions }} --no-interaction --prefer-dist --no-plugins #run tests - name: Run test suite @@ -72,13 +96,13 @@ jobs: #remove laravel - name: Remove laravel run: | - composer remove laravel/framework + composer remove laravel/framework --no-plugins rm composer.lock #require lumen - name: Require lumen - run: composer require laravel/lumen-framework:${{ matrix.laravel-versions }} --no-interaction --prefer-dist + run: composer require laravel/lumen-framework --no-interaction --prefer-dist --no-plugins #run tests - name: Run test suite - run: vendor/bin/phpunit + run: vendor/bin/phpunit \ No newline at end of file diff --git a/.gitignore b/.gitignore index 02eb855..75f93a5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ composer.lock composer.phar vendor .idea -.DS_Store \ No newline at end of file +.DS_Store +.phpunit.result.cache \ No newline at end of file diff --git a/README.md b/README.md index 150a268..ea66dd0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ -# AWS Service Provider for Laravel 5/6/7/8/9 +# AWS Service Provider for Laravel 6 - 12 -[![@awsforphp on Twitter](http://img.shields.io/badge/twitter-%40awsforphp-blue.svg?style=flat)](https://twitter.com/awsforphp) -[![Build Status](https://img.shields.io/travis/aws/aws-sdk-php-laravel.svg)](https://travis-ci.org/aws/aws-sdk-php-laravel) [![Latest Stable Version](https://img.shields.io/packagist/v/aws/aws-sdk-php-laravel.svg)](https://packagist.org/packages/aws/aws-sdk-php-laravel) [![Total Downloads](https://img.shields.io/packagist/dt/aws/aws-sdk-php-laravel.svg)](https://packagist.org/packages/aws/aws-sdk-php-laravel) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/aws/aws-sdk-php?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) @@ -10,19 +8,19 @@ This is a simple [Laravel](http://laravel.com/) service provider for making it e [AWS SDK for PHP](https://github.com/aws/aws-sdk-php) in your Laravel and Lumen applications. This README is for version 3.x of the service provider, which is implemented to work with Version 3 of the AWS SDK for -PHP and Laravel 5.1. +PHP and Laravel 6-12. **Major Versions:** -* **3.x** (YOU ARE HERE) - For `laravel/framework:~5.1|~6.0|~7.0|~8.0|9.0` and `aws/aws-sdk-php:~3.0` +* **3.x** (YOU ARE HERE) - For `laravel/framework:6.0|7.0|8.0|9.0|10.0|11.0|12.0` and `aws/aws-sdk-php:^3.338.0` * **2.x** ([2.0 branch](https://github.com/aws/aws-sdk-php-laravel/tree/2.0)) - For `laravel/framework:5.0.*` and `aws/aws-sdk-php:~2.4` * **1.x** ([1.0 branch](https://github.com/aws/aws-sdk-php-laravel/tree/1.0)) - For `laravel/framework:4.*` and `aws/aws-sdk-php:~2.4` Jump To: -* [Getting Started](_#Getting-Started_) -* [Getting Help](_#Getting-Help_) -* [Contributing](_#Contributing_) -* [More Resources](_#Resources_) +* [Getting Started](#Getting-Started) +* [Getting Help](#Getting-Help) +* [Contributing](#Contributing) +* [More Resources](#Resources) ## Getting Started @@ -97,7 +95,6 @@ return [ ], 'region' => env('AWS_REGION', 'us-east-1'), 'version' => 'latest', - // You can override settings for specific services 'Ses' => [ 'region' => 'us-east-1', @@ -139,6 +136,17 @@ $s3->putObject(array( )); ``` +To use in Lumen, you need to retrieve it from the service container a bit differently: + +```php +$s3 = app('aws')->createClient('s3'); +$s3->putObject(array( + 'Bucket' => 'YOUR_BUCKET', + 'Key' => 'YOUR_OBJECT_KEY', + 'SourceFile' => '/the/path/to/the/file/you/are/uploading.ext', +)); +``` + ## Getting Help Please use these community resources for getting help. We use the GitHub issues for tracking bugs and feature requests and have limited bandwidth to address them. diff --git a/composer.json b/composer.json index 9a79269..6749389 100644 --- a/composer.json +++ b/composer.json @@ -1,8 +1,8 @@ { "name": "aws/aws-sdk-php-laravel", - "homepage": "http://aws.amazon.com/sdkforphp2", - "description": "A simple Laravel 5/6/7/8/9 service provider for including the AWS SDK for PHP.", - "keywords": ["laravel", "laravel 5", "laravel 6", "laravel 7", "laravel 8", "laravel 9", "aws", "amazon", "sdk", "s3", "ec2", "dynamodb"], + "homepage": "https://aws.amazon.com/sdk-for-php/", + "description": "A simple Laravel 6/7/8/9/10/11/12 service provider for including the AWS SDK for PHP.", + "keywords": ["laravel", "laravel 6", "laravel 7", "laravel 8", "laravel 9", "laravel 10", "laravel 11", "laravel 12", "aws", "amazon", "sdk", "s3", "ec2", "dynamodb"], "type":"library", "license":"Apache-2.0", "authors":[ @@ -12,13 +12,14 @@ } ], "require": { - "php": ">=5.5.9", - "aws/aws-sdk-php": "~3.0", - "illuminate/support": "^5.1 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "php": ">=8.1", + "aws/aws-sdk-php": "^3.338.0", + "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0", - "vlucas/phpdotenv": "^1.0 || ^2.0 || ^3.0 || ^4.0 || ^5.0" + "phpunit/phpunit": "^8.0 || ^9.0", + "vlucas/phpdotenv": "^1.0 || ^2.0 || ^3.0 || ^4.0 || ^5.0", + "yoast/phpunit-polyfills": "^1.0" }, "suggest": { "laravel/framework": "To test the Laravel bindings", diff --git a/phpunit.xml b/phpunit.xml index 9bca1c5..59a93f6 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -7,8 +7,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" - syntaxCheck="false"> + stopOnFailure="false"> @@ -22,12 +21,13 @@ - - + + src - - vendor - - - + + + vendor + + + diff --git a/tests/AwsServiceProviderTest.php b/tests/AwsServiceProviderTest.php index 3686345..69dd42f 100644 --- a/tests/AwsServiceProviderTest.php +++ b/tests/AwsServiceProviderTest.php @@ -3,8 +3,9 @@ use Aws\Laravel\AwsFacade as AWS; use Aws\Laravel\AwsServiceProvider; use Illuminate\Container\Container; +use Yoast\PHPUnitPolyfills\TestCases\TestCase; -abstract class AwsServiceProviderTest extends \PHPUnit_Framework_TestCase +abstract class AwsServiceProviderTest extends TestCase { public function testFacadeCanBeResolvedToServiceInstance() @@ -52,7 +53,7 @@ public function testVersionInformationIsProvidedToSdkUserAgent() $config = $app['config']->get('aws'); $this->assertArrayHasKey('ua_append', $config); - $this->assertInternalType('array', $config['ua_append']); + $this->assertIsArray($config['ua_append']); $this->assertNotEmpty($config['ua_append']); $this->assertNotEmpty(array_filter($config['ua_append'], function ($ua) { return false !== strpos($ua, AwsServiceProvider::VERSION); diff --git a/tests/LaravelAwsServiceProviderTest.php b/tests/LaravelAwsServiceProviderTest.php index 85f24d6..dc20c09 100644 --- a/tests/LaravelAwsServiceProviderTest.php +++ b/tests/LaravelAwsServiceProviderTest.php @@ -5,17 +5,11 @@ class LaravelAwsServiceProviderTest extends AwsServiceProviderTest { - public function setUp() + protected function setupApplication() { if (!class_exists(Application::class)) { $this->markTestSkipped(); } - - parent::setUp(); - } - - protected function setupApplication() - { // Create the application such that the config is loaded. $app = new Application(); $app->setBasePath(sys_get_temp_dir()); diff --git a/tests/LumenAwsServiceProviderTest.php b/tests/LumenAwsServiceProviderTest.php index ff301c4..e623346 100644 --- a/tests/LumenAwsServiceProviderTest.php +++ b/tests/LumenAwsServiceProviderTest.php @@ -6,17 +6,11 @@ class LumenAwsServiceProviderTest extends AwsServiceProviderTest { - public function setUp() + protected function setupApplication() { if (!class_exists(Application::class)) { $this->markTestSkipped(); } - - parent::setUp(); - } - - protected function setupApplication() - { // Create the application such that the config is loaded. $app = new Application(sys_get_temp_dir()); $app->instance('config', new Repository());