hn_ex v0.1.0 HN View Source
A simple Hacker News API client in Elixir.
See https://github.com/HackerNews/API for a thorough description of the API and the fields returned from the various calls.
Link to this section Summary
Functions
Fetch a list of ask story ids.
Fetch a list of best story ids.
Perform a GET request.
Perform a GET request.
Fetch an item by id. Returns an HN.Item.
Fetch a list of job story ids.
Fetch the most recent item id.
Fetch a list of new story ids.
Perform a request.
Perform request and raise in case of error.
Fetch a list of show story ids.
Fetch a list of top story ids.
Fetch recent item and profile changes.
Fetch a user by name. Returns an HN.User.
Link to this section Types
option()
View Sourceoption() :: {:method, Tesla.Env.method()} | {:url, Tesla.Env.url()} | {:query, Tesla.Env.query()} | {:headers, Tesla.Env.headers()} | {:body, Tesla.Env.body()} | {:opts, Tesla.Env.opts()}
Link to this section Functions
Fetch a list of ask story ids.
Example
iex> HN.ask_stories
{:ok, [22057737,22055976,22057989,22057576,22054163,22055867,22057173,22054600,22041741]}
Fetch a list of best story ids.
Example
iex> HN.best_stories
{:ok, [22057737,22055976,22057989,22057576,22054163,22055867,22057173,22054600,22041741]}
get(client, url, opts)
View Sourceget(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.result()
Perform a GET request.
See request/1
or request/2
for options definition.
get("/users")
get("/users", query: [scope: "admin"])
get(client, "/users")
get(client, "/users", query: [scope: "admin"])
get!(client, url, opts)
View Sourceget!(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.t() | no_return()
Perform a GET request.
See request!/1
or request!/2
for options definition.
get!("/users")
get!("/users", query: [scope: "admin"])
get!(client, "/users")
get!(client, "/users", query: [scope: "admin"])
Fetch an item by id. Returns an HN.Item.
Example
iex> HN.item(8863) # argument can be an integer or a string
{:ok, %HN.Item{
by: "dhouston",
dead: nil,
deleted: nil,
descendants: 71,
id: 8863,
kids: [9224, 8917, 8952, 8884, 8887, 8869, 8958, 8940, 8908, 9005, 8873,
9671, 9067, 9055, 8865, 8881, 8872, 8955, 10403, 8903, 8928, 9125, 8998,
8901, 8902, 8907, 8894, 8870, 8878, 8980, 8934, 8943, 8876],
parent: nil,
parts: nil,
poll: nil,
score: 104,
text: nil,
time: 1175714200,
title: "My YC app: Dropbox - Throw away your USB drive",
type: "story",
url: "http://www.getdropbox.com/u/2/screencast.html"
}}
Fetch a list of job story ids.
Example
iex> HN.job_stories
{:ok, [22057737,22055976,22057989,22057576,22054163,22055867,22057173,22054600,22041741]}
Fetch the most recent item id.
Example
iex> HN.max_item
{:ok, "22059135"}
Fetch a list of new story ids.
Example
iex> HN.new_stories
{:ok, [22057737,22055976,22057989,22057576,22054163,22055867,22057173,22054600,22041741]}
request(client \\ %Tesla.Client{}, options)
View Sourcerequest(Tesla.Env.client(), [option()]) :: Tesla.Env.result()
Perform a request.
Options
:method
- the request method, one of [:head, :get, :delete, :trace, :options, :post, :put, :patch]:url
- either full url e.g. "http://example.com/some/path" or just "/some/path" if usingTesla.Middleware.BaseUrl
:query
- a keyword list of query params, e.g.[page: 1, per_page: 100]
:headers
- a keyworld list of headers, e.g.[{"content-type", "text/plain"}]
:body
- depends on used middleware:- by default it can be a binary
- if using e.g. JSON encoding middleware it can be a nested map
- if adapter supports it it can be a Stream with any of the above
:opts
- custom, per-request middleware or adapter options
Examples
ExampleApi.request(method: :get, url: "/users/path")
# use shortcut methods
ExampleApi.get("/users/1")
ExampleApi.post(client, "/users", %{name: "Jon"})
request!(client \\ %Tesla.Client{}, options)
View Sourcerequest!(Tesla.Env.client(), [option()]) :: Tesla.Env.t() | no_return()
Perform request and raise in case of error.
This is similar to request/2
behaviour from Tesla 0.x
See request/2
for list of available options.
Fetch a list of show story ids.
Example
iex> HN.show_stories
{:ok, [22057737,22055976,22057989,22057576,22054163,22055867,22057173,22054600,22041741]}
Fetch a list of top story ids.
Example
iex> HN.top_stories
{:ok, [22057737,22055976,22057989,22057576,22054163,22055867,22057173,22054600,22041741]}
Fetch recent item and profile changes.
Example
iex> HN.updates
{:ok,
%HN.Updates{
items: [22058286, 22054517, 22055774, 22059007, 22058838, 22056363, 22056764],
profiles: ["nathan_compton", "chasd00", "yarapavan", "cagenut"]
}}
Fetch a user by name. Returns an HN.User.
Example
iex> HN.user("jl")
{:ok,
%HN.User{
about: "This is a test",
created: 1173923446,
delay: nil,
id: "jl",
karma: 4226,
submitted: [19464269, 18498213, 16659709, 16659632, 16659556, 14237416,
5252, 4752, 4586, 4289]
}}