swapi_example/lib/swapi_example.ex

38 lines
853 B
Elixir
Raw Permalink Normal View History

2020-12-21 23:24:07 -05:00
defmodule SwapiExample do
@moduledoc """
Lists all of the starships and their respective pilots from the Star Wars
API.
"""
alias SwapiExample.Client
@doc """
The main entrypoint of the program.
"""
def run do
IO.puts("Starship Model\t| Starship Name\t| Pilots")
{:ok, resp} = Client.starships()
print_starships(resp)
end
defp print_starships(resp) do
starships = resp.body["results"]
for starship <- starships do
pilots = for pilot_url <- starship["pilots"] do
{:ok, resp} = Client.get(pilot_url)
pilot = resp.body
pilot["name"]
end
IO.puts("#{starship["model"]}\t| #{starship["name"]}\t| " <> Enum.join(pilots, ", "))
end
if resp.body["next"] do
{:ok, next_resp} = Client.get(resp.body["next"])
print_starships(next_resp)
end
end
end