Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

evaisse/SimpleHttpBundle

Open more actions menu

Repository files navigation

SimpleHttpBundle

While Still maintained, I recommand you to replace this bundle with the symfony/http-client with has better support and a handy plug-in support.

A symfony2/3/4/5 http client bundle built on the httpfoundation component (instead of guzzle), using cURL as engine.

Coverage Status

Quickstart

Get the simple API

$http = $this->container->get('http');
$http = $this->get('http');

// same as  

try {
    $http->GET('http://httpbin.org/ip'); // yeah, that's all.
} catch (\Symfony\Component\HttpKernel\Exception\HttpException $e) {
    // handle errors
}

try {
    $data = $http->POST('http://httpbin.org/post', $myArgs);
} catch (\Symfony\Component\HttpKernel\Exception\HttpException $e) {
    // handle errors
}

Easy routing with replacement syntax (similar to php frameworks like symfony2/laravel)

$data = $http->GET('http://httpbin.org/status/{code}', array(
    "code" => 200
));
// will call http://httpbin.org/status/200

$data = $http->GET('http://httpbin.org/status/{code}', array(
    "code" => 200,
    "foo" => "bar" 
));
// will call http://httpbin.org/status/200?foo=bar

Development features

The simple http bundle provide you a nice profiler toolbar addition

  • Request/Response body & headers details
  • Cookies handy panel
  • External debug links (to remote profiler using X-Debug-Link header)
  • Request timing displayed in the timeline panel

Replay feature

Add this to routing.yml file

_simple_http:
    resource: "@SimpleHttpBundle/Controller/"
    type:     annotation
    prefix:   /_profiler/simple-http

or

_simple_http:
    resource: '@SimpleHttpBundle/Resources/config/routing.yml'

You can now resend an http call directly from the profiler debug panel

Panels details

![Panels details] (https://raw.githubusercontent.com/evaisse/SimpleHttpBundle/master/Resources/doc/profiler-panels.png)

Toolbar block

![Toolbar block] (https://raw.githubusercontent.com/evaisse/SimpleHttpBundle/master/Resources/doc/profiler-toolbar.png)

Timeline panel

![Timeline panel] (https://raw.githubusercontent.com/evaisse/SimpleHttpBundle/master/Resources/doc/profiler-timeline.png)

Complete API

Complete api using transaction factory

$transac = $http->prepare('GET', 'http://httpbin.org/ip');

$transac->execute();

Parrallel execution

$a = $http->prepare('GET', 'http://httpbin.org/ip');
$b = $http->prepare('PUT', 'http://httpbin.org/put');
$c = $http->prepare('POST', 'http://httpbin.org/post');

$http->execute([
    $a, 
    $b,
    $c
]);

$a->hasError() || $a->getResult();
$b->hasError() || $b->getResult();
$c->hasError() || $c->getResult();

JSON services

print $http->prepare('POST', 'http://httpbin.org/ip', $_SERVER)
           ->json()
           ->execute()
           ->getResult()['ip'];

File upload

$http->prepare('PUT', 'http://httpbin.org/put')
     ->addFile('f1', './myfile.txt')
     ->addFile('f2', './myfile.txt')
     ->execute();


$http->prepare('POST', 'http://httpbin.org/post', [
        'infos' => 'foo',
        'bar'   => 'so so',
    ])
     ->addFile('f1', './myfile.txt')
     ->addFile('f2', './myfile.txt')
     ->execute();

Cookies persistance

$a = $http->prepare('GET',  'http://httpbin.org/ip');
$b = $http->prepare('PUT',  'http://httpbin.org/put');
$c = $http->prepare('POST', 'http://httpbin.org/post');


$cookies = $http->getDefaultCookieJar();
 // $cookies = $http->getCookieJar($session); if you want to directly store in user session

$http->execute([
    $a, 
    $b,
    $c
], $cookies);

dump($cookies);

Promise usage

$stmt = $http->prepare('PUT', 'http://httpbin.org/put')

$stmt->onSuccess(function ($data) {
    // handle data
})->onError(function (\Symfony\Component\HttpKernel\Exception\HttpException $e) {
    // handle errors
})->onFinish(function () {
    // like "finally"
});

$http->execute([
    $stmt
]);

About

A very SIMPLE symfony http client bundle built on top of the httpfoundation component (instead of guzzle), using cURL and cURL multi.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.