NAME

    Future::HTTP - provide the most appropriate HTTP client with a Future
    API

SYNOPSIS

        my $ua = Future::HTTP->new();
        my $res = $ua->http_get('http://www.nethype.de/')->then(sub {
            my( $body, $data ) = @_;
            ...
            return $body
        })->get();

    This module is a wrapper combining Future with the API provided by
    AnyEvent::HTTP. The backend used for the HTTP protocols depends on
    whether one of the event loops is loaded.

 Supported event loops

    Currently only HTTP::Tiny,Mojolicious and AnyEvent are supported.
    Support is planned for LWP::UserAgent and IO::Async but has not
    materialized yet.

METHODS

 Future::HTTP->new()

        my $ua = Future::HTTP->new();

    Creates a new instance of the HTTP client.

 $ua->http_get($url, %options)

        my $res = $ua->http_get('http://example.com/',
            headers => {
                'Accept' => 'text/json',
            },
        )->then(sub {
            my( $body, $headers ) = @_;
            ...
        })->get;

    Retrieves the URL and returns the body and headers, like the function
    in AnyEvent::HTTP.

 $ua->http_head($url, %options)

        my $res = $ua->http_head('http://example.com/',
            headers => {
                'Accept' => 'text/json',
            },
        )->then(sub {
            my( $body, $headers ) = @_;
            ...
        })->get;

    Retrieves the header of the URL and returns the headers, like the
    function in AnyEvent::HTTP.

 $ua->http_post($url, $body, %options)

        my $res = $ua->http_post('http://example.com/api',
            '{token:"my_json_token"}',
            headers => {
                'Accept' => 'text/json',
            },
        )->then(sub {
            my( $body, $headers ) = @_;
            ...
        })->get;

    Posts the content to the URL and returns the body and headers, like the
    function in AnyEvent::HTTP.

 $ua->http_request($method, $url, %options)

        my $res = $ua->http_request('PUT' => 'http://example.com/api',
            headers => {
                'Accept' => 'text/json',
            },
            body    => '{token:"my_json_token"}',
        )->then(sub {
            my( $body, $headers ) = @_;
            ...
        })->get;

    Posts the content to the URL and returns the body and headers, like the
    function in AnyEvent::HTTP.

SEE ALSO

    Future

    AnyEvent::HTTP for the details of the API

REPOSITORY

    The public repository of this module is
    http://github.com/Corion/future-http.

SUPPORT

    The public support forum of this module is https://perlmonks.org/.

BUG TRACKER

    Please report bugs in this module via the RT CPAN bug queue at
    https://rt.cpan.org/Public/Dist/Display.html?Name=Future-HTTP or via
    mail to future-http-Bugs@rt.cpan.org.

AUTHOR

    Max Maischein corion@cpan.org

COPYRIGHT (c)

    Copyright 2016 by Max Maischein corion@cpan.org.

LICENSE

    This module is released under the same terms as Perl itself.