Skip to content

Instantly share code, notes, and snippets.

@ninten320
Last active June 10, 2018 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ninten320/718a2465f52234fe3c93675567ef603d to your computer and use it in GitHub Desktop.
Save ninten320/718a2465f52234fe3c93675567ef603d to your computer and use it in GitHub Desktop.
TokyoChallengeAPI
protocol TokyoChallengeAPIRequest: Request {
var params: [String: Any] { get set }
}
extension TokyoChallengeAPIRequest {
var baseURL: URL {
return URL(string: "https://api-tokyochallenge.odpt.org/api/v4/")!
}
var parameters: Any? {
var params = self.params
// ACL_CONSUMERKEYを取得したアクセストークンで置き換える
params["acl:consumerKey"] = ACL_CONSUMERKEY
return params
}
var method: HTTPMethod {
return .get
}
func response(from object: Any, urlResponse: HTTPURLResponse) throws -> JSON {
return JSON(object)
}
}
enum TokyoChallengeAPI {
/// 鉄道乗降車数情報
struct PassengerSurvey: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:PassengerSurvey"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
init(stationID: String) {
params["odpt:station"] = stationID
}
}
/// 鉄道路線情報
struct Railway: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:Railway"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
init(title: String) {
params["dc:title"] = title
}
init(lineCode: String) {
params["odpt:lineCode"] = lineCode
}
}
/// 鉄道運賃
struct RailwayFare: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:RailwayFare"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(fromStationID: String, toStationID: String) {
params["odpt:fromStation"] = fromStationID
params["odpt:toStation"] = toStationID
}
}
/// 駅情報
struct Station: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:Station"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
init(title: String) {
params["dc:title"] = title
}
init(stationCode: String) {
params["odpt:stationCode"] = stationCode
}
}
/// 駅時刻表
struct StationTimetable: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:StationTimetable"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
init(stationID: String) {
params["odpt:station"] = stationID
}
}
/// 列車情報
struct Train: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:Train"
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
}
/// 列車運行情報
struct TrainInformation: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:TrainInformation"
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
}
/// 列車時刻表
struct TrainTimetable: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:TrainTimetable"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(railwayID: String) {
params["odpt:railway"] = railwayID
}
init(trainID: String) {
params["odpt:train"] = trainID
}
}
/// バスロケーション情報
struct Bus: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:Bus"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(routePatternID: String) {
params["odpt:busroutePattern"] = routePatternID
}
}
/// バス時刻表
struct BusTimetable: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:BusTimetable"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(routePatternID: String) {
params["odpt:busroutePattern"] = routePatternID
}
init(title: String) {
params["dc:title"] = title
}
}
/// バス路線情報
struct BusroutePattern: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:BusroutePattern"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(routeID: String) {
params["odpt:busroute"] = routeID
}
init(title: String) {
params["dc:title"] = title
}
}
/// バス運賃情報
struct BusroutePatternFare: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:BusroutePatternFare"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(routePatternID: String) {
params["odpt:busroutePattern"] = routePatternID
}
init(fromPoleID: String, toPoleID: String) {
params["odpt:fromBusstopPole"] = fromPoleID
params["odpt:toBusstopPole"] = toPoleID
}
}
/// バス停情報
struct BusstopPole: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:BusstopPole"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(routePatternID: String) {
params["odpt:busroutePattern"] = routePatternID
}
}
/// バス停時刻表情報
struct BusstopPoleTimetable: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:BusstopPoleTimetable"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(routeID: String) {
params["odpt:busroute"] = routeID
}
init(poleID: String) {
params["odpt:busstopPole"] = poleID
}
}
/// フライト到着情報
struct FlightInformationArrival: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:FlightInformationArrival"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(airportID: String) {
params["odpt:destinationAirport"] = airportID
}
}
/// フライト出発情報
struct FlightInformationDeparture: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:FlightInformationDeparture"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(airportID: String) {
params["odpt:departureAirport"] = airportID
}
}
/// 空港時刻表
struct FlightSchedule: TokyoChallengeAPIRequest {
typealias Response = JSON
var params: [String : Any] = [:]
var path: String {
return "odpt:FlightSchedule"
}
init(sameAs: String) {
params["owl:sameAs"] = sameAs
}
init(operatorID: String) {
params["odpt:operator"] = operatorID
}
init(airportID: String) {
params["odpt:airport"] = airportID
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment