artemis_timatic 0.0.10 copy "artemis_timatic: ^0.0.10" to clipboard
artemis_timatic: ^0.0.10 copied to clipboard

A Dart/Flutter client for Timatic-powered APIs — handles authentication, token management, and provides strongly-typed methods to query locations, parameters, accepted values, and submit Timatic docum [...]

example/lib/main.dart

// import 'dart:developer';
// import 'dart:io';
//
// import 'package:artemis_timatic/artemis_timatic.dart';
//
// Future<void> main() async {
//   // 1) Init client & API
//   final client = TimaticClient(TimaticClientOptions(
//     baseUrl: 'https://timatic.multidcs.com/api/v1', // ← CHANGE ME
//   ));
//   final api = TimaticApi(client);
//
//   try {
//     // 2) Login (stores bearer token inside client for future calls)
//     final login = await api.login(
//       LoginRequest(
//         username: 'superadmin',             // ← CHANGE
//         password: '11555FaraN#+',           // ← CHANGE
//         app: {"aa":"asd"},
//         device: {},
//         network: {},
//
//       ),
//     );
//
//     log('Logged in as: ${login.profile.username}');
//     log('Token (short): ${client.authToken?.substring(0, 12)}…');
//
//     // 3) Locations — by type (path param)
//     final airports = await api.listLocationsByType(
//       LocationType.AIRPORT,
//       name: 'Istanbul', // optional
//     );
//     log('Airports (sample): ${airports.take(3).map((a) => a.code3).toList()}');
//
//     // 4) Locations — multi-type search (repeated query params)
//     final mixed = await api.listLocationsByType(
//       LocationType.CITY,
//       code: '',
//       name: ""// optional
//     );
//     log('Search locations count: ${mixed.length}');
//
//     // 5) Parameters (e.g., "pets")
//     final paramsEnv = await api.getParameters(codes: ['pets']);
//     for (final p in paramsEnv.parameters) {
//       log('Parameter: ${p.name} (${p.code}) → '
//           '${p.parameterValues.map((v) => v.code).take(3).join(", ")}…');
//     }
//
//     // 6) Accepted values for a country/parameter with rule set filters
//     final accepted = await api.getAcceptedValues(
//       countryCode: 'TR',                 // Turkiye
//       parameter: 'docIssueCountry',      // from your API
//       ruleSetTypes: ['REQTIX','INFTST','REQDOC'],
//     );
//     log('Accepted for ${accepted.locationName}: '
//         '${accepted.ruleSets.first.parameter.parameterValues.length} values');
//
//     // 7) Submit main Timatic document request
//     final docResp = await api.submitDocumentRequest(
//       DocumentRequest(
//         documentDetails: [
//           DocumentDetail(
//             documentCode: 'OFFICIALPASSPORT',
//             documentExpiryDate: DateTime.now(),
//             documentIssueCountry: Location(type: LocationType.COUNTRY, code3: 'AFG', name: 'AFG'),
//           ),
//         ],
//         itineraryDetails: ItineraryDetails(
//           segments: [
//             ItinerarySegment(
//               arrival: ItinPoint(
//                 date: DateTime.now(),
//                 time:DateTime.now(),
//                 dateTime:DateTime.now(),
//                 point: 'AAH',
//                 type: LocationType.AIRPORT,
//               ),
//               departure: ItinPoint(
//                 date: DateTime.now(),
//                 time: DateTime.now(),
//                 dateTime:DateTime.now(),
//                 point: 'IST',
//                 type: LocationType.AIRPORT,
//               ),
//               processingEntity: 'ABOMIS DOC CHECK',
//             ),
//           ],
//         ),
//         passengerDetails: PassengerDetails(
//           birthDate: '2023-12-13',
//           nationality: 'ALB',
//         ),
//       ),
//     );
//
//     log('Txn: ${docResp.transactionId}  Eval: ${docResp.evaluationResult}');
//     for (final seg in docResp.segmentResults) {
//       log('Segment → ${seg.arrival.point}→${seg.departure.point} '
//           'Result: ${seg.segmentEvaluationResult}');
//       for (final rs in seg.ruleSetEvaluations.take(3)) {
//         log('  ${rs.ruleSetType.name} = ${rs.evaluationResult}');
//         for (final dr in rs.documentResults) {
//           for (final reg in dr.regulations) {
//             // HTML text strings are in reg.texts[].text
//             final hint = reg.texts?.isNotEmpty == true
//                 ? reg.texts!.first.text.replaceAll(RegExp(r'\s+'), ' ')
//                 : '';
//             log('    - ${reg.name}: ${reg.evaluationResult}  ${hint.isEmpty ? "" : "…"}');
//           }
//         }
//       }
//     }
//
//   } catch (e, st) {
//     // minimal error log
//     stderr.writeln('❌ Error: $e');
//     stderr.writeln(st);
//   }
// }
0
likes
0
points
59
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart/Flutter client for Timatic-powered APIs — handles authentication, token management, and provides strongly-typed methods to query locations, parameters, accepted values, and submit Timatic document requests. Built with dio and json_serializable for reliability and easy integration into mobile or web apps.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

dio, flutter, intl, json_annotation

More

Packages that depend on artemis_timatic