| <?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. | |
| */ | |
| include('vendor/autoload.php'); | |
| use Apache\Usergrid\Native\Facades\Usergrid; | |
| use Apache\Usergrid\Native\UsergridBootstrapper; | |
| /** Source your config from file I'm using array here just for ease of use. | |
| * When using Laravel Framework publish the package config file when using with | |
| * other modern PHP frameworks just use their default config system . | |
| */ | |
| $config = [ | |
| 'usergrid' => [ | |
| 'url' => 'https://api.usergrid.com', | |
| 'version' => '1.0.1', // set manifest version | |
| 'orgName' => '', | |
| 'appName' => '', | |
| 'manifestPath' => './src/Manifests', //leave as default or change to your own custom folder | |
| 'clientId' => '', | |
| 'clientSecret' => '', | |
| 'username' => '', | |
| 'password' => '', | |
| /** | |
| * The Auth Type setting is the Oauth 2 end point you want to get the OAuth 2 | |
| * Token from. You have two options here one is 'application' the other is 'organization' | |
| * | |
| * organization will get the the token from http://example.com/management using client_credentials or password grant type | |
| * application will get the token from http://example.com/managment/org_name/app_name using client_credentials or password grant type | |
| */ | |
| 'auth_type' => 'application', | |
| /** The Grant Type to use | |
| * | |
| * This has to be set to one of the 2 grant types that Apache Usergrid | |
| * supports which at the moment is client_credentials or password but at | |
| * 2 level organization or application | |
| */ | |
| 'grant_type' => 'password', | |
| /** | |
| * if you want to manage your own auth flow by calling the token api and setting the token your self just set this to false | |
| * */ | |
| 'enable_oauth2_plugin' => true | |
| ] | |
| ]; | |
| /** Usergrid Facades Off */ | |
| //call the bootstrap class that will create the api client then get the usergrid instance from the bootstrapper | |
| $bootstrapper = new UsergridBootstrapper($config); | |
| $usergrid = $bootstrapper->createUsergrid(); | |
| /** Note: I'm using Users for the first lot of example's but you could do the same for all default collections eg: groups, devices, roles, notification etc*/ | |
| // All responses are model objects that subclass the baseCollection class so all collection methods are available eg: first(), map(), fetch(), hasValue(), hasKey() etc. | |
| //find users with query | |
| $user = $usergrid->users()->find(['ql' => 'select * where activated=true']); | |
| //var_dump($user->entities->first()); | |
| //request that throw exception in this case 404 not found | |
| try { | |
| $user2 = $usergrid->users()->findById(['uuid' => 'uuid-number']); | |
| // var_dump($user2->get('entities')); | |
| } catch (Apache\Usergrid\Api\Exception\NotFoundException $e) { | |
| // var_dump($e->getResponse()); | |
| } | |
| /** | |
| * There a errors for all Usergrid response errors and http errors so you can create a catch all error class or plug it into your fav php frameworks error handling. | |
| * Apache\Usergrid\Api\Exception\BadRequestException = http 400 | |
| * Apache\Usergrid\Api\Exception\UnauthorizedException = http 401 | |
| * Apache\Usergrid\Api\Exception\RequestFailedException = http 402 | |
| * Apache\Usergrid\Api\Exception\NotFoundException = http 404 | |
| * Apache\Usergrid\Api\Exception\ServerErrorException = http 500 | |
| * Apache\Usergrid\Api\Exception\ServerErrorException = http 502 | |
| * Apache\Usergrid\Api\Exception\ServerErrorException = http 503 | |
| * Apache\Usergrid\Api\Exception\ServerErrorException = http 504 | |
| */ | |
| // collection Iterators no need to keep calling request with a cursor to get all entities in a collection | |
| // UserIterator(), DeviceIterator() GroupsIterator() , RolesIterator() etc. | |
| $user_iterator = $usergrid->usersIterator(); | |
| foreach ($user_iterator as $iUser) { | |
| var_dump($iUser); | |
| var_dump("---------------------------------------------------------------------------------"); | |
| } | |
| // create new user | |
| $new_user = ['name' => 'jasonk', 'username' => 'JasonK', 'email' => 'jason@example.com', 'password' => 'some_password']; | |
| //$created_user = $usergrid->users()->create($new_user); | |
| //var_dump($created_user->entities); | |
| //Update Users by name or uuid | |
| $new_email = ['email' => 'jason@example', 'entity_name_or_uuid' => 'benn']; | |
| $updated_user = $usergrid->users()->update($new_email); | |
| //var_dump($updated_user->entities); | |
| // delete a user | |
| //$deleted_user = $usergrid->users()->delete(['entity_name_or_uuid' => 'benn']); | |
| //var_dump($deleted_user); | |
| //get custom collection | |
| $custom_collection = $usergrid->application()->EntityGet(['collection' => 'shops']); | |
| //var_dump($custom_collection->entities->get('name')); | |
| //get custom collection with query | |
| $custom_collection_query = $usergrid->application()->EntityGet([ | |
| 'collection' => 'shops', | |
| 'ql' => "select * where country='aus'" | |
| ]); | |
| //var_dump($custom_collection_query->get('entities')); | |
| // Post custom collection as JSON data | |
| $custom_entity = [ | |
| 'collection' => 'shops', | |
| 'name' => 'shop_name', | |
| 'adr' => ['street' => '1 main st', 'location' => 'sydney', 'post_code' => '2323'], | |
| 'type' => 'pet_shop' | |
| ]; | |
| //$created_entity = $usergrid->application()->EntityJsonPost($custom_entity); | |
| //var_dump($created_entity->entities); | |
| // update custom Entity | |
| $custom_entity_edit = [ | |
| 'collection' => 'shops', | |
| 'entity_name_or_uuid' => '918a044a-618a-11e4-8c11-253e9c3723a9', | |
| ['adr' => ['street' => '3 main st', 'location' => 'act', 'post_code' => '3323']] | |
| ]; | |
| $edited_entity = $usergrid->application()->EntityPut($custom_entity_edit); | |
| /** Usergrid Facades On */ | |
| //create a bootstrap instance and then call the static instance method on the Usergrid facade | |
| $bootstrapper2 = new UsergridBootstrapper($config); | |
| Usergrid::instance($bootstrapper2); | |
| // find users with query | |
| $fUser = Usergrid::users()->find(['ql' => 'select * where activated=true']); | |
| $fUser_iterator = Usergrid::usersIterator(); | |
| foreach ($fUser_iterator as $iUser) { | |
| var_dump($iUser); | |
| var_dump("---------------------------------------------------------------------------------"); | |
| } | |
| // create new user | |
| $fNew_user = [ | |
| 'name' => 'jasonk', | |
| 'username' => 'JasonK2', | |
| 'email' => 'jaso2n@example.com', | |
| 'password' => 'some_password' | |
| ]; | |
| $fCreated_user = Usergrid::users()->create($fNew_user); | |
| //var_dump($fCreated_user->entities); | |
| //Update Users by name or uuid | |
| $fNew_email = ['email' => 'jason@example', 'entity_name_or_uuid' => 'benn']; | |
| $fUpdated_user = Usergrid::users()->update($fNew_email); | |
| //var_dump($fUpdated_user->entities); | |
| // delete a user | |
| $fDeleted_user = Usergrid::users()->delete(['entity_name_or_uuid' => 'benn']); | |
| //var_dump($fDeleted_user->entities); | |
| //get custom collection | |
| $fCustom_collection = Usergrid::application()->EntityGet(['collection' => 'shops']); | |
| //var_dump($custom_collection->get('entities')); | |
| //get custom collection with query | |
| $fCustom_collection_query = Usergrid::application()->EntityGet([ | |
| 'collection' => 'shops', | |
| 'ql' => "select * where country='aus'" | |
| ]); | |
| //var_dump($custom_collection_query->get('name')); | |
| // Post custom collection as JSON data | |
| $fCustom_entity = [ | |
| 'collection' => 'shops', | |
| 'name' => 'shop_name3', | |
| 'adr' => ['street' => '1 main st', 'location' => 'sydney', 'post_code' => '2323'], | |
| 'type' => 'pet_shop' | |
| ]; | |
| $fCreated_entity = Usergrid::applictions()->EntityJsonPost($custom_entity); | |
| //var_dump($fCreated_entity->entities); | |
| // update entity | |
| $fCustom_entity_edit = [ | |
| 'collection' => 'shops', | |
| 'entity_name_or_uuid' => 'shop_name2', | |
| ['adr' => ['street' => '3 main st', 'location' => 'act', 'post_code' => '3323']] | |
| ]; | |
| $fEdited_entity = Usergrid::applications()->EntityPut($fCustom_entity_edit); | |
| //var_dump($fEdited_entity->entities); | |
| /** Relationships */ | |
| $related_data = [ | |
| 'collection' => 'required', | |
| 'entity_id' => 'required', | |
| 'relationship' => 'required', | |
| 'ql' => 'optional' | |
| ]; | |
| $get_relationship = Usergrid::application()->GetRelationship($related_data); | |
| $create_relationship_data = [ | |
| 'collection' => 'required', | |
| 'first_entity_id' => 'required', | |
| 'relationship' => 'required', | |
| 'second_entity_id' => 'required' | |
| ]; | |
| $new_relationship = Usergrid::application()->CreateRelationship($create_relationship_data); | |
| /** Groups */ | |
| //add user to group | |
| $fAdd_user_to_group_data = [ | |
| 'entity_name_or_uuid' => 'group_name', | |
| 'user_name_or_uuid' => 'username' | |
| ]; | |
| $fAdded_user_to_group = Usergrid::groups()->addUser($fAdd_user_to_group_data); | |
| //delete user from group | |
| $fDeleted_user_from_group = Usergrid::groups()->deleteUser($fAdd_user_to_group_data); |