Compressão lógica
Como entender a resposta de uma busca de vôos e o mecanismo de referência por indices
Uma resposta de busca de vôos retorna uma lista de FlightOptions(Opções de seleção) e cada FlightOption é composto por FlightGroups como descrito em Busca de vôos. No entanto, quando uma pesquisa retorna opções de seleção combinadas, muitas vezes cada opção pode referenciar o mesmo FlightGroup para ida e outro FlightGroup diferente para a volta.
Tomemos por exemplo o resultado abaixo:
[...]
{
"flightGroups":
[
{//Indice 0
"supplierSystem": "Gol",
"durationInMinutes": 0,
"cityPairIndex": 0,
"flights": [
{
"arrivalAirportId": 0,
"departureAirportId": 0,
"durationInMinutes": 100,
"layoverInMinutes": 0,
"arrivalDateTime": "2023-11-20T08:40:00",
"departureDateTime": "2023-11-20T07:00:00",
"cabinType": "Economy",
"airCompanyCode": "G3",
"operatedByAirCompanyCode": "G3",
"flightNumber": "1210",
"classOfService": "U",
"aircraftType": "738",
"arrivalAirportIATA": "POA",
"departureAirportIATA": "CGH"
}
],
"arrivalTime": "2023-11-20T08:40:00",
"departureTime": "2023-11-20T07:00:00",
"originIATA": "CGH",
"destinationIATA": "POA",
"stops": 1,
"credentialIdentifier": "A213459EB634941F55937EF85DCD6A32A9C2116E"
},
{//Indice 1
"supplierSystem": "Gol",
"durationInMinutes": 0,
"cityPairIndex": 1,
"flights": [
{
"arrivalAirportId": 0,
"departureAirportId": 0,
"durationInMinutes": 100,
"layoverInMinutes": 0,
"arrivalDateTime": "2023-11-28T08:00:00",
"departureDateTime": "2023-11-28T06:20:00",
"cabinType": "Economy",
"airCompanyCode": "G3",
"operatedByAirCompanyCode": "G3",
"flightNumber": "1205",
"classOfService": "O",
"aircraftType": "738",
"arrivalAirportIATA": "CGH",
"departureAirportIATA": "POA"
}
],
"arrivalTime": "2023-11-28T08:00:00",
"departureTime": "2023-11-28T06:20:00",
"originIATA": "POA",
"destinationIATA": "CGH",
"stops": 1,
"credentialIdentifier": "A213459EB634941F55937EF85DCD6A32A9C2116E"
},
{//Indice 2
"supplierSystem": "Gol",
"durationInMinutes": 0,
"cityPairIndex": 0,
"flights": [
{
"arrivalAirportId": 0,
"departureAirportId": 0,
"durationInMinutes": 100,
"layoverInMinutes": 0,
"arrivalDateTime": "2023-11-20T09:40:00",
"departureDateTime": "2023-11-20T08:00:00",
"cabinType": "Economy",
"airCompanyCode": "G3",
"operatedByAirCompanyCode": "G3",
"flightNumber": "1212",
"classOfService": "U",
"aircraftType": "738",
"arrivalAirportIATA": "POA",
"departureAirportIATA": "CGH"
}
],
"arrivalTime": "2023-11-20T09:40:00",
"departureTime": "2023-11-20T08:00:00",
"originIATA": "CGH",
"destinationIATA": "POA",
"stops": 1,
"credentialIdentifier": "A213459EB634941F55937EF85DCD6A32A9C2116E"
},
],
"flightsOptions": [
{ //Primeira opção de vôo que tem o FlightGroup 0 como ida e o 1 como volta
"flightGroupIndexes": [
0,
1
],
"brandedFares": [
[Preço 1],
[Preço 2],
[Preço 3],
]
},
{ //Segunda opção de vôo que tem o FlightGroup 0 como ida e o 2 como volta
"flightGroupIndexes": [
0,
2
],
"brandedFares": [
{...}
]
}
]
}
Note que cada objeto FlightOption tem um array de FlightGroupIndexes e não um array de FlightGroups propriamente dito, justamente porque dado o exemplo acima o FlightGroup 0 teria seu conteúdo repetido inúmeras vezes.
Por isso ao fazer o parse do resultado de buscas a interface deve apresentar os FlightOptions e seus BrandedFares ao mesmo tempo que "desreferencia" o FlightGroup pelo indice no array de FlightGroups retornado na própria resposta.
Updated about 2 years ago
