PTV 0.2.7

PTV 0.2.7

Maintained by James Margenberg.



PTV 0.2.7

  • By
  • James Margenberg

PTV

Build Status

API adaptor for the PTV Timetable API v3 written in Swift for iOS.

Installation

This library can be installed using cocoapods.

Just add pod 'PTV', '~> 0.2' to your podfile and run pod install.

Adapter Classes

Modelled Adapter

import PTV

let ptv = PTV.ModelledAdapter(devid: "12345678", key: "12345678901234567890")

Provides functions for specific api calls with successfull calls calling a completion closure with predefined Codable structs and failing calls calling a failure closure with CallFailReason enum (e.g. .AccessDenied or .NoNetworkConnection) and message string

I've only implemented the subset of the PTV API calls that I needed to complete my project. If you need to use any other calls you should be able to follow how the existing calls are implemented to implement new functions for these calls. If you do so, please feel free to create a PR and I'll merge it in.

Implemented Functions

Routes
  • getRouteTypes(failure: Adapter.FailureHandler) { routeTypes: [RouteType]) in _ }
  • getRoutes(failure: Adapter.FailureHandler) { routes: [Route] in _ }
  • getRoutes(forRouteTypeID: Int, failure: Adapter.FailureHandler) { routes: [Route]) in _ }
  • getRoutes(forRouteTypeIDs: [Int], failure: Adapter.FailureHandler) { routes: [Route]) in _ }
Stops
  • getStops(nearLocation: CLLocationCoordinate2D, forRouteTypes: [Int], maxResults: Int, maxDistance: Int, failure: Adapter.FailureHandler) { stops: [StopGeosearch]) in _ }
  • getStops(onRoute: Int, forRouteType: Int, failure: Adapter.FailureHandler) { stops: [StopOnRoute]) in _ }
  • getStopDetails(forStop: Int, forRouteType: Int, failure: Adapter.FailureHandler) {stop: StopDetails in _ }
Departures and Stopping Patterns
  • getDepartures(forStop: Int, withRouteType: Int, failure: Adapter.FailureHandler) { departures: [Departure] in _ }
  • getStoppingPattern(forRun: Int, withRouteType: Int, failure: Adapter.FailureHandler) {stoppingPattern: StoppingPattern) in _ }

Note that Adapter.FailureHandler is a typealias for the function type (_ callFailReason: CallFailReason, _ message: String?) -> ()

Caching Adapter

import PTV

let ptv = PTV.CachingAdapter(devid: "1234567", key: "12345678901234567890")

Subclas of PTV.ModelledAdapter where any 'static' data that is returned is cached for easy retrieval later.

For example an already encountered route can be retrieved with getRouteFromCache(forRouteId: 9); without having to make an actual api call.

This is especially useful when using getDeparture(forStop, withRouteType, failure, completion) as any directions, runs, routes or stops referenced in the returned departures are cached for cheap retrieval later.

Plain Adapter

import PTV

let ptv = PTV.Adapter(devid: "1234567", key: "12345678901234567890")

Allows you to directly call the PTV API based on the api name, search string and parameters as defined in the PTV API documentation.

You should only need to use this if you need an api call not covered by ModelledAdapter or CachingAdapter.

Handles the (kind of unusual) request signing required to authenticate to the PTV API.

If successful, calls a completion closure with the response deocded to a Codable type, otherwise calls a failure closure with a CallFailReason e.g. .AccessDenied or .NoNetworkConnection.