Project

ruby_ptv

0.0
No commit activity in last 3 years
No release in over 3 years
A wrapper for the Public Transport Victoria API written in Ruby. The official documentation is available here: https://timetableapi.ptv.vic.gov.au/swagger/ui/index.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.14
~> 2.2
~> 1.11
~> 10.0
~> 3.0
~> 3.0
~> 3.1

Runtime

~> 0.13.7
 Project Readme

RubyPtv

A ruby wrapper for the Public Transport Victoria API V3.

Installation

Add this line to your application's Gemfile:

gem 'ruby_ptv'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ruby_ptv

Getting started

You must have a valid PTV developer API key. If you don't have one, you can find out how to register for one here.

Usage

Setup:

client = RubyPtv::Client.new(dev_id: "ID", secret_key: "SECRET")

Optional global configuration:

client = RubyPtv.configure(
  dev_id: "ID",
  secret_key: "SECRET"
)

You can get the global configuration with:

RubyPtv.configuration # => { dev_id: "YOUR_ID", secret_key "YOUR_SECRET }

In case you need to reset the configuration:

RubyPtv.reset_configuration

A few examples

Departures

You can search departures for all routes or for a single route. You can add any optional paramaters, as a hash, that are specified in the PTV api documentation (NOTE: the parameter keys MUST match the exact names specified by PTV).

client.departures(0, 1023, direction_id: 1)
client.departures_for_route(0, 1127, 14)

Searching departures will return a number of nested hashes due to the number of optional params available. You can loop through the results easily:

response = client.departures(0, 1023)

response["departures"].each do |departure|
  departure["stop_id"]          # => stop id
  departure["platform_number"]  # => platform number
end

Routes

You can search all routes or search for a route with a specified route id. There are no optional paramters available for the routes methods.

client.routes
client.route(2)

Searching routes will return a single array of hashes:

routes = client.routes

routes.each do |route|
  route["route_type"]   # => route type
  route["route_name"]   # => route name
end

Search

The search method allows you to query any stops, routes and myki ticket outlets with a specified search term. Just like departures, you can add any optional paramters that are specified by the PTV documentation.

client.search("Glen Waverley", route_types: 0)

Further information

The source code is fully commented with any required parameters and basic information you may need to use this wrapper. If you are unsure of any specifics of the API, such as any optional parameters available, check the official PTV documentation.

Testing

To run the test suite:

bundle exec rake test

Contributing

Bug reports and pull requests are welcome. Just create a new branch for your feature, add the appropriate tests and open a pull request.

License

The gem is available as open source under the terms of the MIT License.