You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2016/10/24 13:06:07 UTC
[22/83] [abbrv] usergrid git commit: Moving older SDKs to a
difference location and updating main README to link to new SDK locations.
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Api/Models/Role.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Api/Models/Role.php b/sdks/other/php5/apache-usergrid/src/Api/Models/Role.php
new file mode 100644
index 0000000..3e93465
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Api/Models/Role.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Api\Models;
+
+
+use Guzzle\Service\Command\ResponseClassInterface;
+
+/**
+ * Class Role
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class Role extends BaseCollection implements ResponseClassInterface
+{
+
+ use GuzzleCommandTrait;
+
+ public function usersAttribute()
+ {
+ return $this->getApiClient()->application()->GetRelationship([
+ 'collection' => 'roles',
+ 'entity_id' => $this->entities->fetch('uuid')->first(),
+ 'relationship' => 'users'
+ ])->toArray();
+ }
+
+ public function groupsAttribute()
+ {
+ return $this->getApiClient()->application()->GetRelationship([
+ 'collection' => 'roles',
+ 'entity_id' => $this->entities->fetch('uuid')->first(),
+ 'relationship' => 'groups'
+ ])->toArray();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Api/Models/User.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Api/Models/User.php b/sdks/other/php5/apache-usergrid/src/Api/Models/User.php
new file mode 100644
index 0000000..8bec6d3
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Api/Models/User.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Api\Models;
+
+
+use Guzzle\Service\Command\ResponseClassInterface;
+
+/**
+ * Class User
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class User extends BaseCollection implements ResponseClassInterface
+{
+
+ use GuzzleCommandTrait;
+
+ public function deviceAttribute()
+ {
+ return $this->getApiClient()->application()->GetRelationship([
+ 'collection' => 'users',
+ 'entity_id' => $this->entities->fetch('uuid')->first(),
+ 'relationship' => 'devices'
+ ])->toArray();
+ }
+
+ public function notificationAttribute()
+ {
+
+ }
+
+ public function groupsAttribute()
+ {
+ return $this->getApiClient()->application()->GetRelationship([
+ 'collection' => 'users',
+ 'entity_id' => $this->entities->fetch('uuid')->first(),
+ 'relationship' => 'groups'
+ ])->toArray();
+ }
+
+ public function rolesAttribute()
+ {
+ return $this->getApiClient()->application()->GetRelationship([
+ 'collection' => 'users',
+ 'entity_id' => $this->entities->fetch('uuid')->first(),
+ 'relationship' => 'roles'
+ ])->toArray();
+ }
+
+ public function connectionsAttribute()
+ {
+ return $this->getApiClient()->application()->GetRelationship([
+ 'collection' => 'users',
+ 'entity_id' => $this->entities->fetch('uuid')->first(),
+ 'relationship' => 'connections'
+ ])->toArray();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Api/QueryAggregator.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Api/QueryAggregator.php b/sdks/other/php5/apache-usergrid/src/Api/QueryAggregator.php
new file mode 100644
index 0000000..eacfcd5
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Api/QueryAggregator.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Api;
+
+
+use Guzzle\Http\QueryAggregator\QueryAggregatorInterface;
+use Guzzle\Http\QueryString;
+
+/**
+ * Class QueryAggregator
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class QueryAggregator implements QueryAggregatorInterface
+{
+
+ /**
+ * {@inheritDoc}
+ */
+ public function aggregate($key, $value, QueryString $query)
+ {
+ $response = [];
+
+ foreach ($value as $k => $v) {
+ if (is_int($k)) {
+ return [
+ $query->encodeValue("{$key}[]") => $value
+ ];
+ }
+
+ $k = "{$key}[{$k}]";
+
+ if (is_array($v)) {
+ $response = array_merge($response, self::aggregate($k, $v, $query));
+ } else {
+ $response[$query->encodeValue($k)] = $query->encodeValue($v);
+ }
+ }
+
+ return $response;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Api/ResourceIterator.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Api/ResourceIterator.php b/sdks/other/php5/apache-usergrid/src/Api/ResourceIterator.php
new file mode 100644
index 0000000..7df0dd7
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Api/ResourceIterator.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Api;
+
+use Guzzle\Service\Command\CommandInterface;
+use Guzzle\Service\Resource\ResourceIterator as BaseIterator;
+
+/**
+ * Class ResourceIterator
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class ResourceIterator extends BaseIterator
+{
+ /**
+ * {@inheritDoc}
+ */
+ public function __construct(CommandInterface $command, array $data = [])
+ {
+ parent::__construct($command, $data);
+
+ $this->pageSize = 20;
+ }
+
+ /**
+ * Send a request to retrieve the next page of results. Hook for subclasses to implement.
+ *
+ * @return array Returns the newly loaded resources
+ */
+ protected function sendRequest()
+ {
+ $this->command->set('limit', $this->pageSize);
+
+ if ($this->nextToken) {
+ $this->command->set('cursor', $this->nextToken);
+ }
+
+ $result = $this->command->execute();
+
+ $data = $result['entities'];
+
+ if ($result->has('cursor')) {
+ $this->nextToken = $result['cursor'] ? $result['cursor'] : false;
+ }
+
+ return $data;
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Api/Usergrid.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Api/Usergrid.php b/sdks/other/php5/apache-usergrid/src/Api/Usergrid.php
new file mode 100644
index 0000000..279f2b2
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Api/Usergrid.php
@@ -0,0 +1,452 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Api;
+
+
+use Apache\Usergrid\Guzzle\Plugin\Oauth2\Oauth2Plugin;
+use Guzzle\Common\Event;
+use Guzzle\Plugin\ErrorResponse\ErrorResponsePlugin;
+use Guzzle\Service\Description\ServiceDescription;
+use InvalidArgumentException;
+
+/**
+ * Class Usergrid
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class Usergrid
+{
+
+ /**
+ * Header Bearer Token
+ * @var
+ */
+ protected $token;
+
+
+ /**
+ * @var \Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\GrantTypeInterface
+ */
+ protected $grantType;
+ /**
+ * The Usergrid API version.
+ *
+ * @var string
+ */
+ protected $version = '1.0.1';
+ /**
+ * The manifests path.
+ *
+ * @var string
+ */
+ protected $manifestPath;
+ /**
+ * The Base URL.
+ *
+ * @var string
+ */
+ protected $baseUrl;
+ /**
+ * Oauth2 Guzzle Plugin.
+ *
+ * @var \Apache\Usergrid\Guzzle\Plugin\Oauth2\Oauth2Plugin
+ */
+ protected $oauth2_plugin;
+ /**
+ * The cached manifests data.
+ *
+ * @var array
+ */
+ protected $manifests = [];
+ /**
+ * The user agent.
+ *
+ * @var string
+ */
+ protected $userAgent = 'BaaS-Usergrid/1.0.0';
+ /**
+ * The headers to be sent to the Guzzle client.
+ *
+ * @var array
+ */
+ protected $headers = [];
+ private $org_name;
+ private $app_name;
+
+ /**
+ * @param null $orgName
+ * @param null $appName
+ * @param $manifestPath
+ * @param $version
+ * @param $baseUrl
+ * @param Oauth2Plugin $oauth2_plugin
+ */
+ function __construct(
+ $orgName = null,
+ $appName = null,
+ $manifestPath,
+ $version,
+ $baseUrl,
+ Oauth2Plugin $oauth2_plugin = null
+ ) {
+ //Set Version so its added to header
+ $this->setVersion($version ?: $this->version);
+
+ $this->baseUrl = $baseUrl;
+
+ $this->org_name = $orgName;
+ $this->app_name = $appName;
+
+ //check if OAuth2 plugin is enabled
+ if ($oauth2_plugin != null) {
+ $this->oauth2_plugin = $oauth2_plugin;
+ $this->grantType = $this->oauth2_plugin->getGrantType();
+ }
+
+ // Set the manifest path
+ $this->setManifestPath($manifestPath ?: dirname(dirname(__FILE__)) . '/Manifests');
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getToken()
+ {
+ return $this->token;
+ }
+
+ /**
+ * @param mixed $token
+ * @return $this
+ */
+ public function setToken($token)
+ {
+ $this->token = $token;
+
+ $this->setHeaders([
+ 'Authorization' => (string)'Bearer ' . $token,
+ ]);
+
+ return $this;
+ }
+
+ /**
+ * Dynamically handle missing methods.
+ *
+ * @param string $method
+ * @param array $arguments
+ * @return mixed
+ */
+ public function __call($method, array $arguments = [])
+ {
+ if (substr($method, -8) === 'Iterator') {
+ return $this->handleIteratorRequest($method, $arguments);
+ } elseif ($this->isSingleRequest($method)) {
+ return $this->handleSingleRequest($method, $arguments);
+ }
+
+ return $this->handleRequest($method);
+ }
+
+ /**
+ * Handles an iterator request.
+ *
+ * @param string $method
+ * @param array $arguments
+ * @return \Apache\Usergrid\Api\ResourceIterator
+ * @throws \InvalidArgumentException
+ */
+ protected function handleIteratorRequest($method, array $arguments = [])
+ {
+ $client = $this->handleRequest(substr($method, 0, -8));
+
+ $command = $client->getCommand('all', array_get($arguments, 0, []));
+
+ return new ResourceIterator($command, array_get($arguments, 1, []));
+ }
+
+ /**
+ * Handles the current request.
+ *
+ * @param string $method
+ * @throws InvalidArgumentException
+ * @return \Guzzle\Service\Client
+ */
+ protected function handleRequest($method)
+ {
+ if (!$this->manifestExists($method)) {
+ throw new InvalidArgumentException("Undefined method [{$method}] called.");
+ }
+
+ // Initialize the Guzzle client
+ $client = new GuzzleClient('',
+ ['command.params' => ['app_name_or_uuid' => $this->app_name, 'org_name_or_uuid' => $this->org_name]]);
+
+ // Set our own usergrid api client for internal
+ // usage within our api models.
+ $client->setApiClient($this);
+
+ // Set the client user agent
+ $client->setUserAgent($this->getUserAgent(), true);
+
+
+ // Set the headers
+ $client->setDefaultOption('headers', $this->getHeaders());
+
+ // Get the Guzzle event dispatcher
+ $dispatcher = $client->getEventDispatcher();
+
+ // Register the error response plugin for our custom exceptions
+ $dispatcher->addSubscriber(new ErrorResponsePlugin);
+
+ // Listen to the "command.after_prepare" event fired by Guzzle
+ $dispatcher->addListener('command.after_prepare', function (Event $event) {
+ $request = $event['command']->getRequest();
+
+ $request->getQuery()->setAggregator(new QueryAggregator());
+ });
+
+ //check if Oauth 2 plugin is a instance of Oauth2Plugin
+ if ($this->oauth2_plugin instanceof Oauth2Plugin) {
+ $dispatcher->addSubscriber($this->oauth2_plugin);
+ }
+
+
+ // Set the manifest payload into the Guzzle client
+ $client->setDescription(ServiceDescription::factory(
+ $this->buildPayload($method)
+ ));
+
+ // Return the Guzzle client
+ return $client;
+ }
+
+ /**
+ * Checks if the manifest file for the current request exists.
+ *
+ * @param string $file
+ * @return bool
+ */
+ protected function manifestExists($file)
+ {
+ return file_exists($this->getManifestFilePath($file));
+ }
+
+ /**
+ * Returns the given request manifest file path.
+ *
+ * @param string $file
+ * @return string
+ */
+ protected function getManifestFilePath($file)
+ {
+ return $this->getFullManifestPath() . '/' . ucwords($file) . '.php';
+ }
+
+ /**
+ * Returns the full versioned manifests path.
+ *
+ * @return string
+ */
+ protected function getFullManifestPath()
+ {
+ return $this->getManifestPath() . '/' . $this->getVersion();
+ }
+
+ /**
+ * @return string
+ */
+ public function getManifestPath()
+ {
+ return $this->manifestPath;
+ }
+
+ /**
+ * @param string $manifestPath
+ * @return $this
+ */
+ public function setManifestPath($manifestPath)
+ {
+ $this->manifestPath = $manifestPath;
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+
+ /**
+ * @param string $version
+ * @return $this
+ */
+ public function setVersion($version)
+ {
+ $this->version = $version;
+
+ $this->setHeaders([
+ 'Usergrid-Version' => (string)$version,
+ ]);
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getUserAgent()
+ {
+ return $this->userAgent;
+ }
+
+ /**
+ * @param string $userAgent
+ * @return $this
+ */
+ public function setUserAgent($userAgent)
+ {
+ $this->userAgent = $userAgent;
+
+ return $this;
+ }
+
+ /**
+ * Returns the Guzzle client headers.
+ *
+ * @return array
+ */
+ public function getHeaders()
+ {
+ return $this->headers;
+ }
+
+ /**
+ * Sets the Guzzle client headers.
+ *
+ * @param array $headers
+ * @return $this
+ */
+ public function setHeaders(array $headers = [])
+ {
+ $this->headers = array_merge($this->headers, $headers);
+
+ return $this;
+ }
+
+ /**
+ * Returns the current request payload.
+ *
+ * @param string $method
+ * @return array
+ */
+ protected function buildPayload($method)
+ {
+ $operations = $this->getRequestManifestPayload($method);
+
+ $manifest = $this->getRequestManifestPayload('manifest', false);
+
+ return array_merge($manifest, compact('operations'));
+ }
+
+ /**
+ * Returns the given file manifest data.
+ *
+ * @param string $file
+ * @param bool $includeErrors
+ * @return array
+ */
+ protected function getRequestManifestPayload($file, $includeErrors = true)
+ {
+ $file = ucwords($file);
+
+ /** @noinspection PhpUnusedLocalVariableInspection */
+ $baseURL = $this->baseUrl;
+
+ if (!$manifest = array_get($this->manifests, $file)) {
+ if ($includeErrors) {
+ /** @noinspection PhpUnusedLocalVariableInspection */
+ $errors = $this->getRequestManifestPayload('errors', false);
+ }
+
+ /** @noinspection PhpIncludeInspection */
+ $manifest = require_once $this->getManifestFilePath($file);
+
+ array_set($this->manifests, $file, $manifest);
+ }
+
+ return $manifest;
+ }
+
+ /**
+ * Determines if the request is a single request.
+ *
+ * @param $method
+ * @return bool
+ */
+ protected function isSingleRequest($method)
+ {
+ return (str_singular($method) === $method && $this->manifestExists(str_plural($method)));
+ }
+
+ /**
+ * Handles a single request.
+ *
+ * @param string $method
+ * @param array $arguments
+ * @return \Guzzle\Service\Client
+ * @throws \InvalidArgumentException
+ */
+ protected function handleSingleRequest($method, array $arguments = [])
+ {
+ // Check if we have any arguments
+ if (empty($arguments)) {
+ throw new InvalidArgumentException('Not enough arguments provided!');
+ }
+
+ // Pluralize the method name
+ $pluralMethod = str_plural($method);
+
+ // Get the request manifest payload data
+ $manifest = $this->getRequestManifestPayload($pluralMethod);
+
+ if (!$parameters = array_get($manifest, 'find')) {
+ throw new InvalidArgumentException("Undefined method [{$method}] called.");;
+ }
+
+ // Get the required parameters for the request
+ $required = array_where(array_get($parameters, 'parameters'), function ($key, $value) {
+ return $value['required'] === true;
+ });
+
+ // Prepare the arguments for the request
+ $arguments = array_combine(
+ array_keys($required),
+ count($required) === 1 ? (array)$arguments[0] : $arguments
+ );
+
+ // Execute the request
+ return $this->handleRequest($pluralMethod)->find($arguments);
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/AuthorizationCode.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/AuthorizationCode.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/AuthorizationCode.php
new file mode 100755
index 0000000..b03d4a7
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/AuthorizationCode.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType;
+
+use Guzzle\Common\Collection;
+use Guzzle\Http\ClientInterface;
+
+/**
+ * Authorization code grant type.
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ *
+ * @link http://tools.ietf.org/html/rfc6749#section-4.1
+ */
+class AuthorizationCode implements GrantTypeInterface
+{
+ /** @var ClientInterface The token endpoint client */
+ protected $client;
+
+ /** @var Collection Configuration settings */
+ protected $config;
+
+ public function __construct(ClientInterface $client, $config)
+ {
+ $this->client = $client;
+ $this->config = Collection::fromConfig($config, array(
+ 'client_secret' => '',
+ 'scope' => '',
+ 'redirect_uri' => '',
+ ), array(
+ 'client_id',
+ 'code',
+ ));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTokenData()
+ {
+ $postBody = array(
+ 'grant_type' => 'authorization_code',
+ 'code' => $this->config['code'],
+ );
+ if ($this->config['scope']) {
+ $postBody['scope'] = $this->config['scope'];
+ }
+ if ($this->config['redirect_uri']) {
+ $postBody['redirect_uri'] = $this->config['redirect_uri'];
+ }
+ $request = $this->client->post(null, array(), $postBody);
+ $request->setAuth($this->config['client_id'], $this->config['client_secret']);
+ $response = $request->send();
+ $data = $response->json();
+
+ $requiredData = array_flip(array('access_token', 'expires_in', 'refresh_token'));
+ return array_intersect_key($data, $requiredData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/ClientCredentials.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/ClientCredentials.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/ClientCredentials.php
new file mode 100755
index 0000000..729f6a5
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/ClientCredentials.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType;
+
+use Guzzle\Common\Collection;
+use Guzzle\Http\ClientInterface;
+
+/**
+ * Client credentials grant type.
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ *
+ * @link http://tools.ietf.org/html/rfc6749#section-4.4
+ */
+class ClientCredentials implements GrantTypeInterface
+{
+ /** @var ClientInterface The token endpoint client */
+ protected $client;
+
+ /** @var Collection Configuration settings */
+ protected $config;
+
+ public function __construct(ClientInterface $client, $config)
+ {
+ $this->client = $client;
+ $this->config = Collection::fromConfig($config, array(
+ 'client_secret' => '',
+ 'scope' => '',
+ ), array(
+ 'client_id',
+ ));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTokenData()
+ {
+ $postBody = array(
+ 'grant_type' => 'client_credentials',
+ 'client_id' => $this->config['client_id'],
+ 'client_secret' => $this->config['client_secret']
+ );
+ if ($this->config['scope']) {
+ $postBody['scope'] = $this->config['scope'];
+ }
+ $request = $this->client->post(null, array(), $postBody);
+// $request->setAuth($this->config['client_id'], $this->config['client_secret']);
+ $response = $request->send();
+ $data = $response->json();
+
+ $requiredData = array_flip(array('access_token', 'expires_in', 'refresh_token'));
+ return array_intersect_key($data, $requiredData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/GrantTypeInterface.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/GrantTypeInterface.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/GrantTypeInterface.php
new file mode 100755
index 0000000..99096c0
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/GrantTypeInterface.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType;
+
+
+/**
+ * Interface GrantTypeInterface
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+interface GrantTypeInterface
+{
+ /**
+ * Get the token data returned by the OAuth2 server.
+ *
+ * @return array An array with the following keys:
+ * - access_token: The access token.
+ * - expires_in: The access token lifetime, in seconds.
+ * - refresh_token: The refresh token, if present.
+ */
+ public function getTokenData();
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/HWIOAuthBundleRefreshToken.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/HWIOAuthBundleRefreshToken.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/HWIOAuthBundleRefreshToken.php
new file mode 100755
index 0000000..f30d593
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/HWIOAuthBundleRefreshToken.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType;
+
+use HWI\Bundle\OAuthBundle\Security\Http\ResourceOwnerMap;
+use Symfony\Component\Security\Core\SecurityContextInterface;
+
+/**
+ * HWIOAuthBundle Aware Refresh token grant type.
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ *
+ * @link http://tools.ietf.org/html/rfc6749#section-6
+ */
+class HWIOAuthBundleRefreshToken implements GrantTypeInterface
+{
+ /** @var SecurityContextInterface Symfony2 security component */
+ protected $securityContext;
+
+ /** @var ResourceOwnerMap HWIOAuthBundle OAuth2 ResourceOwnerMap */
+ protected $resourceOwnerMap;
+
+ public function __construct(ResourceOwnerMap $resourceOwnerMap, SecurityContextInterface $securityContext)
+ {
+ $this->securityContext = $securityContext;
+ $this->resourceOwnerMap = $resourceOwnerMap;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTokenData($refreshToken = null)
+ {
+ $token = $this->securityContext->getToken();
+ $resourceName = $token->getResourceOwnerName();
+ $resourceOwner = $this->resourceOwnerMap->getResourceOwnerByName($resourceName);
+
+ $data = $resourceOwner->refreshAccessToken($refreshToken);
+ $token->setRawToken($data);
+ $requiredData = array_flip(array('access_token', 'expires_in', 'refresh_token'));
+
+ return array_intersect_key($data, $requiredData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/PasswordCredentials.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/PasswordCredentials.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/PasswordCredentials.php
new file mode 100755
index 0000000..6afc482
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/PasswordCredentials.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType;
+
+use Guzzle\Common\Collection;
+use Guzzle\Http\ClientInterface;
+
+/**
+ * Resource owner password credentials grant type.
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ *
+ * @link http://tools.ietf.org/html/rfc6749#section-4.3
+ */
+class PasswordCredentials implements GrantTypeInterface
+{
+ /** @var ClientInterface The token endpoint client */
+ protected $client;
+
+ /** @var Collection Configuration settings */
+ protected $config;
+
+ public function __construct(ClientInterface $client, $config)
+ {
+ $this->client = $client;
+ $this->config = Collection::fromConfig($config, array(
+ 'client_secret' => '',
+ 'scope' => '',
+ ), array(
+ 'client_id',
+ 'username',
+ 'password'
+ ));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTokenData()
+ {
+ $postBody = array(
+ 'grant_type' => 'password',
+ 'username' => $this->config['username'],
+ 'password' => $this->config['password'],
+ );
+ if ($this->config['scope']) {
+ $postBody['scope'] = $this->config['scope'];
+ }
+ $request = $this->client->post(null, array(), $postBody);
+ //Note: Usergrid it not using Oauth2 to spec so it dose not need a Auth type set no need to client id + secret when using password
+// $request->setAuth($this->config['client_id'], $this->config['client_secret']);
+ $response = $request->send();
+ $data = $response->json();
+
+ $requiredData = array_flip(array('access_token', 'expires_in', 'refresh_token'));
+ return array_intersect_key($data, $requiredData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/RefreshToken.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/RefreshToken.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/RefreshToken.php
new file mode 100755
index 0000000..149d570
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/GrantType/RefreshToken.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType;
+
+use Guzzle\Common\Collection;
+use Guzzle\Http\ClientInterface;
+
+/**
+ * Refresh token grant type.
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ *
+ * @link http://tools.ietf.org/html/rfc6749#section-6
+ */
+class RefreshToken implements GrantTypeInterface
+{
+ /** @var ClientInterface The token endpoint client */
+ protected $client;
+
+ /** @var Collection Configuration settings */
+ protected $config;
+
+ public function __construct(ClientInterface $client, $config)
+ {
+ $this->client = $client;
+ $this->config = Collection::fromConfig($config, array(
+ 'client_secret' => '',
+ 'refresh_token' => '',
+ 'scope' => '',
+ ), array(
+ 'client_id',
+ ));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTokenData($refreshToken = null)
+ {
+ $postBody = array(
+ 'grant_type' => 'refresh_token',
+ // If no refresh token was provided to the method, use the one
+ // provided to the constructor.
+ 'refresh_token' => $refreshToken ?: $this->config['refresh_token'],
+ );
+ if ($this->config['scope']) {
+ $postBody['scope'] = $this->config['scope'];
+ }
+ $request = $this->client->post(null, array(), $postBody);
+ $request->setAuth($this->config['client_id'], $this->config['client_secret']);
+ $response = $request->send();
+ $data = $response->json();
+
+ $requiredData = array_flip(array('access_token', 'expires_in', 'refresh_token'));
+ return array_intersect_key($data, $requiredData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/Oauth2Plugin.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/Oauth2Plugin.php b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/Oauth2Plugin.php
new file mode 100755
index 0000000..8454309
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Guzzle/Plugin/Oauth2/Oauth2Plugin.php
@@ -0,0 +1,212 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Guzzle\Plugin\Oauth2;
+
+use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\GrantTypeInterface;
+use Guzzle\Common\Event;
+use Guzzle\Http\Exception\BadResponseException;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * OAuth2 plugin
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ *
+ * @link http://tools.ietf.org/html/rfc6749
+ */
+class Oauth2Plugin implements EventSubscriberInterface
+{
+
+ /** @var GrantTypeInterface The grant type implementation used to acquire access tokens */
+ protected $grantType;
+
+ /** @var GrantTypeInterface The grant type implementation used to refresh access tokens */
+ protected $refreshTokenGrantType;
+
+ /** @var array An array with the "access_token" and "expires" keys */
+ protected $accessToken;
+
+ /** @var string The refresh token string. * */
+ protected $refreshToken;
+
+ /**
+ * Create a new Oauth2 plugin
+ * @param GrantTypeInterface $grantType
+ * @param GrantTypeInterface $refreshTokenGrantType
+ */
+ public function __construct(GrantTypeInterface $grantType = null, GrantTypeInterface $refreshTokenGrantType = null)
+ {
+ $this->grantType = $grantType;
+ $this->refreshTokenGrantType = $refreshTokenGrantType;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function getSubscribedEvents()
+ {
+ return array(
+ 'request.before_send' => 'onRequestBeforeSend',
+ 'request.error' => 'onRequestError',
+ );
+ }
+
+ /**
+ * Request before-send event handler.
+ *
+ * Adds the Authorization header if an access token was found.
+ *
+ * @param Event $event Event received
+ */
+ public function onRequestBeforeSend(Event $event)
+ {
+ $accessToken = $this->getAccessToken();
+ if ($accessToken) {
+ $event['request']->setHeader('Authorization', 'Bearer ' . $accessToken['access_token']);
+ }
+ }
+
+ /**
+ * Get the access token.
+ *
+ * Handles token expiration for tokens with an "expires" timestamp.
+ * In case no valid token was found, tries to acquire a new one.
+ *
+ * @return array|null
+ */
+ public function getAccessToken()
+ {
+ if (isset($this->accessToken['expires']) && $this->accessToken['expires'] < time()) {
+ // The access token has expired.
+ $this->accessToken = null;
+ }
+ if (!$this->accessToken) {
+ // Try to acquire a new access token from the server.
+ $this->acquireAccessToken();
+ }
+
+ return $this->accessToken;
+ }
+
+ /**
+ * Set the access token.
+ *
+ * @param array|string $accessToken The access token
+ */
+ public function setAccessToken(array $accessToken)
+ {
+ $this->accessToken = $accessToken;
+ }
+
+ /**
+ * Acquire a new access token from the server.
+ *
+ * @return array|null
+ */
+ protected function acquireAccessToken()
+ {
+ if ($this->refreshTokenGrantType && $this->refreshToken) {
+ try {
+ // Get an access token using the stored refresh token.
+ $tokenData = $this->refreshTokenGrantType->getTokenData($this->refreshToken);
+ } catch (BadResponseException $e) {
+ // The refresh token has probably expired.
+ $this->refreshToken = null;
+ }
+ }
+ if ($this->grantType && !isset($tokenData)) {
+ // Get a new access token.
+ $tokenData = $this->grantType->getTokenData();
+ }
+
+ $this->accessToken = null;
+ if (isset($tokenData)) {
+ // Process the returned data. Both expired_in and refresh_token
+ // are optional parameters.
+ $this->accessToken = array(
+ 'access_token' => $tokenData['access_token'],
+ );
+ if (isset($tokenData['expires_in'])) {
+ $this->accessToken['expires'] = time() + $tokenData['expires_in'];
+ }
+ if (isset($tokenData['refresh_token'])) {
+ $this->refreshToken = $tokenData['refresh_token'];
+ }
+ }
+
+ return $this->accessToken;
+ }
+
+ /**
+ * Request error event handler.
+ *
+ * Handles unauthorized errors by acquiring a new access token and
+ * retrying the request.
+ *
+ * @param Event $event Event received
+ */
+ public function onRequestError(Event $event)
+ {
+ if ($event['response']->getStatusCode() == 401) {
+ if ($event['request']->getHeader('X-Guzzle-Retry')) {
+ // We already retried once, give up.
+ return;
+ }
+
+ // Acquire a new access token, and retry the request.
+ $newAccessToken = $this->acquireAccessToken();
+ if ($newAccessToken) {
+ $newRequest = clone $event['request'];
+ $newRequest->setHeader('Authorization', 'Bearer ' . $newAccessToken['access_token']);
+ $newRequest->setHeader('X-Guzzle-Retry', '1');
+ $event['response'] = $newRequest->send();
+ $event->stopPropagation();
+ }
+ }
+ }
+
+ /**
+ * Get the refresh token.
+ *
+ * @return string
+ */
+ public function getRefreshToken()
+ {
+ return $this->refreshToken;
+ }
+
+ /**
+ * Set the refresh token.
+ *
+ * @param string $refreshToken The refresh token
+ */
+ public function setRefreshToken($refreshToken)
+ {
+ $this->refreshToken = $refreshToken;
+ }
+
+ /**
+ * @return GrantTypeInterface
+ */
+ public function getGrantType()
+ {
+ return $this->grantType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Laravel/ApacheUsergridServiceProvider.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Laravel/ApacheUsergridServiceProvider.php b/sdks/other/php5/apache-usergrid/src/Laravel/ApacheUsergridServiceProvider.php
new file mode 100644
index 0000000..57807ad
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Laravel/ApacheUsergridServiceProvider.php
@@ -0,0 +1,159 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Laravel;
+
+
+use Apache\Usergrid\Api\Usergrid;
+use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\ClientCredentials;
+use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\PasswordCredentials;
+use Apache\Usergrid\Guzzle\Plugin\Oauth2\GrantType\RefreshToken;
+use Apache\Usergrid\Guzzle\Plugin\Oauth2\Oauth2Plugin;
+use Guzzle\Http\Client;
+use Illuminate\Support\ServiceProvider;
+
+/**
+ * Class ApacheUsergridServiceProvider
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class ApacheUsergridServiceProvider extends ServiceProvider
+{
+
+ protected $oauth2Plugin = null;
+
+ /**
+ *
+ */
+ public function boot()
+ {
+ $this->package('apache/usergrid', 'apache/usergrid', __DIR__ . '/..');
+ }
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ // register Usergrid
+ $this->registerUsergrid();
+
+ }
+
+ protected function registerUsergrid()
+ {
+
+ $this->app['usergrid'] = $this->app->share(function ($app) {
+
+ /** Note: I had to move this to here from the register function as the below config values would not get set and would be null
+ * unless I has this with the package namespace missing but doing that would mean that it would not find the enable_oauth2_plugin
+ * value .. This has been driving me crazy as I tried to read the config values from a rout and they would not show up
+ * then I did . Also this would not find the config values if the boot function did not have the package method called with
+ * all 3 args
+ * $enable_oauth2_plugin = $this->app['config']->get('usergrid.enable_oauth2_plugin');
+ *
+ * //check if user managed oauth auth flow
+ * if($enable_oauth2_plugin){
+ * // Create the Oauth2 Guzzle Plugin.
+ * $this->createGuzzleOauth2Plugin();
+ * }
+ */
+ $enable_oauth2_plugin = $app['config']->get('apache/usergrid::usergrid.enable_oauth2_plugin');
+
+ //check if user managed oauth auth flow
+ if ($enable_oauth2_plugin) {
+ // Create the Oauth2 Guzzle Plugin.
+ $this->createGuzzleOauth2Plugin();
+ }
+
+ $baseUrl = $app['config']->get('apache/usergrid::usergrid.url');
+
+ $orgName = $app['config']->get('apache/usergrid::usergrid.orgName');
+
+ $appName = $app['config']->get('apache/usergrid::usergrid.appName');
+
+ $manifestPath = $app['config']->get('apache/usergrid::usergrid.manifestPath');
+
+ $version = $app['config']->get('apache/usergrid::usergrid.version');
+
+ return new Usergrid($orgName, $appName, $manifestPath, $version, $baseUrl, $this->oauth2Plugin);
+ });
+
+ $this->app->alias('usergrid', 'Apache\Usergrid\Api\Usergrid');
+ }
+
+
+ protected function createGuzzleOauth2Plugin()
+ {
+
+ $base_url = $this->app['config']->get('apache/usergrid::usergrid.url');
+
+ $org_name = $this->app['config']->get('apache/usergrid::usergrid.orgName');
+
+ $app_name = $this->app['config']->get('apache/usergrid::usergrid.appName');
+
+ $grant_type = $this->app['config']->get('apache/usergrid::usergrid.grant_type');
+
+ $client_id = $this->app['config']->get('apache/usergrid::usergrid.clientId');
+
+ $client_secret = $this->app['config']->get('apache/usergrid::usergrid.clientSecret');
+
+ $username = $this->app['config']->get('apache/usergrid::usergrid.username');
+
+ $password = $this->app['config']->get('apache/usergrid::usergrid.password');
+
+
+ if ($this->app['config']->get('apache/usergrid::usergrid.auth_type') == 'organization') {
+
+ $url = $base_url . '/management/token';
+
+ } elseif ($this->app['config']->get('apache/usergrid::usergrid.auth_type') == 'application') {
+ $url = $base_url . '/' . $org_name . '/' . $app_name . '/token';
+ }
+
+ $oauth2Client = new Client($url);
+
+ if ($grant_type == 'client_credentials') {
+ $config = [
+ 'client_id' => $client_id,
+ 'client_secret' => $client_secret,
+
+ ];
+ $grantType = new ClientCredentials($oauth2Client, $config);
+ $refreshTokenGrantType = new RefreshToken($oauth2Client, $config);
+ $this->oauth2Plugin = new Oauth2Plugin($grantType, $refreshTokenGrantType);
+
+ } elseif ($grant_type == 'password') {
+ $config = [
+ 'username' => $username,
+ 'password' => $password,
+ 'client_id' => $client_id,
+ 'client_secret' => $client_secret
+ ];
+ $grantType = new PasswordCredentials($oauth2Client, $config);
+ $refreshTokenGrantType = new RefreshToken($oauth2Client, $config);
+ $this->oauth2Plugin = new Oauth2Plugin($grantType, $refreshTokenGrantType);
+ }
+
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/867060fa/sdks/other/php5/apache-usergrid/src/Laravel/Facades/Usergrid.php
----------------------------------------------------------------------
diff --git a/sdks/other/php5/apache-usergrid/src/Laravel/Facades/Usergrid.php b/sdks/other/php5/apache-usergrid/src/Laravel/Facades/Usergrid.php
new file mode 100644
index 0000000..1ea29f2
--- /dev/null
+++ b/sdks/other/php5/apache-usergrid/src/Laravel/Facades/Usergrid.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Copyright 2010-2014 baas-platform.com, Pty Ltd. 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://www.apache.org/licenses/LICENSE-2.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 Apache\Usergrid\Laravel\Facades;
+
+
+use Illuminate\Support\Facades\Facade;
+
+/**
+ * Class Usergrid
+ *
+ * @package Apache/Usergrid
+ * @version 1.0.0
+ * @author Jason Kristian <ja...@gmail.com>
+ * @license Apache License, Version 2.0
+ * @copyright (c) 2008-2014, Baas Platform Pty. Ltd
+ * @link http://baas-platform.com
+ */
+class Usergrid extends Facade
+{
+ /**
+ * @return string
+ */
+ protected static function getFacadeAccessor()
+ {
+ return "usergrid";
+ }
+
+}
\ No newline at end of file