build static method

Future<Amadeus> build({
  1. required String clientId,
  2. required String clientSecret,
  3. AmadeusEnvironment? amadeusEnvironment = AmadeusEnvironment.test,
})

Implementation

static Future<Amadeus> build({
  required String clientId,
  required String clientSecret,
  AmadeusEnvironment? amadeusEnvironment = AmadeusEnvironment.test,
}) async {
  final _authorizationEndpoint =
      Uri.parse("https://test.api.amadeus.com/v1/security/oauth2/token");

  late String baseUrl;

  if (amadeusEnvironment == AmadeusEnvironment.test) {
    baseUrl = "https://test.api.amadeus.com";
  } else {
    baseUrl = "https://api.amadeus.com";
  }

  final Amadeus amadeus = Amadeus._build();

  final oauth2.Client client = await oauth2.clientCredentialsGrant(
      _authorizationEndpoint, clientId, clientSecret);

  if (client.credentials.isExpired == true) {
    client.refreshCredentials();
  }

  amadeus.airport = Airport(client: client, baseUrl: baseUrl);
  amadeus.analytics = Analytics(client: client, baseUrl: baseUrl);
  amadeus.booking = Booking(client: client, baseUrl: baseUrl);
  amadeus.eReputation = EReputation(client: client, baseUrl: baseUrl);
  amadeus.referenceData = ReferenceData(client: client, baseUrl: baseUrl);
  amadeus.shopping = Shopping(client: client, baseUrl: baseUrl);
  amadeus.media = Media(client: client, baseUrl: baseUrl);
  amadeus.safety = Safety(client: client, baseUrl: baseUrl);
  amadeus.schedule = Schedule(client: client, baseUrl: baseUrl);
  amadeus.travel = Travel(client: client, baseUrl: baseUrl);

  return amadeus;
}