public static async Task <ResourceRecordSet[]> GetRecordSetsAsync( this Route53Helper r53h, string zoneId, string recordName, string recordType, string failover = null, bool throwIfNotFound = true) { var recordNameTrimmed = recordName.TrimEnd('.').TrimStartSingle("www."); var set = await r53h.ListResourceRecordSetsAsync(zoneId); set = set?.Where(x => x.Name.TrimEnd('.').TrimStartSingle("www.") == recordNameTrimmed && x.Type == recordType && (failover == null || failover == x.Failover)); if (!throwIfNotFound && set.IsNullOrEmpty()) { return(null); } if (set?.Count() == 0) { throw new Exception($"{nameof(GetRecordSet)} Failed, RecordSet with Name: '{recordName}' and Type: '{recordType}' was not found."); } return(set.ToArray()); }
public static async Task <Dictionary <HostedZone, ResourceRecordSet[]> > GetRecordSets(this Route53Helper r53h, CancellationToken cancellationToken = default(CancellationToken)) { var zones = await r53h.ListHostedZonesAsync(cancellationToken); var results = await zones.ForEachAsync( async zone => new KeyValuePair <HostedZone, ResourceRecordSet[]>( zone, (await r53h.ListResourceRecordSetsAsync(zone.Id)).ToArray())); return(results.ToDictionary(kvp => kvp.Key, kvp => kvp.Value)); }