The api scrapps Poznań City communication webpage to provide trams' departure times and route planning.
There are two ways to run poznan-mpk-api. The first and the easiest one is to run the app using your ruby binary:
Start by installing necessary dependencies
$ bundle install
App requires data scrapped from the MPK Poznań's page. To run the scrapper type:
$ make scrap
and wait until scrapping process is done (it takes around 10-15s depending on your internet connection).
Finally you can run the app by typing:
$ rackup -p <port>
The second way requires docker installed on your machine. It will run an app inside a container, ensuring that everything will work correctly. To run the app inside a docker container type:
$ make start
Displays possible routes to take between two stops
Request body:
{
from: <String>
to: <String>
}
Both from and to must be a valid MPK Poznań (Tram) stop name.
Example response body:
[
[
{
"day": 3,
"hour": 12,
"minutes": "46N",
"is_today": true,
"stop_name": "Arciszewskiego",
"journey_time": 3,
"dest": "Rondo Nowaka-Jeziorańskiego",
"line": "7"
}
],
[
{
"day": 3,
"hour": 12,
"minutes": "57N",
"is_today": true,
"stop_name": "Arciszewskiego",
"journey_time": 3,
"dest": "Rondo Nowaka-Jeziorańskiego",
"line": "1"
}
],
[
{
"day": 3,
"hour": 12,
"minutes": "56",
"is_today": true,
"stop_name": "Arciszewskiego",
"journey_time": 3,
"dest": "Rondo Nowaka-Jeziorańskiego",
"line": "8"
}
]
]
Each array holds a route that can be taken to reach the destination.
day: [0-6] - Day number where 0 is Sunday
hour: [0-24] - Hour of departure
minutes: [0-60N?] - Minutes of departure
is_today: true|false - Is the departure today
stop_name: string - Stop name
journey_time: int - Journey time in minutes
dest: string - Destination stop name
line: int - Line number
Displays nearest arrival for given stop and line number.
Request body
{
stop: <String>,
line: <Int>
}
Stop must be a valid MPK Poznań (Tram) stop name.
Line must be a valid number of a MPK Poznań tram.
Example response body
[
{
"day": 2,
"minutes": "27oN",
"stop_name": "Szymanowskiego",
"final_destination": "Franowo",
"hour": 21,
"is_today": true,
"line": "16"
},
{
"day": 2,
"minutes": "23N",
"stop_name": "Szymanowskiego",
"final_destination": "Os. Sobieskiego",
"hour": 21,
"is_today": true,
"line": "16"
}
]
Each object represents the nearest arrival of the given tram.
day: [0-6] - Day number where 0 is Sunday
minutes: [0-60N?] - Minutes of departure
stop_name: string - Stop name
final_destination: string - line's final destination (direction of the tram)
hour: [0-24] - Hour of departure
is_today: true|false - Is the departure today
line: int - Line number
You can run tests simply by typing:
$ make test
To run tests you have to have your data already scrapped.