FourLucha
Giant Bomb API Client With Automatic Client-Side Caching
Installation
The package can be installed by adding four_lucha
to your list of dependencies in mix.exs
:
def deps do
[
#...
{:four_lucha, "~> 0.1.0"}
]
end
and then run mix deps.get
and mix deps.compile
Setup and Configuration
Set the GIANT_BOMB_API_KEY
environment variable
an API key is required.
Set the FOUR_LUCHA_CACHE_LIMIT
environment variable
to change the cache size.
Structure and Usage
Resources
Most resources are structured like so:
The API can be queried from FourLucha.Foo
with get/1
or get!/1
# example for single resource
FourLucha.Game.get(1)
# {:ok, FourLucha.Resource.Game, FourLucha.Resource.Response}
# {:error, FourLucha.Resource.Response}
# example for multiple resources
FourLucha.Game.get(%{ filter: [name: "Super Mario"]})
# {:ok, [FourLucha.Resource.Game ...], FourLucha.Resource.Response}
# get!/1 would return just FourLucha.Resource.Game or [FourLucha.Resource.Game ...]
When querying for multiple resources there are 4 fields to query with
[:filter, :sort, :limit, :offset]
FourLucha.Game.get(%{
filter: [name: "Kingdom Hearts"],
sort: [field: "original_release_date", direction: "asc"],
limit: 10, # defaults to 100
offset: 5
})
Date fields can be filtered by date or date range:
# Date.to_iso8601 can be used to format
FourLucha.Game.get(%{filter: [
name: "Super Metroid",
original_release_date: "2000-03-19"
]})
FourLucha.Game.get(%{filter: [
name: "Super Metroid",
original_release_date: %{start: "1900-01-01", end: "1931-12-31"}
]})
Search
Search works similarly to other endpoint but returns a map with a :resource_type
key to specify what resource is returned.
When searching there are 4 fields to query with
[:query, :resources, :limit, :page]
# Date.to_iso8601 can be used to format
FourLucha.Search.get(%{
query: "Zelda Like a Fox"
resources: ["game"],
limit: 5, # defaults to 10
page: 2 # works like offset but relative to limit
# in this example it will skip games 0-4
# and return games 5-9 from the query
})
Additional Information
API Key and Documentation at: