# Bufu [![Build Status](]( [![](](

Giant Bomb API client for Elixir
([Shadow Teddie-approved](

See [Giant Bomb API information]( and
[documentation]( for more details.

## Usage

iex> Bufu.Game.get 8825
{:ok, %Bufu.Game{name: "Final Fantasy IX", ...}}

iex> Bufu.Game.get! 8825
%Bufu.Game{name: "Final Fantasy IX", ...}

iex> Bufu.Location.list! filter: "name:ivalice"
[%Bufu.Location{name: "Ivalice", ...}, ...]

iex> Bufu.Game.get!(8825) |> Map.get(:developers) |> hd |> Bufu.Company.load! |> Map.get(:name)

See the [documentation]( for more details.

## Potential improvements

1. The search endpoint is not currently implemented. It would take some work to
get it to correctly serialize each resource it returns. You can still search for
a single resource by providing the `filter` option (see examples).
2. The `filter` and `sort` options could have nicer interfaces. Currently you
have to provide raw strings that are used in the API request.
2. Per-client or global response caching could be implemented using ETS or a
pluggable data store. Local caching is recommended by the API developers, due to
the rate limit restrictions.