Skip to content

Commit

Permalink
Added Cilex and Pimple support (#15)
Browse files Browse the repository at this point in the history
* Added Cilex and Pimple support

* Version Bump to 2.1.0
  • Loading branch information
AlexStansfield authored and cjyclaire committed Aug 19, 2016
1 parent bfa73d1 commit 9a56759
Show file tree
Hide file tree
Showing 7 changed files with 229 additions and 13 deletions.
10 changes: 8 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,16 @@
},
"autoload": {
"psr-4": {
"Aws\\Silex\\": "src/"
"Aws\\Cilex\\": "src/Cilex",
"Aws\\Pimple\\": "src/Pimple",
"Aws\\Silex\\": "src/Silex"
}
},
"autoload-dev": {
"psr-4": {
"Aws\\Silex\\": "tests/"
"Aws\\Cilex\\": "tests/Cilex",
"Aws\\Pimple\\": "tests/Pimple",
"Aws\\Silex\\": "tests/Silex"
}
},
"extra": {
Expand All @@ -32,6 +36,8 @@
}
},
"require-dev": {
"pimple/pimple": "~1.0",
"cilex/cilex": "~1.0",
"phpunit/phpunit": "~4.7",
"squizlabs/php_codesniffer": "^2.3"
}
Expand Down
33 changes: 33 additions & 0 deletions src/Cilex/AwsServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php
/**
* Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

namespace Aws\Cilex;

use Aws\Pimple\AwsServiceProvider as PimpleAwsServiceProvider;
use Cilex\Application;
use Cilex\ServiceProviderInterface;

/**
* AWS SDK for PHP service provider for Cilex applications
*/
class AwsServiceProvider implements ServiceProviderInterface
{
public function register(Application $app)
{
$pimpleServiceProvider = new PimpleAwsServiceProvider;
$pimpleServiceProvider->register($app, 'Cilex', Application::VERSION);
}
}
40 changes: 40 additions & 0 deletions src/Pimple/AwsServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php
/**
* Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

namespace Aws\Pimple;

use Aws\Sdk;
use Guzzle\Common\Event;
use Guzzle\Service\Client;

/**
* AWS SDK for PHP service provider for Pimple based applications
*/
class AwsServiceProvider
{
const VERSION = '2.1.0';

public function register(\Pimple $app, $type = 'Pimple', $version = '0.0.0')
{
$app['aws'] = $app->share(function (\Pimple $app) use ($type, $version) {
$config = isset($app['aws.config']) ? $app['aws.config'] : [];
return new Sdk($config + ['ua_append' => [
$type . '/' . $version,
'SXMOD/' . self::VERSION,
]]);
});
}
}
14 changes: 3 additions & 11 deletions src/AwsServiceProvider.php → src/Silex/AwsServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

namespace Aws\Silex;

use Aws\Sdk;
use Aws\Pimple\AwsServiceProvider as PimpleAwsServiceProvider;
use Silex\Application;
use Silex\ServiceProviderInterface;

Expand All @@ -25,18 +25,10 @@
*/
class AwsServiceProvider implements ServiceProviderInterface
{
const VERSION = '2.0.2';

public function register(Application $app)
{
$app['aws'] = $app->share(function (Application $app) {
$config = isset($app['aws.config']) ? $app['aws.config'] : [];

return new Sdk($config + ['ua_append' => [
'Silex/' . Application::VERSION,
'SXMOD/' . self::VERSION,
]]);
});
$pimpleServiceProvider = new PimpleAwsServiceProvider;
$pimpleServiceProvider->register($app, 'Silex', Application::VERSION);
}

public function boot(Application $app)
Expand Down
73 changes: 73 additions & 0 deletions tests/Cilex/AwsServiceProviderTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php
/**
* Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

namespace Aws\Cilex\Tests;

use Aws\Cilex\AwsServiceProvider;
use Cilex\Application;

/**
* AwsServiceProvider test cases
*/
class AwsServiceProviderTest extends \PHPUnit_Framework_TestCase
{
public function testRegisterAwsServiceProvider()
{
// Setup the Cilex app and AWS service provider
$app = new Application('test');
$provider = new AwsServiceProvider();
$app->register($provider, array(
'aws.config' => array(
'version' => '2006-03-01',
'region' => 'us-east-1',
'credentials' => [
'key' => 'fake-aws-key',
'secret' => 'fake-aws-secret',
],
)
));

// Get an instance of a client (S3) to use for testing
$s3 = $app['aws']->createS3();

// Verify that the app and clients created by the SDK receive the provided credentials
$this->assertEquals('2006-03-01', $app['aws.config']['version']);
$this->assertEquals('us-east-1', $app['aws.config']['region']);
$this->assertEquals('2006-03-01', $s3->getApi()->getApiVersion());
$this->assertEquals('us-east-1', $s3->getRegion());
}

/**
* @expectedException \InvalidArgumentException
*/
public function testNoConfigProvided()
{
// Setup the Cilex app and AWS service provider
$app = new Application('test');
$provider = new AwsServiceProvider();
$app->register($provider, array(
'aws.config' => array(
'credentials' => [
'key' => 'fake-aws-key',
'secret' => 'fake-aws-secret',
],
)
));

// Instantiate a client, which should trigger an exception for missing configs
$s3 = $app['aws']->createS3();
}
}
72 changes: 72 additions & 0 deletions tests/Pimple/AwsServiceProviderTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php
/**
* Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

namespace Aws\Pimple\Tests;

use Aws\Pimple\AwsServiceProvider;

/**
* AwsServiceProvider test cases
*/
class AwsServiceProviderTest extends \PHPUnit_Framework_TestCase
{
public function testRegisterAwsServiceProvider()
{
// Setup the Pimple app and AWS service provider
$app = new \Pimple(array(
'aws.config' => array(
'version' => '2006-03-01',
'region' => 'us-east-1',
'credentials' => [
'key' => 'fake-aws-key',
'secret' => 'fake-aws-secret',
],
)
));
$provider = new AwsServiceProvider();
$provider->register($app);

// Get an instance of a client (S3) to use for testing
$s3 = $app['aws']->createS3();

// Verify that the app and clients created by the SDK receive the provided credentials
$this->assertEquals('2006-03-01', $app['aws.config']['version']);
$this->assertEquals('us-east-1', $app['aws.config']['region']);
$this->assertEquals('2006-03-01', $s3->getApi()->getApiVersion());
$this->assertEquals('us-east-1', $s3->getRegion());
}

/**
* @expectedException \InvalidArgumentException
*/
public function testNoConfigProvided()
{
// Setup the Pimple app and AWS service provider
$app = new \Pimple(array(
'aws.config' => array(
'credentials' => [
'key' => 'fake-aws-key',
'secret' => 'fake-aws-secret',
],
)
));
$provider = new AwsServiceProvider();
$provider->register($app);

// Instantiate a client, which should trigger an exception for missing configs
$s3 = $app['aws']->createS3();
}
}
File renamed without changes.

0 comments on commit 9a56759

Please sign in to comment.