an angular wrapper for SWAPI
JavaScript
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dist
src fixes bug with id endpoint Mar 25, 2015
.gitignore adds gitignore Feb 21, 2015
LICENSE Initial commit Feb 21, 2015
README.md
bower.json fixes bug with id endpoint Mar 25, 2015
gulpfile.js removes individual endpoint services Feb 22, 2015
package.json

README.md

ne-swapi

an angular module for SWAPI

Get the Package

$ bower install ne-swapi --save or npm install ne-swapi --save

First Inject the Module as an App Dependency

$ angular.module('myApp', ['ne.swapi'])

Then Inject the swapi Service Into Your Components

controller usage:

angular.module('myApp')
.controller('starshipsController', function($scope, swapi) {
  swapi.starships.all()
  .then(function(starships) {
    $scope.starships = starships;
  });
});

route resolve usage:

angular.module('myApp')
.config(function($routeProvider) {
  $routeProvider
   .when('/starships', {
      templateUrl: 'starships.html',
      controller: 'starshipsController',
      resolve: {
        starships: function(swapi) {
          return swapi.starships.all();
        }
      }
    }
  });
});

Use It

ne-swapi provides one general purpose helper method:

  • swapi.get(url) gets the resource(s) at the given url

and the following 5 helper methods for each of the SWAPI endpoints (films, people, planets, species, starships, vehicles):

  • .all() returns a promise that resolves to all resources (not paginated)
    • sample: swapi.films.all()
  • .id(id) returns a promise that resolves to a specific resource (defaults to 1)
    • sample: swapi.people.id(5)
  • .get() returns a promise that resolves to the first page of resources
    • sample: swapi.planets.get()
  • .page(page) returns a promise that resolves to the nth page of resources (defaults to 1)
    • sample: swapi.species.page(3)
  • .schema() returns a promise that resolves to the resource schema
    • sample: swapi.starships.schema()

More Samples

swapi.get(url)

A wrapper for $http.get.

swapi.get('http://swapi.co/api/people/1/')
.then(function(person) {
  $scope.person = person; // {"name": "Luke Skywalker", "height": "172", ...}
});

swapi.vehicles.all()

swapi.vehicles.all()
.then(function(allVehicles) {
  $scope.vehicles = allVehicles; // {"count": 39, "results": [{"name": "Sand Crawler", ...} ...] ...}
});

swapi.films.id()

swapi.films.id(3)
.then(function(film) {
  $scope.film = film; // {"title": "Return of the Jedi", "episode_id": 6, ...}
});

swapi.people.get()

swapi.people.get()
.then(function(people) {
  $scope.people = people; // {"count": 82, "next": "http://swapi.co/api/people/?page=2", ...}
});

swapi.people.page()

swapi.people.page(3)
.then(function(people) {
  $scope.people = people; // {"count": 82, "next": "http://swapi.co/api/people/?page=4", ...}
});

swapi.species.schema()

swapi.species.schema()
.then(function(speciesSchema) {
  $scope.schema = speciesSchema; // {"required": ["name", "height", "mass", ...] ...}
});

chaining

since all methods return promises, you can chain calls:

swapi.films.id(2)
.then(function(film) {
  return swapi.get(film.characters[0]);
})
.then(function(person) {
  return swapi.get(person.vehicles[1]);
})
.then(function(vehicle) {
  $scope.vehicle = vehicle;
})
.catch(function(error) {
  //any error in the chain will fall through to here and skip subsequent .then calls
})