# HTTPStream


HTTPStream is a tiny, tiny package that wraps HTTP requests into a `Stream` so
that you can manage data on the fly, without keeping everything in memory.

Downloading an image:

|> Stream.into(!("large_image.png"))

Streaming multiple images into a ZIP archive (using [zstream][zstream])

  Zstream.entry("a.png", HTTPStream.get(a_url))
  Zstream.entry("b.png", HTTPStream.get(b_url))
|> Stream.into(!(""))

## Table of Contents

* [Installation](#installation)
* [Development](#development)
* [Contributing](#contributing)
* [About](#about)

## Installation

First, you need to add `http_stream` to your list of dependencies on `mix.exs`:

def deps do
    {:http_stream, "~> 1.0.0"},

    # if using the Mint adapter:
    {:castore, "~> 0.1.7"},
    {:mint, "~> 1.1.0"}

    # if using the HTTPoison adapter:
    {:httpoison, "~> 1.7.0"}

HTTPStream comes with two adapters: [`Mint`][mint] and [`HTTPoison`][httpoison].
By default `Mint` is configured but you need to include it in your dependencies.

To use `HTTPoison`, set in your `config/config.exs`:

config :http_stream, adapter: HTTPStream.Adapter.HTTPoison

That's it! For more intricate API details, refer to the [documentation][docs].

## Development

If you want to setup the project for local development, you can just run the
following commands.

git clone
cd http_stream

PRs and issues welcome.

## Contributing

Feel free to contribute!

If you found a bug, open an issue. You can also open a PR for bugs or new
features. Your PRs will be reviewed and subjected to our styleguide and linters.

All contributions **must** follow the [Code of Conduct][coc]
and [Subvisual's guides][subvisual-guides].

## About

HTTPStream is maintained with ❤️  by [Subvisual][subvisual].