UNPKG

@windingtree/wt-read-api

Version:

API to interact with the Winding Tree platform

49 lines (44 loc) 1.79 kB
const hotelMappingToResponse = { owner: 'ownerAddress', }; const airlineMappingToResponse = { owner: 'ownerAddress', }; const mapObjectToResponse = (obj, mapping) => { return Object.keys(obj).reduce((newObj, field) => { const newField = mapping[field] || field; newObj[newField] = obj[field]; return newObj; }, {}); }; const mapHotelObjectToResponse = (hotel) => mapObjectToResponse(hotel, hotelMappingToResponse); const mapAirlineObjectToResponse = (airline) => mapObjectToResponse(airline, airlineMappingToResponse); const hotelMappingFromQuery = { ownerAddress: 'owner', ratePlans: 'ratePlansUri', availability: 'availabilityUri', }; const airlineMappingFromQuery = { ownerAddress: 'owner', flights: 'flightsUri', flightInstances: 'flightInstancesUri', }; const REVERSED_HOTEL_FIELD_MAPPING = Object.keys(hotelMappingFromQuery).reduce((reversed, field) => { reversed[hotelMappingFromQuery[field]] = field; return reversed; }, {}); const REVERSED_AIRLINE_FIELD_MAPPING = Object.keys(airlineMappingFromQuery).reduce((reversed, field) => { reversed[airlineMappingFromQuery[field]] = field; return reversed; }, {}); const mapFieldsFromQuery = (fields, mapping) => { return fields.reduce((newFields, field) => { const newField = field.split('.').map((f) => mapping[f] || f).join('.'); newFields.push(newField); return newFields; }, []); }; const mapHotelFieldsFromQuery = (fields) => mapFieldsFromQuery(fields, hotelMappingFromQuery); const mapAirlineFieldsFromQuery = (fields) => mapFieldsFromQuery(fields, airlineMappingFromQuery); module.exports = { mapHotelObjectToResponse, mapHotelFieldsFromQuery, REVERSED_HOTEL_FIELD_MAPPING, mapAirlineObjectToResponse, mapAirlineFieldsFromQuery, REVERSED_AIRLINE_FIELD_MAPPING, };