| Weather-YR documentation | Contained in the Weather-YR distribution. |
Weather::YR::Base - Base class for all YR service classes.
This module contains helper functions for all other YR service classes.
This base class contains no default configuration. To set default configuration
parameters in your sub class, configure a %CONFIG variable in your class.
\%args)Constructor. Takes parameters as a HASHREF that will be merged with the default configuration in %CONFIG.
%args)Sets default package configuration values.
This method will try to fetch the content of the web service.
Creates and returns an user agent instance which can be used to fetch data from the YR web services.
This method should be overridden by a subclass. By default it will return the
value of $self->{url}.
Method for overriding values in the object with values from a HASHREF.
Knut-Olav, <knut-olav@hoven.ws>
Copyright (C) 2008 by Knut-Olav Hoven
This library is free software; you can redireibute it and/or modify it under the terms as GNU GPL version 2.
| Weather-YR documentation | Contained in the Weather-YR distribution. |
package Weather::YR::Base; use strict; use warnings; use Error qw/:try/; use LWP::UserAgent; use Weather::YR;
my %CONFIG = ();
sub new { my ( $class, $args ) = @_; my $config = $CONFIG{$class} || {}; my %config = %$config; my $self = bless \%config, $class; $self->merge_config($args); return $self; }
sub config { my ($self, %args) = @_; if (ref $self) { $self->merge_config(\%args); } else { my $class = $self; $CONFIG{$class} ||= {}; while (my ($key, $value) = each %args) { $CONFIG{$class}{$key} = $value; } } }
sub fetch { my ( $self, $url ) = @_; my $ua = $self->get_ua(); my $response = $ua->get($url); return $response->content if $response->is_success; Error::Simple->throw("Unable to fetch content at url $url"); }
sub get_ua { my $ua = LWP::UserAgent->new(); $ua->timeout(15); $ua->env_proxy; my $version = $Weather::YR::VERSION; $ua->agent(sprintf('Perl YR/%s ', $version)); return $ua; }
sub get_url { my ( $self ) = @_; return $self->{'url'}; }
sub merge_config { my ( $self, $args ) = @_; return unless $args; @$self{keys %$args} = values %$args; }
1;