Please don't submit pull requests or patches here
Go to file
Christine Dodrill 895f8011a7 Add IRC command as a catchall 2015-11-07 08:22:25 -08:00
client Add more ponies 2015-09-17 06:52:23 -07:00
public/static update nim docs 2015-08-17 15:01:47 -07:00
.dockerignore Initial commit 2015-08-09 12:51:43 -07:00
.gitattributes update gitattributes 2015-08-13 21:10:34 -07:00
.gitignore fix gitignore and permissions 2015-08-18 16:40:45 -07:00
Dockerfile static -> public, use bash 2015-08-13 21:09:02 -07:00
LICENSE Initial commit 2015-08-09 12:51:43 -07:00
Makefile Serve /all 2015-08-13 19:47:00 -07:00
README.md add contributing guidelines 2015-09-08 23:34:14 -07:00
episode.nim split off episode manipulation code into its own module 2015-08-15 10:59:53 -07:00
fim.list TIME ZONES 2015-11-07 08:05:12 -08:00
ponyapi.nim Add IRC command as a catchall 2015-11-07 08:22:25 -08:00
ponyapi.nimble implement remaining API calls 2015-08-13 20:51:03 -07:00
requirements.txt Initial commit 2015-08-09 12:51:43 -07:00
stats.nim Collect and report statistics about usage of the api server 2015-08-27 20:32:07 -07:00

README.md

PonyAPI

A simple API for episodes of My Little Pony: Friendship is Magic to be run inside a container.

API Usage

An episode will have the following data type:

{
      "air_date": 1286735400,
      "episode": 1,
      "is_movie": false,
      "name": "Friendship is Magic Part 1",
      "season": 1
}

This represents Season 1, Episode 1 of My Little Pony: Friendship Is Magic. The air_date column represents the date and time that the episode was originally shown on The Hub (now Discovery Family Network). If is_movie is set and the season number is 99, the episode record should be treated as a movie.

Usage Limits

None. Don't make the server it's running on crash and we'll all be good.

Clients

Routes

The canonical route base for PonyAPI is http://ponyapi.apps.xeserv.us. Example usage:

$ curl http://ponyapi.apps.xeserv.us/season/1/episode/1
{
  "episode": {
    "air_date": 1286735400,
    "episode": 1,
    "is_movie": false,
    "name": "Friendship is Magic Part 1",
    "season": 1
  }
}

Bare Replies

As of 882b5b1, PonyAPI will accept an X-API-Options header that when set to bare will return the API replies without the episode or episodes header. Functionality is otherwise unchanged, however an error will still be shown if something goes wrong, and that will parse differently. This API will return 200 if and only if everything went to plan.

An example:

$ curl --header "X-API-Options: bare" http://ponyapi.apps.xeserv.us/last_aired
{
    "name": "Do Princesses Dream of Magic Sheep?",
    "air_date": 1436628600,
    "season": 5,
    "episode": 13,
    "is_movie": false
}

This will also be triggered if you set the query parameter options to bare.

/all

Returns all information about all episodes. This returns an array of Episode objects as defined above.

/newest

Returns the episode of My Little Pony: Friendship is Magic that will air next.

/last_aired

Returns the episode of My Little Pony: Friendship is Magic that most recently aired.

/season/<number>

Returns all information about episodes in the given season number or a 404 reply if no episodes could be found. To get all information about the movies shown, set the season as 99.

/season/<number>/episode/<number>

Returns all information about the episode with the given season and episode number. If the episode cannot be found, this will return a 404.

/random

Returns a random episode record from the list of episodes.

This must be given a query paramater q containing the text to search for. Not including this will return a 406 reply. This will search the list of episode records for any episodes whose names match the given search terms. This is case-insensitive. If no episodes can be found, this will return a 404 reply.

Contributing

Contributions will be judged by their technical merit. No politics on project forums.

All code is licensed under the MIT license.