Skip to content

Commit 48d77fd

Browse files
committed
Initial commit.
0 parents  commit 48d77fd

File tree

9 files changed

+385
-0
lines changed

9 files changed

+385
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
composer.lock
2+
composer.phar
3+
phpunit.xml
4+
vendor

LICENSE.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# Apache License
2+
Version 2.0, January 2004
3+
4+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
5+
6+
## 1. Definitions.
7+
8+
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1
9+
through 9 of this document.
10+
11+
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the
12+
License.
13+
14+
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled
15+
by, or are under common control with that entity. For the purposes of this definition, "control" means
16+
(i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract
17+
or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
18+
ownership of such entity.
19+
20+
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
21+
22+
"Source" form shall mean the preferred form for making modifications, including but not limited to software
23+
source code, documentation source, and configuration files.
24+
25+
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form,
26+
including but not limited to compiled object code, generated documentation, and conversions to other media
27+
types.
28+
29+
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License,
30+
as indicated by a copyright notice that is included in or attached to the work (an example is provided in the
31+
Appendix below).
32+
33+
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from)
34+
the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent,
35+
as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not
36+
include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work
37+
and Derivative Works thereof.
38+
39+
"Contribution" shall mean any work of authorship, including the original version of the Work and any
40+
modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to
41+
Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to
42+
submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of
43+
electronic, verbal, or written communication sent to the Licensor or its representatives, including but not
44+
limited to communication on electronic mailing lists, source code control systems, and issue tracking systems
45+
that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but
46+
excluding communication that is conspicuously marked or otherwise designated in writing by the copyright
47+
owner as "Not a Contribution."
48+
49+
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been
50+
received by Licensor and subsequently incorporated within the Work.
51+
52+
## 2. Grant of Copyright License.
53+
54+
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
55+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
56+
Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such
57+
Derivative Works in Source or Object form.
58+
59+
## 3. Grant of Patent License.
60+
61+
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
62+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent
63+
license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such
64+
license applies only to those patent claims licensable by such Contributor that are necessarily infringed by
65+
their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such
66+
Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim
67+
or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work
68+
constitutes direct or contributory patent infringement, then any patent licenses granted to You under this
69+
License for that Work shall terminate as of the date such litigation is filed.
70+
71+
## 4. Redistribution.
72+
73+
You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without
74+
modifications, and in Source or Object form, provided that You meet the following conditions:
75+
76+
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
77+
78+
2. You must cause any modified files to carry prominent notices stating that You changed the files; and
79+
80+
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent,
81+
trademark, and attribution notices from the Source form of the Work, excluding those notices that do
82+
not pertain to any part of the Derivative Works; and
83+
84+
4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that
85+
You distribute must include a readable copy of the attribution notices contained within such NOTICE
86+
file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one
87+
of the following places: within a NOTICE text file distributed as part of the Derivative Works; within
88+
the Source form or documentation, if provided along with the Derivative Works; or, within a display
89+
generated by the Derivative Works, if and wherever such third-party notices normally appear. The
90+
contents of the NOTICE file are for informational purposes only and do not modify the License. You may
91+
add Your own attribution notices within Derivative Works that You distribute, alongside or as an
92+
addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be
93+
construed as modifying the License.
94+
95+
You may add Your own copyright statement to Your modifications and may provide additional or different license
96+
terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative
97+
Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the
98+
conditions stated in this License.
99+
100+
## 5. Submission of Contributions.
101+
102+
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by
103+
You to the Licensor shall be under the terms and conditions of this License, without any additional terms or
104+
conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate
105+
license agreement you may have executed with Licensor regarding such Contributions.
106+
107+
## 6. Trademarks.
108+
109+
This License does not grant permission to use the trade names, trademarks, service marks, or product names of
110+
the Licensor, except as required for reasonable and customary use in describing the origin of the Work and
111+
reproducing the content of the NOTICE file.
112+
113+
## 7. Disclaimer of Warranty.
114+
115+
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor
116+
provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
117+
or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
118+
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
119+
appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of
120+
permissions under this License.
121+
122+
## 8. Limitation of Liability.
123+
124+
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless
125+
required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any
126+
Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential
127+
damages of any character arising as a result of this License or out of the use or inability to use the Work
128+
(including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or
129+
any and all other commercial damages or losses), even if such Contributor has been advised of the possibility
130+
of such damages.
131+
132+
## 9. Accepting Warranty or Additional Liability.
133+
134+
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for,
135+
acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this
136+
License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole
137+
responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold
138+
each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason
139+
of your accepting any such warranty or additional liability.
140+
141+
END OF TERMS AND CONDITIONS

NOTICE.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# AWS Service Provider for Laravel
2+
3+
<https://github.com/aws/aws-sdk-php-laravel>
4+
5+
Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
6+
7+
Licensed under the Apache License, Version 2.0 (the "License").
8+
You may not use this file except in compliance with the License.
9+
A copy of the License is located at
10+
11+
<http://aws.amazon.com/apache2.0>
12+
13+
or in the "license" file accompanying this file. This file is distributed
14+
on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
15+
express or implied. See the License for the specific language governing
16+
permissions and limitations under the License.

README.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# AWS Service Provider for Laravel 4
2+
3+
A simple [Laravel 4](http://four.laravel.com/) service provider for including the [AWS SDK for PHP](https://github.com/aws/aws-sdk-php).
4+
5+
## Installation
6+
7+
The AWS Service Provider can be installed via [Composer](http://getcomposer.org) by requiring the
8+
`aws/aws-sdk-php-laravel` package and setting the `minimum-stability` to `dev` (required for Laravel 4) in your
9+
project's `composer.json`.
10+
11+
```json
12+
{
13+
"require": {
14+
"aws/aws-sdk-php-laravel": "1.*"
15+
},
16+
"minimum-stability": "dev"
17+
}
18+
```
19+
20+
## Usage
21+
22+
First you have to register the AWS Service Provider when bootstrap your Laravel application. You can either provide an
23+
array of configuration options…
24+
25+
```php
26+
use Aws\Common\Enum\Region;
27+
use Aws\Laravel\AwsServiceProvider;
28+
use Illuminate\Foundation\Application;
29+
30+
$app = new Application();
31+
// ...
32+
33+
$app->register(new AwsServiceProvider($app), array(
34+
'config' => array(
35+
'aws' => array(
36+
'key' => '<your-aws-access-key-id>',
37+
'secret' => '<your-aws-secret-access-key>',
38+
'region' => Region::US_WEST_2,
39+
),
40+
),
41+
));
42+
```
43+
44+
*Or* you can specify the path to an AWS config file (see [AWS SDK for PHP](http://github.com/aws/aws-sdk-php) for
45+
details).
46+
47+
```php
48+
$app->register(new AwsServiceProvider($app), array('config' => array('aws' => '/path/to/aws/config/file.php')));
49+
```
50+
51+
Either way, the value of `$app['config']['aws']` is passed directly into `Aws\Common\Aws::factory()`.
52+
53+
In order to use the SDK from within your app, you need to retrieve it from the [Laravel IoC
54+
Container](http://four.laravel.com/docs/ioc).
55+
56+
```php
57+
$s3 = App::make('aws')->get('s3');
58+
$s3->putObject(array(
59+
'Bucket' => '<your-bucket>',
60+
'Key' => 'the-name-of-your-object',
61+
'SourceFile' => '/path/to/the/file/you/are/uploading.ext',
62+
));
63+
```
64+
65+
## Links
66+
67+
* [AWS SDK for PHP on Github](http://github.com/aws/aws-sdk-php)
68+
* [AWS SDK for PHP website](http://aws.amazon.com/sdkforphp/)
69+
* [AWS on Packagist](https://packagist.org/packages/aws)
70+
* [License](http://aws.amazon.com/apache2.0/)
71+
* [Laravel website](http://laravel.com)

composer.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "aws/aws-sdk-php-laravel",
3+
"homepage": "http://aws.amazon.com/sdkforphp2",
4+
"description": "A simple Laravel 4 service provider for including the AWS SDK for PHP.",
5+
"keywords": ["laravel","laravel 4","aws","amazon","sdk","s3","ec2","dynamodb"],
6+
"type":"library",
7+
"license":"Apache-2.0",
8+
"authors":[
9+
{
10+
"name":"Amazon Web Services",
11+
"homepage":"http://aws.amazon.com"
12+
}
13+
],
14+
"require": {
15+
"php": ">=5.3.7",
16+
"aws/aws-sdk-php": "2.1.*",
17+
"laravel/framework": "4.0.*"
18+
},
19+
"minimum-stability": "dev",
20+
"autoload": {
21+
"psr-0": { "Aws\\Laravel": "src/" }
22+
}
23+
}

phpunit.xml.dist

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<phpunit bootstrap="./tests/bootstrap.php">
4+
<testsuites>
5+
<testsuite name="AwsServiceProvider Test Suite">
6+
<directory>./tests</directory>
7+
</testsuite>
8+
</testsuites>
9+
</phpunit>
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
/**
3+
* Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License").
6+
* You may not use this file except in compliance with the License.
7+
* A copy of the License is located at
8+
*
9+
* http://aws.amazon.com/apache2.0
10+
*
11+
* or in the "license" file accompanying this file. This file is distributed
12+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13+
* express or implied. See the License for the specific language governing
14+
* permissions and limitations under the License.
15+
*/
16+
17+
namespace Aws\Laravel;
18+
19+
use Aws\Common\Aws;
20+
use Aws\Common\Client\UserAgentListener;
21+
use Aws\Common\Exception\RuntimeException;
22+
use Guzzle\Common\Event;
23+
use Guzzle\Service\Client;
24+
use Illuminate\Support\ServiceProvider;
25+
use Illuminate\Foundation\Application;
26+
27+
/**
28+
* AWS SDK for PHP service provider for Laravel applications
29+
*/
30+
class AwsServiceProvider extends ServiceProvider
31+
{
32+
/**
33+
* @inheritdoc
34+
*/
35+
public function register()
36+
{
37+
$this->app['aws'] = $this->app->share(function ($app) {
38+
// Instantiate the AWS service builder
39+
$config = isset($app['config']['aws']) ? $app['config']['aws'] : array();
40+
$aws = Aws::factory($config);
41+
42+
// Attach an event listener that will append the Laravel version number in the user agent string
43+
$aws->getEventDispatcher()->addListener('service_builder.create_client', function (Event $event) {
44+
$clientConfig = $event['client']->getConfig();
45+
$commandParams = $clientConfig->get(Client::COMMAND_PARAMS) ?: array();
46+
$clientConfig->set(Client::COMMAND_PARAMS, array_merge_recursive($commandParams, array(
47+
UserAgentListener::OPTION => 'Laravel/' . Application::VERSION,
48+
)));
49+
});
50+
51+
return $aws;
52+
});
53+
}
54+
55+
/**
56+
* @inheritdoc
57+
*/
58+
public function boot()
59+
{
60+
}
61+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
/**
3+
* Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License").
6+
* You may not use this file except in compliance with the License.
7+
* A copy of the License is located at
8+
*
9+
* http://aws.amazon.com/apache2.0
10+
*
11+
* or in the "license" file accompanying this file. This file is distributed
12+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13+
* express or implied. See the License for the specific language governing
14+
* permissions and limitations under the License.
15+
*/
16+
17+
namespace Aws\Laravel\Tests;
18+
19+
use Aws\Laravel\AwsServiceProvider;
20+
use Illuminate\Foundation\Application;
21+
22+
/**
23+
* AwsServiceProvider test cases
24+
*/
25+
class AwsServiceProviderTest extends \PHPUnit_Framework_TestCase
26+
{
27+
public function testRegisterAwsServiceProvider()
28+
{
29+
// Setup the Laravel app and AWS service provider
30+
$app = new Application();
31+
$provider = new AwsServiceProvider($app);
32+
$app->register($provider, array(
33+
'config' => array(
34+
'aws' => array(
35+
'key' => 'your-aws-access-key-id',
36+
'secret' => 'your-aws-secret-access-key',
37+
),
38+
),
39+
));
40+
$provider->boot();
41+
42+
// Get an instance of a client (S3) to use for testing
43+
$s3 = $app['aws']->get('s3');
44+
45+
// Verify that the app and clients created by the SDK receive the provided credentials
46+
$this->assertEquals('your-aws-access-key-id', $app['config']['aws']['key']);
47+
$this->assertEquals('your-aws-secret-access-key', $app['config']['aws']['secret']);
48+
$this->assertEquals('your-aws-access-key-id', $s3->getCredentials()->getAccessKeyId());
49+
$this->assertEquals('your-aws-secret-access-key', $s3->getCredentials()->getSecretKey());
50+
51+
// Make sure the user agent contains "Laravel"
52+
$command = $s3->getCommand('ListBuckets');
53+
$request = $command->prepare();
54+
$s3->dispatch('command.before_send', array('command' => $command));
55+
$this->assertRegExp('/.+Laravel\/.+/', $request->getHeader('User-Agent', true));
56+
}
57+
}

tests/bootstrap.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?php
2+
3+
require_once __DIR__ . '/../vendor/autoload.php';

0 commit comments

Comments
 (0)