Skip to content

Commit fd1896a

Browse files
committed
don't assume these operations always succeed
1 parent c9ffa22 commit fd1896a

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

bin/registrars.pl

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,14 @@
4040
'entitySearchResults' => [],
4141
};
4242

43-
my $file = mirror_file('https://www.icann.org/en/accredited-registrars');
43+
my $file;
44+
45+
eval {
46+
$file = mirror_file('https://www.icann.org/en/accredited-registrars');
47+
};
48+
49+
die($@) if ($@);
50+
4451
say STDERR 'retrieved registrar list, attempting to parse';
4552

4653
my $doc = XML::LibXML->load_html(
@@ -54,10 +61,22 @@
5461
);
5562

5663
say STDERR 'searching for embedded JSON...';
57-
my $data = (grep { 'ng-state' eq $_->getAttribute('id') && 'application/json' eq $_->getAttribute('type') } $doc->getElementsByTagName('script'))[0]->childNodes->item(0)->data;
58-
$data =~ s/\&q;/"/g;
64+
my $rars;
65+
eval {
66+
my $data = (grep { 'ng-state' eq $_->getAttribute('id') && 'application/json' eq $_->getAttribute('type') } $doc->getElementsByTagName('script'))[0]->childNodes->item(0)->data;
67+
$data =~ s/\&q;/"/g;
68+
69+
my $object = $json->decode(Encode::encode_utf8($data));
5970

60-
my $object = $json->decode(Encode::encode_utf8($data));
71+
$rars = $object->{'accredited-registrars-{"languageTag":"en","siteLanguageTag":"en","slug":"accredited-registrars"}'}->{'data'}->{'accreditedRegistrarsOperations'}->{'registrars'};
72+
};
73+
74+
die($@) if ($@);
75+
76+
if (scalar(@{$rars}) < 1) {
77+
say STDERR 'no registrars found, the page format may have changed...';
78+
exit(1);
79+
}
6180

6281
my $rars = $object->{'accredited-registrars-{"languageTag":"en","siteLanguageTag":"en","slug":"accredited-registrars"}'}->{'data'}->{'accreditedRegistrarsOperations'}->{'registrars'};
6382

0 commit comments

Comments
 (0)