Added leaderboard start tracking and auto course request

This commit is contained in:
Raimund Wege
2017-09-08 15:06:15 +02:00
parent a82bd65fc8
commit 11eb1f6857
2 changed files with 88 additions and 10 deletions
@@ -109,14 +109,33 @@ class TrainingController: NSObject {
requestManager.postCompetitorCreateAndAdd(regatta: regatta, boatClassName: boatClassName, sailID: sailID, nationality: nationality, success: { competitorCreateAndAddData in
collector.competitorCreateAndAddData = competitorCreateAndAddData
self.competitorCreateAndAddSuccess(collector: collector, success: success)
self.competitorCreateAndAddSuccess(collector: collector, success: success, failure: failure)
}) { (error, message) in
self.competitorCreateAndAddFailure(error: error, failure: failure)
}
}
fileprivate func competitorCreateAndAddSuccess(collector: CreateTrainingData, success: (_ createTrainingData: CreateTrainingData) -> Void) {
success(collector)
fileprivate func competitorCreateAndAddSuccess(
collector: CreateTrainingData,
success: @escaping (_ createTrainingData: CreateTrainingData) -> Void,
failure: @escaping (_ error: Error) -> Void)
{
let leaderboardName = collector.createEventData?.leaderboardName ?? ""
let raceName = "R1"
let fleetName = "Default"
requestManager.postLeaderboardSetTrackingTime(leaderboardName: leaderboardName, raceName: raceName, fleetName: fleetName, success: {
self.requestManager.postLeaderboardStartTracking(leaderboardName: leaderboardName, raceName: raceName, fleetName: fleetName, success: {
self.requestManager.postLeaderboardAutoCourse(leaderboardName: leaderboardName, raceName: raceName, fleetName: fleetName, success: {
success(collector)
}) { (error, message) in
failure(error)
}
}) { (error, message) in
failure(error)
}
}) { (error, message) in
failure(error)
}
}
fileprivate func competitorCreateAndAddFailure(error: Error, failure: (_ error: Error) -> Void) {
@@ -126,9 +126,9 @@ class TrainingRequestManager: NSObject {
failure(error, stringForError(error))
}
// MARK: - SetTrackingTimes
// MARK: - LeaderboardSetTrackingTime
func postSetTrackingTimes(
func postLeaderboardSetTrackingTime(
leaderboardName: String,
raceName: String,
fleetName: String,
@@ -139,20 +139,79 @@ class TrainingRequestManager: NSObject {
let encodedRaceName = raceName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let encodedFleetName = fleetName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let urlString = "\(basePathString)/leaderboards/\(encodedLeaderboardName)/settrackingtimes?race_column=\(encodedRaceName)&fleet=\(encodedFleetName)&startoftrackingasmillis=\(millisSince1970())"
manager.responseSerializer = AFJSONResponseSerializer()
manager.post(urlString, parameters: nil, success: { (requestOperation, responseObject) in
self.postSetTrackingTimesSuccess(responseObject: responseObject, success: success)
self.postLeaderboardSetTrackingTimeSuccess(responseObject: responseObject, success: success)
}) { (requestOperation, error) in
self.postSetTrackingTimesFailure(error: error, failure: failure)
self.postLeaderboardSetTrackingTimeFailure(error: error, failure: failure)
}
}
fileprivate func postSetTrackingTimesSuccess(responseObject: Any?, success: @escaping () -> Void) {
fileprivate func postLeaderboardSetTrackingTimeSuccess(responseObject: Any?, success: @escaping () -> Void) {
logInfo(name: "\(#function)", info: responseObjectToString(responseObject: responseObject))
success()
}
fileprivate func postSetTrackingTimesFailure(error: Error, failure: @escaping (_ error: Error, _ message: String?) -> Void) {
fileprivate func postLeaderboardSetTrackingTimeFailure(error: Error, failure: @escaping (_ error: Error, _ message: String?) -> Void) {
logError(name: "\(#function)", error: error)
failure(error, stringForError(error))
}
// MARK: - LeaderboardStartTracking
func postLeaderboardStartTracking(
leaderboardName: String,
raceName: String,
fleetName: String,
success: @escaping () -> Void,
failure: @escaping (_ error: Error, _ message: String?) -> Void)
{
let encodedLeaderboardName = leaderboardName.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
let encodedRaceName = raceName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let encodedFleetName = fleetName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let urlString = "\(basePathString)/leaderboards/\(encodedLeaderboardName)/starttracking?race_column=\(encodedRaceName)&fleet=\(encodedFleetName)"
manager.post(urlString, parameters: nil, success: { (requestOperation, responseObject) in
self.postLeaderboardStartTrackingSuccess(responseObject: responseObject, success: success)
}) { (requestOperation, error) in
self.postLeaderboardStartTrackingFailure(error: error, failure: failure)
}
}
fileprivate func postLeaderboardStartTrackingSuccess(responseObject: Any?, success: @escaping () -> Void) {
logInfo(name: "\(#function)", info: responseObjectToString(responseObject: responseObject))
success()
}
fileprivate func postLeaderboardStartTrackingFailure(error: Error, failure: @escaping (_ error: Error, _ message: String?) -> Void) {
logError(name: "\(#function)", error: error)
failure(error, stringForError(error))
}
// MARK: - LeaderboardAutoCourse
func postLeaderboardAutoCourse(
leaderboardName: String,
raceName: String,
fleetName: String,
success: @escaping () -> Void,
failure: @escaping (_ error: Error, _ message: String?) -> Void)
{
let encodedLeaderboardName = leaderboardName.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
let encodedRaceName = raceName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let encodedFleetName = fleetName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let urlString = "\(basePathString)/leaderboards/\(encodedLeaderboardName)/autocourse?race_column=\(encodedRaceName)&fleet=\(encodedFleetName)"
manager.post(urlString, parameters: nil, success: { (requestOperation, responseObject) in
self.postLeaderboardAutoCourseSuccess(responseObject: responseObject, success: success)
}) { (requestOperation, error) in
self.postLeaderboardAutoCourseFailure(error: error, failure: failure)
}
}
fileprivate func postLeaderboardAutoCourseSuccess(responseObject: Any?, success: @escaping () -> Void) {
logInfo(name: "\(#function)", info: responseObjectToString(responseObject: responseObject))
success()
}
fileprivate func postLeaderboardAutoCourseFailure(error: Error, failure: @escaping (_ error: Error, _ message: String?) -> Void) {
logError(name: "\(#function)", error: error)
failure(error, stringForError(error))
}