RestFake constructor

RestFake({
  1. required FakeWorld world,
  2. required ContractSchemas contract,
  3. required DpopVerifier verifier,
  4. required FaultPlan faults,
})

Creates the REST side.

Implementation

RestFake({
  required this.world,
  required this.contract,
  required this.verifier,
  required this.faults,
}) {
  for (final op in contract.operations) {
    final names = <String>[];
    final source = op.path.replaceAllMapped(RegExp(r'\{([a-z_]+)\}'), (m) {
      names.add(m[1]!);
      return '([^/]+)';
    });
    _routes.add(_Route(op, RegExp('^/api/v1$source\$'), names));
  }
  // A literal segment wins over a parameter (`/me/devices/pairings` before
  // `/me/devices/{device_id}`).
  _routes.sort((a, b) => a.names.length.compareTo(b.names.length));
}