2017 © Pedro Peláez
 

library httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

image

nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  • Friday, July 27, 2018
  • by nategood
  • Repository
  • 93 Watchers
  • 1513 Stars
  • 2,637,643 Installations
  • PHP
  • 249 Dependents
  • 3 Suggesters
  • 296 Forks
  • 77 Open issues
  • 27 Versions
  • 7 % Grown

The README.md

Httpful

Httpful is a simple Http Client library for PHP 8.0+. There is an emphasis of readability, simplicity, and flexibility – basically provide the features and flexibility to get the job done and make those features really easy to use., (*1)

Features, (*2)

  • Readable HTTP Method Support (GET, PUT, POST, DELETE, HEAD, PATCH and OPTIONS)
  • Custom Headers
  • Automatic "Smart" Parsing
  • Automatic Payload Serialization
  • Basic Auth
  • Client Side Certificate Auth
  • Request "Templates"

Sneak Peak

Here's something to whet your appetite. Search the twitter API for tweets containing "#PHP". Include a trivial header for the heck of it. Notice that the library automatically interprets the response as JSON (can override this if desired) and parses it as an array of objects., (*3)


// Make a request to the GitHub API with a custom // header of "X-Trvial-Header: Just as a demo". $url = "https://api.github.com/users/nategood"; $response = \Httpful\Request::get($url) ->expectsJson() ->withXTrivialHeader('Just as a demo') ->send(); echo "{$response->body->name} joined GitHub on " . date('M jS', strtotime($response->body->created_at)) ."\n";

Installation

Composer

Httpful is PSR-0 compliant and can be installed using composer. Simply add nategood/httpful to your composer.json file. Composer is the sane alternative to PEAR. It is excellent for managing dependencies in larger projects., (*4)

{
    "require": {
        "nategood/httpful": "*"
    }
}

Install from Source

Because Httpful is PSR-0 compliant, you can also just clone the Httpful repository and use a PSR-0 compatible autoloader to load the library, like Symfony's. Alternatively you can use the PSR-0 compliant autoloader included with the Httpful (simply require("bootstrap.php"))., (*5)

Build your Phar

If you want the build your own Phar Archive you can use the build script included. Make sure that your php.ini has the Off or 0 value for the phar.readonly setting. Also you need to create an empty downloads directory in the project root., (*6)

Contributing

Httpful highly encourages sending in pull requests. When submitting a pull request please:, (*7)

  • All pull requests should target the dev branch (not master)
  • Make sure your code follows the coding conventions
  • Please use soft tabs (four spaces) instead of hard tabs
  • Make sure you add appropriate test coverage for your changes
  • Run all unit tests in the test directory via phpunit ./tests
  • Include commenting where appropriate and add a descriptive pull request message

Changelog

1.0.0

  • SECURITY Make certificate validation the default. This is a potentially breaking change and as a result, bumping major version number in line with semver. Validation can still be skipped but must be explicitly skipped via withoutStrictSSL.
  • REFACTOR PR #305 Remove deprecated functionality pre PHP 8.1
  • REFACTOR Partially from PR #282 Add CI support for running tests now that Travis is gone.

0.3.2

  • REFACTOR PR #276 Add properly subclassed, more descriptive Exceptions for JSON parse errors

0.3.1

  • FIX PR #286 Fixed header case sensitivity

0.3.0

  • REFACTOR Dropped support for dead versions of PHP. Updated the PHPUnit tests.

0.2.20

  • MINOR Move Response building logic into separate function PR #193

0.2.19

  • FEATURE Before send hook PR #164
  • MINOR More descriptive connection exceptions PR #166

0.2.18

0.2.17

  • FEATURE PR #144 Adds additional parameter to the Response class to specify additional meta data about the request/response (e.g. number of redirect).

0.2.16

  • FEATURE Added support for whenError to define a custom callback to be fired upon error. Useful for logging or overriding the default error_log behavior.

0.2.15

  • FEATURE I #131 Support for SOCKS proxy

0.2.14

  • FEATURE I #138 Added alternative option for XML request construction. In the next major release this will likely supplant the older version.

0.2.13

  • REFACTOR I #121 Throw more descriptive exception on curl errors
  • REFACTOR I #122 Better proxy scrubbing in Request
  • REFACTOR I #119 Better document the mimeType param on Request::body
  • Misc code and test cleanup

0.2.12

  • REFACTOR I #123 Support new curl file upload method
  • FEATURE I #118 5.4 HTTP Test Server
  • FIX I #109 Typo
  • FIX I #103 Handle also CURLOPT_SSL_VERIFYHOST for strictSsl mode

0.2.11

  • FIX I #99 Prevent hanging on HEAD requests

0.2.10

  • FIX I #93 Fixes edge case where content-length would be set incorrectly

0.2.9

  • FEATURE I #89 multipart/form-data support (a.k.a. file uploads)! Thanks @dtelaroli!

0.2.8

  • FIX Notice fix for Pull Request 86

0.2.7

  • FIX I #86 Remove Connection Established header when using a proxy

0.2.6

  • FIX I #85 Empty Content Length issue resolved

0.2.5

  • FEATURE I #80 I #81 Proxy support added with useProxy method.

0.2.4

  • FEATURE I #77 Convenience method for setting a timeout (seconds) $req->timeoutIn(10);
  • FIX I #75 I #78 Bug with checking if digest auth is being used.

0.2.3

  • FIX Overriding default Mime Handlers
  • FIX PR #73 Parsing http status codes

0.2.2

  • FEATURE Add support for parsing JSON responses as associative arrays instead of objects
  • FEATURE Better support for setting constructor arguments on Mime Handlers

0.2.1

  • FEATURE PR #72 Allow support for custom Accept header

0.2.0

  • REFACTOR PR #49 Broke headers out into their own class
  • REFACTOR PR #54 Added more specific Exceptions
  • FIX PR #58 Fixes throwing an error on an empty xml response
  • FEATURE PR #57 Adds support for digest authentication

0.1.6

  • Ability to set the number of max redirects via overloading followRedirects(int max_redirects)
  • Standards Compliant fix to Accepts header
  • Bug fix for bootstrap process when installed via Composer

0.1.5

  • Use DIRECTORY_SEPARATOR constant PR #33
  • PR #35
  • Added the raw_headers property reference to response.
  • Compose request header and added raw_header to Request object.
  • Fixed response has errors and added more comments for clarity.
  • Fixed header parsing to allow the minimum (status line only) and also cater for the actual CRLF ended headers as per RFC2616.
  • Added the perfect test Accept: header for all Acceptable scenarios see @b78e9e82cd9614fbe137c01bde9439c4e16ca323 for details.
  • Added default User-Agent header
  • User-Agent: Httpful/0.1.5 + curl version + server software + PHP version
  • To bypass this "default" operation simply add a User-Agent to the request headers even a blank User-Agent is sufficient and more than simple enough to produce me thinks.
  • Completed test units for additions.
  • Added phpunit coverage reporting and helped phpunit auto locate the tests a bit easier.

0.1.4

  • Add support for CSV Handling PR #32

0.1.3

  • Handle empty responses in JsonParser and XmlParser

0.1.2

  • Added support for setting XMLHandler configuration options
  • Added examples for overriding XmlHandler and registering a custom parser
  • Removed the httpful.php download (deprecated in favor of httpful.phar)

0.1.1

  • Bug fix serialization default case and phpunit tests

0.1.0

  • Added Support for Registering Mime Handlers
  • Created AbstractMimeHandler type that all Mime Handlers must extend
  • Pulled out the parsing/serializing logic from the Request/Response classes into their own MimeHandler classes
  • Added ability to register new mime handlers for mime types

The Versions

27/07 2018

dev-master

9999999-dev http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

21/10 2017

dev-php7

dev-php7 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

26/10 2015

dev-dev

dev-dev http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

26/10 2015

0.2.20

0.2.20.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

08/03 2015

0.2.19

0.2.19.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

24/08 2014

0.2.17

0.2.17.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

19/07 2014

0.2.16

0.2.16.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

21/05 2014

0.2.13

0.2.13.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

21/05 2014

dev-r0.3.0

dev-r0.3.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

18/02 2014

dev-test-server

dev-test-server http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

20/10 2013

0.2.11

0.2.11.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

13/09 2013

0.2.10

0.2.10.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

12/09 2013

0.2.9

0.2.9.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

01/08 2013

0.2.8

0.2.8.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

30/07 2013

0.2.7

0.2.7.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

05/07 2013

0.2.6

0.2.6.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

The Development Requires

api curl rest http restful requests

28/06 2013

0.2.5

0.2.5.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

05/03 2013

0.2.3

0.2.3.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

27/02 2013

0.2.2

0.2.2.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

19/02 2013

0.2.1

0.2.1.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

25/01 2013

0.2.0

0.2.0.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

15/09 2012

0.1.7

0.1.7.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

30/08 2012

0.1.6

0.1.6.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

20/06 2012

0.1.5

0.1.5.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

13/06 2012

0.1.4

0.1.4.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

09/05 2012

0.1.2

0.1.2.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

api curl rest http restful requests

14/04 2012

0.1.0

0.1.0.0 http://github.com/nategood/httpful

A Readable, Chainable, REST friendly, PHP HTTP Client

  Sources   Download

MIT

The Requires

  • php >=5.3
  • ext-curl *

 

curl rest http restful