This repository includes the FlightBooking
Apodini web service that can be used to fetch sustainability-related metadata in the cloud-native sustainability demo.
The web service exposes a RESTful web API and an additional endpoint that exposes sustainability-related metadata:
import Apodini
import ArgumentParser
import ApodiniREST
import ApodiniSustainability
@main
struct FlightBooking: WebService {
@OptionGroup
var options: SustainabilityDocumentExportOptions
var configuration: Configuration {
REST()
Sustainability(options)
}
var content: some Component {
FlightSearchService()
.serviceIdentifier("flight-search")
WeatherInformationService()
.serviceIdentifier("weather-information")
FlightBookingService()
.serviceIdentifier("flight-booking")
RentalCarBookingService()
.serviceIdentifier("rental-car-booking")
PaymentService()
.serviceIdentifier("payment")
}
}
You can access the FlightBooking
web service at http://localhost/
. The sustainability-related metadata is exposed at http://localhost/sustainability
.
The repository contains GitHub Actions to automatically build and test the FlightBooking
web service on a wide variety of platforms and configurations.
The repository includes docker files and docker compose files to start and deploy the web service. In addition, the repository includes a GitHub Action that builds a new docker image on every release and pushes the image to the GitHub package registry. You can start up the web service using published docker images using $ docker compose up
using the docker-compose.yml
file. The docker-compose-development.yml
file can be used to test the setup by building the web service locally using $ docker compose -f docker-compose-development.yml up
.