readme.md
# exhn
> Streaming Hacker News API client
[![Build Status](https://travis-ci.org/sotojuan/exhn.svg?branch=master)](https://travis-ci.org/sotojuan/exhn)
## Install
In your `mix.exs`:
```elixir
def application do
[applications: [:exhn]]
end
defp deps do
[
{:exhn, "~> 1.1.0"}
]
end
```
Then run `mix deps.get`.
## Usage
For information about the endpoints themselves please refer to the [Hacker News API docs](https://github.com/HackerNews/API).
### Static endpoints
Static endpoints are available under `ExHN`.
`ExHN.item(id)`
Gets the item with the specified `id`.
`ExHN.items(enum)`
Returns a `Stream` of items from a given `enum` of `id` numbers. This can be a `List` or a `Range`.
`ExHN.user(name)`
Gets the item with the specified `name`.
### Live endpoints
Live endpoints are available under `ExHN.Live`. These return an infinite `Stream` of data. The following endpoints are available:
* `ExHN.max_item`
* `ExHN.updates`
* `ExHN.new_stories`
* `ExHN.top_stories`
* `ExHN.best_stories`
* `ExHN.ask_stories`
* `ExHN.show_stories`
* `ExHN.job_stories `
`ExHN.Live.get_items(stream)`
A helper function that gets the actual data inside the above endpoints, since they return a list of `ids`:
```elixir
iex> ExHN.Live.updates |> ExHN.Live.get_items |> Enum.take(1)
iex> [%{"by" => "username", "text" => "I'm a comment!"}]
```
## License
MIT © [Juan Soto](https://juansoto.me)