feat: add structures for MTR arrival and station information handling
This commit is contained in:
55
main/external/mtr/arrival.h
vendored
Normal file
55
main/external/mtr/arrival.h
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
#pragma once
|
||||
#include "external/mtr/arrival.h"
|
||||
#include "cJSON.h"
|
||||
#include "external/mtr/mtr.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Forward declaration
|
||||
class MTRNextTrainHandler;
|
||||
|
||||
struct ArrivalInfo {
|
||||
public:
|
||||
// Caller transfers ownership of arrival_time to ArrivalInfo
|
||||
ArrivalInfo(
|
||||
const std::string& arrival_time,
|
||||
const std::string& destination_name
|
||||
) : _arrival_time(arrival_time)
|
||||
, _destination_name(destination_name) { }
|
||||
|
||||
const char* arrival_time() const {
|
||||
return _arrival_time.c_str();
|
||||
}
|
||||
|
||||
private:
|
||||
const std::string _arrival_time;
|
||||
const std::string _destination_name; // not the code of the station
|
||||
};
|
||||
|
||||
|
||||
enum StatusEnum {
|
||||
SUCCESSFUL_WITHOUT_DELAY = 0,
|
||||
SUCCESSFUL_WITH_DELAY = 1,
|
||||
FAILED_WITH_MESSAGE = 2,
|
||||
UNKNOWN_STATUS = 3
|
||||
};
|
||||
|
||||
struct StationArrivalInfo {
|
||||
public:
|
||||
friend class MTRNextTrainHandler;
|
||||
|
||||
private:
|
||||
StationArrivalInfo(
|
||||
cJSON* mtr_line_station_json,
|
||||
cJSON* arrival_json,
|
||||
const std::string& train_line_code,
|
||||
const std::string& train_station_code
|
||||
);
|
||||
|
||||
StatusEnum _status;
|
||||
std::string _message; // only valid if status == FAILED_WITH_MESSAGE
|
||||
std::string _train_line;
|
||||
std::string _train_station;
|
||||
std::vector<ArrivalInfo> _up_arrivals;
|
||||
std::vector<ArrivalInfo> _down_arrivals;
|
||||
};
|
||||
Reference in New Issue
Block a user