PHP code example of gajosu / laravel-http-service

1. Go to this page and download the library: Download gajosu/laravel-http-service library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gajosu / laravel-http-service example snippets


use Gajosu\LaravelHttpClient\Facades\HttpService;

/** @var \Gajosu\LaravelHttpClient\Request\ApiRequestBuilder $builder */
$builder = HttpService::request()
    ->setMethod('POST')
    //set base url
    ->setBaseUri('http://example.com')
    //set path
    ->setPath('/test')
    // set headers
    ->setHeaders([
        'Authorization' => 'Basic {YOUR_TOKEN}'
    ])
    //set queries strings
    ->setQuery([
        'query1' => 'param'
    ])
    //set body
    ->setBody([
        'field1' => 'value'
    ]);
// send the request and get response
/** @var \Gajosu\LaravelHttpClient\Response\ApiResponse $response */
$response = $builder->send();
// json data decoded
$data = $response->json();

namespace App\Services\MyService;

use Gajosu\LaravelHttpClient\HttpService;
use Gajosu\LaravelHttpClient\Contracts\HttpRequestBuilder;

class MyService extends HttpService
{
    private ?string $access_token = null;

    public function setAccessToken(string $access_token): void
    {
        $this->access_token = $access_token;
    }

    public function getAccessToken(): ?string
    {
        return $this->access_token;
    }

    public function getBuilder(): HttpRequestBuilder
    {
        return parent::getBuilder()
            ->setBaseUri('http://myservice.com')
            ->setHeaders([
                "Authorization" => "Basic {$this->access_token}"
            ]);
    }
}

namespace App\Services\MyService\Facades\MyService;

use Gajosu\LaravelHttpClient\Facades\HttpService;

/**
 * @method static void setAccessToken(string $access_token)
 * @method static string getAccessToken()
 */
class MyService extends HttpService
{
    
    protected static function getFacadeAccessor()
    {
        return \App\Services\MyService\MyService::class;
    }
}

use App\Services\MyService\Facades\MyService;

MyService::setAccessToken('{YOUR_TOKEN}');
$response = MyService::request()
    ->setMethod('POST')
    ->setPath('/test')
    ->setQuery([
        'query1' => 'param'
    ])
    ->setBody([
        'field1' => 'value'
    ])
    ->send();
$data = $response->json();

use App\Services\MyService\Facades\MyService;

MyService::setAccessToken('{YOUR_TOKEN}');
$response = MyService::request()
    ->setMethod('GET')
    ->setPath('/test')
    ->setQuery([
        'query1' => 'param'
    ])
    //you can set the cache time in seconds
    ->cacheFor(60)
    // or 
    // ->cacheFor(now()->addMinutes(1))
    // you can also keep the cache forever
    // ->cacheForever()
    ->send();
$data = $response->json();

use App\Services\MyService\Facades\MyService;


MyService::fake()
$response = MyService::request()
    ->setMethod('GET')
    ->setPath('/test')
    ->setQuery([
        'query1' => 'param'
    ])
    ->fakeResponse(200, [])
    ->send();
$data = $response->json();

use App\Services\MyService\Facades\MyService;

MyService::fake();
MyService::shouldReceiveResponses([
    [
        new \GuzzleHttp\Psr7\Response(
            status : 200,
            body: '{"success" : true}'
        ),

        new \GuzzleHttp\Psr7\Response(
            status : 201,
            body: '{"created" : true}'
        )
    ]
]);

$response = MyService::request()
    ->setMethod('GET')
    ->setPath('/test')
    ->setQuery([
        'query1' => 'param'
    ])
    ->send();

//get first fake response
// [
//   "success" => true
// ]
$data = $response->json();

//get second fake response
// [
//   "created" => true
// ]
$data = $response->json();