Laravel + Httpful para comunicarte con el API de Dropbox

¿Necesitas incorporar una librería cliente HTTP en tu aplicación Laravel 5? Si es así, seguramente ya sabrás que este framework PHP no viene de fábrica con ningún componente de este tipo, así que te tocará buscar y probar un poco y tomar la decisión final: ¿qué librería REST poner?

HTTP

Hoy comparto un snippet PHP de ejemplo para que veas cómo utilizar Httpful, una librería cliente REST para HTTP.

Llamada a un método público

Esta llamada pertenece al protocolo de autorización de OAuth 2, y genera un token de acceso al API de Dropbox.

$data =  [
    'code' => \Input::get('code'),
    'grant_type' => 'authorization_code',
    'client_id' => getenv('DROPBOX_APP_KEY'),
    'client_secret' => getenv('DROPBOX_APP_SECRET'),
    'redirect_uri' => getenv('DROPBOX_OAUTH_CALLBACK')
];

$response = \Httpful\Request::post(getenv('DROPBOX_OAUTH_ENDPOINT'))
    ->sendsType(\Httpful\Mime::FORM)
    ->body(http_build_query($data))
    ->send();

print_r($response);

Llamada a un método autenticado

La siguiente llamada REST crea una carpeta nueva en la cuenta Dropbox del usuario.

$dropboxUser = \App\Model\DropboxUser::where('id_user','=',\Auth::user()->id)->first();

$data =  [
    'root' => 'auto',
    'path' => 'foo'
];

$response = \Httpful\Request::post('https://api.dropboxapi.com/1/fileops/create_folder')
    ->addHeader('Authorization', "Bearer {$dropboxUser->oauth_token}")
    ->sendsType(\Httpful\Mime::FORM)
    ->body(http_build_query($data))
    ->send();

print_r($response);

En este caso tan solo hay que incorporar la cabecera de autorización con el token OAuth del usuario.