]> sipb.mit.edu Git - ikiwiki.git/commitdiff
optimise url parsing and add guard against failure to parse
authorJoey Hess <joey@kodama.kitenet.net>
Fri, 10 Oct 2008 21:09:33 +0000 (17:09 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 10 Oct 2008 21:09:33 +0000 (17:09 -0400)
IkiWiki/Plugin/google.pm

index be07ca2be20d2a4e7e82a7e3c771feeb4be8fff3..92b9b29eb63a86d031ed995ee08ab3b5d0a10ce0 100644 (file)
@@ -6,6 +6,8 @@ use strict;
 use IkiWiki 2.00;
 use URI;
 
 use IkiWiki 2.00;
 use URI;
 
+my $host;
+
 sub import { #{{{
        hook(type => "getsetup", id => "google", call => \&getsetup);
        hook(type => "checkconfig", id => "google", call => \&checkconfig);
 sub import { #{{{
        hook(type => "getsetup", id => "google", call => \&getsetup);
        hook(type => "checkconfig", id => "google", call => \&checkconfig);
@@ -21,11 +23,14 @@ sub getsetup () { #{{{
 } #}}}
 
 sub checkconfig () { #{{{
 } #}}}
 
 sub checkconfig () { #{{{
-       foreach my $required (qw(url)) {
-               if (! length $config{$required}) {
-                       error(sprintf(gettext("Must specify %s when using the google search plugin"), $required));
-               }
+       if (! length $config{url}) {
+               error(sprintf(gettext("Must specify %s when using the google search plugin"), "url"));
+       }
+       my $uri=URI->new($config{url});
+       if (! $uri || ! defined $uri->host) {
+               error(gettext("Failed to parse url, cannot determine domain name"));
        }
        }
+       $host=$uri->host;
 } #}}}
 
 my $form;
 } #}}}
 
 my $form;
@@ -38,7 +43,7 @@ sub pagetemplate (@) { #{{{
        if ($template->query(name => "searchform")) {
                if (! defined $form) {
                        my $searchform = template("googleform.tmpl", blind_cache => 1);
        if ($template->query(name => "searchform")) {
                if (! defined $form) {
                        my $searchform = template("googleform.tmpl", blind_cache => 1);
-                       $searchform->param(sitefqdn => URI->new($config{url})->host);
+                       $searchform->param(sitefqdn => $host);
                        $form=$searchform->output;
                }
 
                        $form=$searchform->output;
                }