Awesome
crystal-swapi
Star Wars API (SWAPI) for Crystal.
Documentation: https://swapi.co/documentation
Installation
Add this to your application's shard.yml
:
dependencies:
swapi:
github: sb89/crystal-swapi
Basic Usage
require "swapi"
luke = Swapi::Person.get 1
p luke.birth_year
tatooine = Swapi::Planet.get 1
p tatooine.climate
Get
get
can be called with an index (as seen above) or with no index, which will return all:
planets = Swapi::Planet.get
planets.results.each do |planet|
p planet.name
end
if planets.next?
planets = planets.get_next
planets.results.each do |planet|
p planet.name
end
end
Search
planets = Swapi::Planet.search "oine"
planets.results.each do |planet|
p planet.name
end
List
Both search
and get
(without an index) return a List
:
planets = Swapi::Planet.get
planets.count # Total number of planets
planets.results # Contains the current batch of planets
planets.next? # Is there another batch of planets?
planets = planets.get_next # Get list for next batch of planets
planets.previous? # Is there a previous batch of planets?
planets = planets.get_previous # Get list for previous batch of planets
Linked Resources
All resources are linked to some form of other resource. For example, a Person
has films
, species
, starships
and vehicles
. The API returns these as urls to another resource. We can call get_<resource>
e.g. get_films
to get an array of the actual objects:
planet = Swapi::Planet.get 1
p planet.films # This will print an array of urls
planet.get_films.each { |f| p f.title } # Use get_films to get the actual film objects and print their titles
Contributing
- Fork it ( https://github.com/sb89/crystal-swapi/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- sb89 Steven - creator, maintainer