FreeBusyComponent.fromCrawledBlock constructor

FreeBusyComponent.fromCrawledBlock(
  1. CrawledBlock block
)

Implementation

factory FreeBusyComponent.fromCrawledBlock(CrawledBlock block) {
  assert(
    block.blockName.toUpperCase() == "VFREEBUSY",
    "Received invalid block: ${block.blockName}",
  );

  ContactProperty? contact;
  DateTimeStartProperty? dateTimeStart;
  DateTimeEndProperty? dateTimeEnd;
  DurationProperty? duration;
  DateTimeStampProperty? dateTimeStamp;
  OrganizerProperty? organizer;
  UniqueIdentifierProperty? uniqueIdentifier;
  URLProperty? url;
  List<AttendeeProperty>? attendees;
  List<CommentProperty>? comments;
  List<FreeBusyTimeProperty>? freeBusyTimes;
  List<RequestStatusProperty>? requestStatuses;

  for (var e in block.properties) {
    switch (e.name.toUpperCase()) {
      case "DTSTART":
        dateTimeStart = DateTimeStartProperty.fromCrawledProperty(e);
        break;
      case "ORGANIZER":
        organizer = OrganizerProperty.fromCrawledProperty(e);
        break;
      case "DTSTAMP":
        dateTimeStamp = DateTimeStampProperty.fromCrawledProperty(e);
        break;
      case "UID":
        uniqueIdentifier = UniqueIdentifierProperty.fromCrawledProperty(e);
        break;
      case "URL":
        url = URLProperty.fromCrawledProperty(e);
        break;
      case "DTEND":
        dateTimeEnd = DateTimeEndProperty.fromCrawledProperty(e);
        break;
      case "DURATION":
        duration = DurationProperty.fromCrawledProperty(e);
        break;
      case "ATTENDEE":
        attendees ??= [];
        attendees.add(AttendeeProperty.fromCrawledProperty(e));
        break;
      case "COMMENT":
        comments ??= [];
        comments.add(CommentProperty.fromCrawledProperty(e));
        break;
      case "CONTACT":
        contact = ContactProperty.fromCrawledProperty(e);
        break;
      case "REQUEST-STATUS":
        requestStatuses ??= [];
        requestStatuses.add(RequestStatusProperty.fromCrawledProperty(e));
        break;
      case "FREEBUSY":
        freeBusyTimes ??= [];
        freeBusyTimes.add(FreeBusyTimeProperty.fromCrawledProperty(e));
        break;
      default:
        // ignore: avoid_print
        print("Unknown property encountered in FreeBusyComponent: ${e.name}");
    }
  }

  return FreeBusyComponent(
    contact: contact,
    dateTimeStart: dateTimeStart,
    dateTimeEnd: dateTimeEnd,
    duration: duration,
    dateTimeStamp: dateTimeStamp,
    organizer: organizer,
    uniqueIdentifier: uniqueIdentifier,
    url: url,
    attendees: attendees,
    comments: comments,
    freeBusyTimes: freeBusyTimes,
    requestStatuses: requestStatuses,
  );
}