/[cvs]/nfo/perl/libs/OEF/Component/WebCache.pm
ViewVC logotype

Contents of /nfo/perl/libs/OEF/Component/WebCache.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Tue Feb 11 09:46:09 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
+ initial commit

1 ## ------------------------------------------------------------------------
2 ## $Id: Proxy.pm,v 1.1 2002/12/16 20:14:39 cvsjoko Exp $
3 ## ------------------------------------------------------------------------
4 ## $Log: Proxy.pm,v $
5 ## ------------------------------------------------------------------------
6
7
8 package OEF::Component::WebProxy;
9
10 use strict;
11 use warnings;
12
13 use Data::Dumper;
14 use LWP::UserAgent;
15 use HTTP::Headers;
16
17 use shortcuts qw( now );
18
19 # get logger instance
20 my $logger = Log::Dispatch::Config->instance;
21
22
23 sub makeInternetRequest {
24
25 my $self = shift;
26 my $url = shift;
27
28 my $ua = LWP::UserAgent->new(
29 agent => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)',
30 env_proxy => 1,
31 keep_alive => 1,
32 timeout => 30,
33 );
34
35 my $taskArgs;
36
37 $logger->debug( __PACKAGE__ . "->makeInternetRequest( url $url ) started" );
38 $logger->info( "Internet request sent" );
39 my $response = $ua->get($url);
40 $logger->debug( __PACKAGE__ . "->makeInternetRequest( url $url ) ready" );
41 $logger->info( "Internet request ready" );
42
43 #return if ($response->code() != 200);
44 return if (!$response->is_success);
45
46 return $response;
47 }
48
49
50 sub fetchPageFromProxy {
51 my $self = shift;
52 my $url = shift;
53
54 # trace
55 #print Dumper($self);
56 #exit;
57
58 my $proxyObj = $self->{app}->{import}->remote('HttpProxy');
59 my @results = $self->{app}->{import}->select($proxyObj, $proxyObj->{url} eq $url);
60 my $content = $results[0]->{content} if $results[0]->{content};
61 my $oktxt = "no";
62 if ($content) {
63 $oktxt = "ok";
64 }
65 $logger->debug( __PACKAGE__ . "->fetchPageFromProxy ...$oktxt" );
66 return $content;
67 }
68
69 sub cacheResponse {
70 my $self = shift;
71 my $url = shift;
72 my $response = shift;
73 return unless $response;
74 my $proxyObj = HttpProxy->new(
75 stamp => now(),
76 url => $url,
77 content => $response->content(),
78 request => Dumper($response->request()),
79 headers => Dumper($response->{_headers}),
80 code => $response->code(),
81 status => $response->status_line(),
82 age => $response->current_age(),
83 );
84 my $oktxt = "no";
85 if ($self->{app}->{import}->insert($proxyObj)) {
86 $oktxt = "ok";
87 }
88 $logger->debug( __PACKAGE__ . "->savePageToProxy ...$oktxt" );
89 }
90
91 sub getUrl {
92 my $self = shift;
93 my $url = shift;
94 my $force = shift;
95
96 #print "force: ", $force, "\n";
97 #exit;
98
99 if (!$url) {
100 $logger->error( __PACKAGE__ . "->getUrl: no url given" );
101 return;
102 }
103 $logger->debug( __PACKAGE__ . "->getUrl( url $url )" );
104 my $content;
105 if ( !$force && ($content = $self->fetchPageFromProxy($url)) ) {
106 #$self->cachePage($url, $content);
107 #$logger->info( __PACKAGE__ . "->getUrl: Proxy hit!" );
108 } else {
109 if (my $response = $self->makeInternetRequest($url) ) {
110 $self->cacheResponse($url, $response);
111 $content = $response->as_string();
112 } else {
113 $logger->error( __PACKAGE__ . "->getUrl( url $url ) failed" );
114 }
115 }
116 return $content;
117 }
118
119 1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed