/// <summary> /// Initializes a new instance of the <see cref="DnsQueryResult"/> class. /// </summary> /// <param name="response">The response.</param> internal DnsQueryResult(DnsClient.IDnsResponse response) : this() { Id = response.Id; IsAuthoritativeServer = response.IsAuthorativeServer; IsRecursionAvailable = response.IsRecursionAvailable; IsTruncated = response.IsTruncated; OperationCode = response.OperationCode; ResponseCode = response.ResponseCode; if (response.AnswerRecords != null) { foreach (var record in response.AnswerRecords) { AnswerRecords.Add(new DnsRecord(record)); } } if (response.AuthorityRecords != null) { foreach (var record in response.AuthorityRecords) { AuthorityRecords.Add(new DnsRecord(record)); } } if (response.AdditionalRecords != null) { foreach (var record in response.AdditionalRecords) { AdditionalRecords.Add(new DnsRecord(record)); } } }
public string GetResponseString() { UpdateHeader(); string allQuestions = string.Join("; ", AnswerRecords.Select(d => d.ToStringIPAddressOnly())); return($"{allQuestions}"); }
protected override void FinishParsing() { Prequisites = AnswerRecords.ConvertAll <PrequisiteBase>( record => { if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) { return(new RecordExistsPrequisite(record.Name, record.RecordType)); } else if (record.RecordClass == RecordClass.Any) { return(new RecordExistsPrequisite(record)); } else if ((record.RecordClass == RecordClass.None) && (record.RecordDataLength == 0)) { return(new RecordNotExistsPrequisite(record.Name, record.RecordType)); } else if ((record.RecordClass == RecordClass.Any) && (record.RecordType == RecordType.Any)) { return(new NameIsInUsePrequisite(record.Name)); } else if ((record.RecordClass == RecordClass.None) && (record.RecordType == RecordType.Any)) { return(new NameIsNotInUsePrequisite(record.Name)); } else { return(null); } }).Where(prequisite => (prequisite != null)).ToList(); Updates = AuthorityRecords.ConvertAll <UpdateBase>( record => { if (record.TimeToLive != 0) { return(new AddRecordUpdate(record)); } else if ((record.RecordType == RecordType.Any) && (record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) { return(new DeleteAllRecordsUpdate(record.Name)); } else if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) { return(new DeleteRecordUpdate(record.Name, record.RecordType)); } else if (record.RecordClass == RecordClass.None) { return(new DeleteRecordUpdate(record)); } else { return(null); } }).Where(update => (update != null)).ToList(); }
protected override void FinishParsing() { /* * Prequisites = * AnswerRecords.ConvertAll<PrequisiteBase>( * record => * { * if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) * { * return new RecordExistsPrequisite(record.Name, record.RecordType); * } * else if (record.RecordClass == RecordClass.Any) * { * return new RecordExistsPrequisite(record); * } * else if ((record.RecordClass == RecordClass.None) && (record.RecordDataLength == 0)) * { * return new RecordNotExistsPrequisite(record.Name, record.RecordType); * } * else if ((record.RecordClass == RecordClass.Any) && (record.RecordType == RecordType.Any)) * { * return new NameIsInUsePrequisite(record.Name); * } * else if ((record.RecordClass == RecordClass.None) && (record.RecordType == RecordType.Any)) * { * return new NameIsNotInUsePrequisite(record.Name); * } * else * { * return null; * } * }).Where(prequisite => (prequisite != null)).ToList(); */ Prequisites = AnswerRecords.Select(record => { PrequisiteBase ret = null; if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) { ret = new RecordExistsPrequisite(record.Name, record.RecordType); } else if (record.RecordClass == RecordClass.Any) { ret = new RecordExistsPrequisite(record); } else if ((record.RecordClass == RecordClass.None) && (record.RecordDataLength == 0)) { ret = new RecordNotExistsPrequisite(record.Name, record.RecordType); } else if ((record.RecordClass == RecordClass.Any) && (record.RecordType == RecordType.Any)) { ret = new NameIsInUsePrequisite(record.Name); } else if ((record.RecordClass == RecordClass.None) && (record.RecordType == RecordType.Any)) { ret = new NameIsNotInUsePrequisite(record.Name); } return(ret); }).Where(prequisite => (prequisite != null)).ToList(); /* * Updates = * AuthorityRecords.ConvertAll<UpdateBase>( * record => * { * if (record.TimeToLive != 0) * { * return new AddRecordUpdate(record); * } * else if ((record.RecordType == RecordType.Any) && (record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) * { * return new DeleteAllRecordsUpdate(record.Name); * } * else if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) * { * return new DeleteRecordUpdate(record.Name, record.RecordType); * } * else if (record.RecordClass == RecordClass.None) * { * return new DeleteRecordUpdate(record); * } * else * { * return null; * } * }).Where(update => (update != null)).ToList(); */ Updates = AnswerRecords.Select(record => { UpdateBase ret = null; if (record.TimeToLive != 0) { ret = new AddRecordUpdate(record); } else if ((record.RecordType == RecordType.Any) && (record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) { ret = new DeleteAllRecordsUpdate(record.Name); } else if ((record.RecordClass == RecordClass.Any) && (record.RecordDataLength == 0)) { ret = new DeleteRecordUpdate(record.Name, record.RecordType); } else if (record.RecordClass == RecordClass.None) { ret = new DeleteRecordUpdate(record); } else { ret = null; } return(ret); }).Where(update => (update != null)).ToList(); }