-
Notifications
You must be signed in to change notification settings - Fork 0
/
SkyLinkAPI.sol
109 lines (100 loc) · 3.94 KB
/
SkyLinkAPI.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/utils/Strings.sol";
import "./SkyLinkInstances.sol";
/**
* @title SkyLinkAPI
* @dev A contract that provides read-only functions to retrieve information about aircraft and components in the SkyLink Protocol.
* Third-party services, such as travel aggregators, can use this API to access the data.
* Access to this data is supposed to be restricted to authorized parties who have been issued API keys by SkyLink Platform.
*/
contract SkyLinkAPI is SkyLinkInstances {
/**
* @dev Passes arguments to parent contract `SkyLinkInstances`.
* @param _classAFee The fee amount for fee class A.
* @param _classBFee The fee amount for fee class B.
* @param _classCFee The fee amount for fee class C.
*/
constructor(
uint _classAFee,
uint _classBFee,
uint _classCFee
) SkyLinkInstances(_classAFee, _classBFee, _classCFee) {}
/**
* @dev Retrieves the service records for a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return An array of service records associated with the aircraft.
*/
function getServiceRecords(
string calldata _reg
) external view onlySkyLink returns (ServiceRecord[] memory) {
return regNumberToServiceRecords[_reg];
}
/**
* @dev Retrieves the status (in service or not) of a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return True if the aircraft is in service, false otherwise.
*/
function getAirCraftStatus(
string calldata _reg
) external view onlySkyLink returns (bool) {
return regNumberToAircraft[_reg].inService;
}
/**
* @dev Retrieves the previous owners of a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return An array of addresses representing previous owners.
*/
function getAirCraftPrevOwners(
string calldata _reg
) external view onlySkyLink returns (address[] memory) {
return regNumberToAircraft[_reg].previousOwners;
}
/**
* @dev Retrieves the current owner of a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return The address of the current owner.
*/
function getAirCraftCurrentOwner(
string calldata _reg
) external view onlySkyLink returns (address) {
return regNumberToAircraft[_reg].currentOwner;
}
/**
* @dev Retrieves general information about a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return An array containing aircraft information: [manufacturer, model, productionDate, seatCapacity].
*/
function getAirCraftInfo(
string calldata _reg
) external view onlySkyLink returns (string[4] memory) {
AirCraft memory aircraft = regNumberToAircraft[_reg];
string[4] memory info = [
aircraft.manufacturer,
aircraft.model,
Strings.toString(aircraft.productionDate),
Strings.toString(aircraft.seatCapacity)
];
return info;
}
/**
* @dev Retrieves active air components associated with a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return An array of active AirComponent structs.
*/
function getActiveAirCraftComponents(
string calldata _reg
) external view onlySkyLink returns (AirComponent[] memory) {
return regNumberToAirComponents[_reg][true];
}
/**
* @dev Retrieves halted air components associated with a specific aircraft.
* @param _reg The registration number of the aircraft.
* @return An array of halted AirComponent structs.
*/
function getHaltedAirCraftComponents(
string calldata _reg
) external view onlySkyLink returns (AirComponent[] memory) {
return regNumberToAirComponents[_reg][false];
}
}