PTV
PTV Timetable API v3的API适配器,是用Swift编写iOS的。
安装
该库可以使用cocoapods安装。
只需在podfile中添加pod 'PTV', '~> 0.2'
并运行pod install
。
适配器类
模型适配器
import PTV
let ptv = PTV.ModelledAdapter(devid: "12345678", key: "12345678901234567890")
提供特定API调用的函数,成功调用时使用预先定义的Codable
结构体在completion
闭包中调用,失败调用时使用failure
闭包在CallFailReason
枚举(例如.AccessDenied
或 .NoNetworkConnection
)和message
字符串中调用
我只为完成我的项目需要的一部分PTV API调用实现了这个子集。如果您需要使用其他调用,您应该能够按照现有调用如何实现来为新调用实现新函数。如果您这样做,请随意创建一个PR,我将合并它。
已实现功能
路由
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 _ }
站点
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 _ }
出发和停车模式
getDepartures(forStop: Int, withRouteType: Int, failure: Adapter FailureHandler) { departures: [Departure] in _ }
getStoppingPattern(forRun: Int, withRouteType: Int, failure: Adapter FailureHandler) {stoppingPattern: StoppingPattern} in _
注意,Adapter.FailureHandler
是函数类型 (_ callFailReason: CallFailReason, _ message: String?) -> ()
的别称
缓存适配器
import PTV
let ptv = PTV.CachingAdapter(devid: "1234567", key: "12345678901234567890")
PTV.ModelledAdapter
的子类,其中任何返回的 'static' 数据都缓存以便于后续轻松检索。
例如,可以使用 getRouteFromCache(forRouteId: 9);
从缓存中检索已遇到的路线,而无需进行实际的 API 请求。
当使用getDeparture(forStop, withRouteType, failure, completion)
作为任何方向、出行、路线或站点时,这尤其有用,因为这些在返回的出发信息中引用的任何方向、出行、路线或站点都会被缓存起来以供稍后快速检索。
Plain 适配器
import PTV
let ptv = PTV.Adapter(devid: "1234567", key: "12345678901234567890")
允许您直接基于 API 名称、搜索字符串和参数调用 PTV API,这些参数在PTV API 文档中定义。
只有当您需要使用ModelledAdapter
或CachingAdapter
未涵盖的 API 调用时,才应使用此适配器。
处理需要的登录到 PTV API 所需要的一种(有点不常见)的请求数字签名。
如果成功,则调用对响应进行解码到Codable
类型的completion
闭包,否则调用带有CallFailReason
的failure
闭包,例如.AccessDenied
或.NoNetworkConnection
。