fromBytes static method

NAPTRResponseRecord fromBytes({
  1. required String name,
  2. required int ttl,
  3. required Uint8List bytes,
  4. required int offset,
  5. required int length,
})

Implementation

static NAPTRResponseRecord fromBytes({
    required String name,
    required int ttl,
    required Uint8List bytes,
    required int offset,
    required int length }) {

    if ((offset + length) > bytes.length || length < 7) {
        throw FormatException('Invalid NAPTR record: incorrect length.');
    }

    final int order = (bytes[offset] << 8) | bytes[offset + 1];
    final int preference = (bytes[offset + 2] << 8) | bytes[offset + 3];
    offset += 4;

    final int flagsLen = bytes[offset++];
    final String flags = utf8.decode(bytes.sublist(offset, offset + flagsLen));
    offset += flagsLen;

    final int servicesLen = bytes[offset++];
    final String services = utf8.decode(bytes.sublist(offset, offset + servicesLen));
    offset += servicesLen;

    final int regexpLen = bytes[offset++];
    final String regexp = utf8.decode(bytes.sublist(offset, offset + regexpLen));
    offset += regexpLen;

    final (_, String replacement) = DNSHelper.parseDomainName(bytes, offset);

    return NAPTRResponseRecord(
        name: name,
        ttl: ttl,
        order: order,
        preference: preference,
        flags: flags,
        services: services,
        regexp: regexp,
        replacement: replacement);
}