OVHcloud APIs lightweight PHP wrapper

Overview

OVHcloud APIs lightweight PHP wrapper

Source Code Build Status Codecov Code Coverage Total Downloads

This PHP package is a lightweight wrapper for OVHcloud APIs.

The easiest way to use OVHcloud APIs in your PHP applications.

Compatible with PHP 7.4, 8.0, 8.1.

This is a fork of the original OVHcloud project https://github.com/ovh/php-ovh.

Installation

Install this wrapper and integrate it inside your PHP application with Composer :

composer require carsso/ovhcloud

Basic usage

get('/me')['firstname'];">

require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

// Api credentials can be retreived from the urls specified in the "Supported endpoints" section below.
$ovh = new Api($applicationKey,
                $applicationSecret,
                $endpoint,
                $consumerKey);
echo 'Welcome '.$ovh->get('/me')['firstname'];

Advanced usage

Handle exceptions

Under the hood, php-ovhcloud uses Guzzle by default to issue API requests.

If everything goes well, it will return the response directly as shown in the examples above.

If there is an error like a missing endpoint or object (404), an authentication or authorization error (401 or 403) or a parameter error, the Guzzle will raise a GuzzleHttp\Exception\ClientException exception. For server-side errors (5xx), it will raise a GuzzleHttp\Exception\ServerException exception.

You can get the error details with a code like:

get('/me')['firstname']; } catch (GuzzleHttp\Exception\ClientException $e) { $response = $e->getResponse(); $responseBodyAsString = $response->getBody()->getContents(); echo $responseBodyAsString; }">
try {
    echo "Welcome " . $ovh->get('/me')['firstname'];
} catch (GuzzleHttp\Exception\ClientException $e) {
    $response = $e->getResponse();
    $responseBodyAsString = $response->getBody()->getContents();
    echo $responseBodyAsString;
}

Customize HTTP client configuration

You can inject your own HTTP client with your specific configuration. For instance, you can edit user-agent and timeout for all your requests

get('/me')['firstname'];">

require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;
use GuzzleHttp\Client;

// Instantiate a custom Guzzle HTTP client and tweak it
$client = new Client();
$client->setDefaultOption('timeout', 1);
$client->setDefaultOption('headers', ['User-Agent' => 'api_client']);

// Api credentials can be retreived from the urls specified in the "Supported endpoints" section below.
// Inject the custom HTTP client as the 5th argument of the constructor
$ovh = new Api($applicationKey,
                $applicationSecret,
                $endpoint,
                $consumerKey,
                $client);

echo 'Welcome '.$ovh->get('/me')['firstname'];

Authorization flow

This flow will allow you to request consumerKey from an OVHcloud account owner. After allowing access to his account, he will be redirected to your application.

See "OVHcloud API authentication" section below for more information about the authorization flow.

'GET', 'path' => '/me*' ], ]; // After allowing your application access, the customer will be redirected to this URL. $redirectUrl = 'https://your_application_redirect_url' $credentials = $conn->requestCredentials($rights, $redirectUrl); // Save consumer key and redirect to authentication page $_SESSION['consumerKey'] = $credentials['consumerKey']; header('location: '. $credentials['validationUrl']); // After successful redirect, the consumerKey in the session will be activated and you will be able to use it to make API requests like in the "Basic usage" section above.">
use \Ovh\Api;
session_start();

// Api credentials can be retreived from the urls specified in the "Supported endpoints" section below.
$ovh = new Api($applicationKey,
                $applicationSecret,
                $endpoint);

// Specify the list of API routes you want to request
$rights = [
    [ 'method' => 'GET',  'path' => '/me*' ],
];

// After allowing your application access, the customer will be redirected to this URL.
$redirectUrl = 'https://your_application_redirect_url'

$credentials = $conn->requestCredentials($rights, $redirectUrl);

// Save consumer key and redirect to authentication page
$_SESSION['consumerKey'] = $credentials['consumerKey'];
header('location: '. $credentials['validationUrl']);
// After successful redirect, the consumerKey in the session will be activated and you will be able to use it to make API requests like in the "Basic usage" section above.

Code sample : Enable network burst on GRA1 dedicated servers

Here is a more complex example of how to use the wrapper to enable network burst on GRA1 dedicated servers.

get('/dedicated/server/'); foreach ($servers as $server) { // Load the server details $details = $conn->get('/dedicated/server/'.$server); // Filter servers only inside GRA1 if ($details['datacenter'] == 'gra1') { // Activate burst on server $content = ['status' => 'active']; $conn->put('/dedicated/server/'.$server.'/burst', $content); echo 'Burst enabled on '.$server; } }">

require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

// Api credentials can be retreived from the urls specified in the "Supported endpoints" section below.
$ovh = new Api($applicationKey,
                $applicationSecret,
                $endpoint,
                $consumerKey);

// Load the list of dedicated servers
$servers = $conn->get('/dedicated/server/');
foreach ($servers as $server) {
    // Load the server details
    $details = $conn->get('/dedicated/server/'.$server);
    // Filter servers only inside GRA1
    if ($details['datacenter'] == 'gra1') {
        // Activate burst on server
        $content = ['status' => 'active'];
        $conn->put('/dedicated/server/'.$server.'/burst', $content);
        echo 'Burst enabled on '.$server;
    }
}

More code samples

Do you want to use OVH APIs? Maybe the script you want is already written in the example part of this repository!

OVHcloud API authentication

To use the OVHcloud APIs you need three credentials :

  • An application key
  • An application secret
  • A consumer key

The application key and secret are not granting access to a specific account and are unique to identify your application. The consumer key is used to grant access to a specific OVHcloud account to a specified application.

They can be created separately if your application is intended to be used by multiple accounts (your app will need to implement an authorization flow). In the authorization flow, the customer will be prompted to allow access to his account to your application, then he will be redirected to your application.

They can also be created together if your application is intended to use only your own OVHcloud account.

Supported endpoints

OVHcloud Europe

OVHcloud US

OVHcloud North America / Canada

So you Start Europe

So you Start North America

Kimsufi Europe

Kimsufi North America

Building documentation

Documentation is based on phpdocumentor and inclued in the project. To generate documentation, it's possible to use directly:

composer phpdoc

Documentation is available in docs/ directory.

Code check / Linting

Code check is based on PHP CodeSniffer and inclued in the project. To check code, it's possible to use directly:

composer phpcs

Code linting is based on PHP Code Beautifier and Fixer and inclued in the project. To lint code, it's possible to use directly:

composer phpcbf

Testing

Tests are based on phpunit and inclued in the project. To run functionals tests, you need to provide valid API credentials, that you can provide them via environment:

APP_KEY=xxx APP_SECRET=xxx CONSUMER=xxx ENDPOINT=xxx composer phpunit

Contributing

Please see CONTRIBUTING for details.

Credits

License

(Modified) BSD license. Please see LICENSE for more information.

You might also like...
Google Translator Api Wrapper For Php Developers.

Google Translator Api Wrapper For Php Developers.

Laravel wrapper for the Facebook Graph PHP 8 SDK

Laravel Facebook Graph SDK Installation Getting started with Laravel Facebook Graph is easy - first, install the package via composer composer require

The Official Vultr API PHP Wrapper

WIP - This is not the final API Client. Unstable release use with caution. Vultr API PHP Client. Getting Started Must have a PSR7, PSR17, and PSR18 Co

laravel wrapper for dicom images services

laravel wrapper for dicom images services

An elegant wrapper around Google Vision API
An elegant wrapper around Google Vision API

STILL UNDER DEVELOPMENT - DO NOT USE IN PRODUCTION Requires PHP 8.0+ For feedback, please contact me. This package provides an elegant wrapper around

A Laravel wrapper for thephpleague's Fractal package

laravel-api-response A Laravel wrapper for thephpleague's Fractal package Install Via Composer composer require lykegenes/laravel-api-response Then, a

This package is a simple API laravel wrapper for Pokemontcg with a sleek Model design for API routes and authentication.

This package is a simple API laravel wrapper for Pokemontcg with a sleek Model design for API routes and authentication.

Laravel 8.x package wrapper library for Metatrader 5 Web API

Laravel 8.x package wrapper library for Metatrader 5 Web API

An unofficial wrapper client for lknpd.nalog.ru API

Unofficial MoyNalog API client An unofficial wrapper client for lknpd.nalog.ru API Install Via Composer $ composer require shoman4eg/moy-nalog Usage S

Owner
Germain Carré
DevOps OVHcloud (@ovh) Private Cloud | VMware - Linux - Perl
Germain Carré
SendGrid's PHP HTTP Client for calling APIs

Quickly and easily access any RESTful or RESTful-like API. If you are looking for the SendGrid API client library, please see this repo. Announcements

Twilio SendGrid 119 Nov 25, 2022
Laravel Package for 1APP. Learn how to integrate our APIs to build a web or mobile integration to send and accept payments for your application and businesses.

1APP Laravel Library Learn how to integrate our APIs to build a web or mobile integration to accept payments, make payment of Bills and as well custom

O'Bounce Technologies 4 Jul 25, 2022
Lightweight PHP library for WhatsApp API to send the whatsapp messages in PHP provided by ultramsg.com

Ultramsg.com WhatsApp API PHP SDK Lightweight PHP library for WhatsApp API to send the whatsappp messages in PHP provided by Ultramsg.com Installation

Ultramsg 117 Dec 26, 2022
A PHP Stream wrapper for Amazon S3

S3StreamWrapper A simple stream wrapper for Amazon S3. Example <?php use S3StreamWrapper\S3StreamWrapper; S3StreamWrapper::register(); $options = a

Gijs Kunze 21 Nov 23, 2021
A PHP wrapper for Spotify's Web API.

Spotify Web API PHP This is a PHP wrapper for Spotify's Web API. It includes the following: Helper methods for all API endpoints: Information about ar

Jonathan Wilsson 796 Jan 8, 2023
Simple Curl based wrapper for Binance API for PHP scripts

Simple Curl based wrapper for Binance API for PHP scripts Feaures API support for SPOT data/trading FAPI/DAPI support for futures data/trading Curl-on

Mr Crypster 22 May 1, 2022
Google Drive Api Wrapper by PHP

GoogleDrive Api Wrapper usage at first you need to create oauth client on google cloud platform. so go to the your google console dashboard and create

Arash Abedi 2 Mar 24, 2022
Twitch Helix API PHP Wrapper for Laravel

Laravel Twitch PHP Twitch Helix API Wrapper for Laravel 5+ ⚠️ Changes on May 01, 2020 Since May 01, 2020, Twitch requires all requests to contain a va

Roman Zipp 87 Dec 7, 2022
An asynchronous ClamAV wrapper written in PHP with amphp/socket

amphp-clamav An asynchronous ClamAV wrapper written with amphp/socket Installing composer require pato05/amphp-clamav Examples Ping and scan of a fil

Pato05 4 Feb 28, 2022
Super-simple, minimum abstraction MailChimp API v3 wrapper, in PHP

MailChimp API Super-simple, minimum abstraction MailChimp API v3 wrapper, in PHP. I hate complex wrappers. This lets you get from the MailChimp API do

Drew McLellan 2k Dec 22, 2022