Initial commit.

This commit is contained in:
Lyle Mantooth 2020-12-21 23:24:07 -05:00
commit 005477d827
14 changed files with 274 additions and 0 deletions

37
lib/swapi_example.ex Normal file
View file

@ -0,0 +1,37 @@
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

View file

@ -0,0 +1,19 @@
defmodule SwapiExample.Client do
use Tesla
plug Tesla.Middleware.BaseUrl, "https://swapi.dev/api/"
plug Tesla.Middleware.FollowRedirects
plug Tesla.Middleware.JSON
def starships() do
get("/starships/")
end
def people() do
get("/people/")
end
def person(id) do
get("/people/#{id}/")
end
end