libvideosite: Add special "environment" connector that will take proxy settings from...
[videosite.git] / videosite / Base.pm
index 437ef98..1bd229f 100644 (file)
@@ -19,7 +19,7 @@ sub new {
                 },
                 @_,
                };
-    
+
     # Add the 'enabled' property to all modules
     $self->{_PARAMS}->{enabled} = [1, 'Whether the module is enabled'];
     bless($self, $class);
@@ -156,6 +156,7 @@ sub ua {
     $ua = LWP::UserAgent->new(
             'agent' => 'Mozilla/5.0',
             'cookie_jar' => HTTP::Cookies->new,
+            'parse_head' => 0,
             'timeout' => 15,
             );
 
@@ -163,6 +164,15 @@ sub ua {
     delete($ENV{'HTTPS_PROXY'});
 
     if (defined($self->{'_CONNECTOR'})) {
+        #
+        # The "environment" connector is special, it loads proxies from
+        # the environment variables. It also does not define any schemas,
+        # so the code below will not reset this.
+        #
+        if ($self->{'_CONNECTOR'}->{'name'} eq 'environment') {
+            $self->debug("Using proxy settings from environment");
+            $ua->env_proxy;
+        }
         my $schemas = $self->{'_CONNECTOR'}->{'schemas'};
         foreach (keys(%{$schemas})) {
             $self->debug("Adding schema %s with proxy %s", $_, $schemas->{$_});
@@ -170,7 +180,7 @@ sub ua {
                 # OK, so here's the gist.
                 #
                 # The usual way of reqesting an HTTPS URL through a proxy is
-                # to connect to the proxy server, issue a CONNECT request to 
+                # to connect to the proxy server, issue a CONNECT request to
                 # create a channel to the web server and start an SSL session over
                 # this channel, so there is an end-to-end connection between
                 # the client and the server.
@@ -210,7 +220,10 @@ sub simple_get {
     my $ua = shift || $self->ua();
     my $r;
 
+    $self->debug("Getting %s", $url);
     $r = $ua->get($url);
+    $self->debug("Return code: %s", $r->status_line);
+    $self->debug("Content length: %d", length($r->decoded_content)) if $r->is_success();
     return $r->decoded_content() if $r->is_success();
     return undef;
 }
@@ -232,7 +245,7 @@ sub decode_querystring {
 
 sub connectors {
     my $self = shift;
-    
+
     return $self->{_API}->{connectors}->();
 }