Laravel Box

A Laravel package for working with Box.

https://github.com/dcblogdev/laravel-box

Box API documentation can be found at:
https://developer.box.com/

Application Register

To use Box API an application needs creating at https://app.box.com/developers/console/newapp

Install

Via Composer

composer require dcblogdev/laravel-box

Config

You can publish the config file with:

php artisan vendor:publish --provider="Dcblogdev\Box\BoxServiceProvider" --tag="config"

When published, the config/box.php config file contains:


return [
    'clientId'       => env('BOX_CLIENT_ID'),
    'clientSecret'   => env('BOX_SECRET_ID'),
    'redirectUri'    => env('BOX_REDIRECT_URI'),
    'boxLandingUri'  => env('BOX_LANDING_URI'),
    'urlAuthorize'   => 'https://account.box.com/api/oauth2/authorize',
    'urlAccessToken' => 'https://www.box.com/api/oauth2/token',
];

Migration

You can publish the migration with:


php artisan vendor:publish --provider="Dcblogdev\Box\BoxServiceProvider" --tag="migrations"

After the migration has been published you can create the tokens tables by running the migration:


php artisan migrate

.ENV Configuration

You should add the env variables to your .env file, this allows you to use a different box application on different servers, each box application requires a unique callback uri.

The follow are required when using OAuth 2.0 credentials:

The `BOX_REDIRECT_URI` is where Box should redirect to for authentication with Box, upon successful authentication the `BOX_LANDING_URI` is used to direct a user to a desired page. > Note BOX_REDIRECT_URI needs to be the full URI ie https://domain.com/box/

BOX_CLIENT_ID=
BOX_SECRET_ID=
BOX_REDIRECT_URI=https://domain.com/box/oauth
BOX_LANDING_URI=https://domain.com/box

Usage

Import Namespace


use Dcblogdev\Box\Facades\Box;
A routes example:

Route::get('box', function() {

    //if no box token exists then redirect
    Box::getAccessToken(); 
    
    //box authenticated now box:: can be used freely.

    //example of getting the authenticated users details
    return Box::get('/users/me');
    
});

Route::get('box/oauth', function() {
    return Box::connect();
});

Calls can be made by referencing Box:: then the verb get,post,put,patch or delete followed by the end point to call. An array can be passed as a second option.

The end points are relative paths after https://api.box.com/2.0/

Example GET request


Box::get('users/me');

Example POST request


Box::post('folders', [
    'name' => 'name of the folder',
    'parent' => [
        'id' => 0
    ]
]);

The formula is:


Box::get('path', $array);
Box::post('path', $array);
Box::put('path', $array);
Box::patch('path', $array);
Box::delete('path', $array);

Working with Files

This package provides a clean way of working with files.

To work with files first call ->files() followed by a method.



Get file

Accepts a file id, returns an array.


Box::files()->file($id);


Download file

Accepts a file id Optionally a path can be used when $storeDownload is set to true. To download the file only an id is required.


Box::files()->download($id, $path = '', $storeDownload = false);


Upload file

Accepts a file path and filename. Optionally specificy the parent, defaults to 0 when ommited.


Box::files()->upload($path, $name, $parent = 0);


Upload revision

Accepts the file id, file path and filename. Optionally specificy a new name.


Box::files()->uploadRevision($file_id, $filepath, $name, $newname = null);


Delete file

Accepts a file id, returns no output.


Box::files()->destroy($id);

Working with folders

This package provides a clean way of working with folders.

To work with folders first call ->folders() followed by a method.



Get folder contents

Accepts an folder id defaults to 0, returns an array.


Box::folders()->get($id = 0);

Get files within a folder

Accepts an folder id, returns an array.


Box::folders()->items($id);

Create folder

Accepts name of the folder and the folder id as parent, defaults to 0 when ommited. Returns an array.


Box::folders()->store($name, $parent = 0);

Rename folder

Accepts the folder id, name of the folder. Optionally set the parent folder. Returns an array.


Box::folders()->update($id, $name, $parent = 0);

Copy folder

Accepts the folder id, the parent folder. Optionally set a new name on copy. Returns an array.


Box::folders()->copy($id, $parent, $name = null);

Delete folder

Accepts the folder id. Returns no output.


Box::folders()->destroy($id);

Get folder collaborations

Accepts the folder id. Returns an array.


Box::folders()->collaborations($id);