1 package WWW::OpenSearch::Url;
\r
3 use base qw( Class::Accessor::Fast );
\r
8 __PACKAGE__->mk_accessors( qw( type template method params macros ) );
\r
12 WWW::OpenSearch::Url
\r
20 =head2 new( [%options] )
\r
24 =head2 parse_macros( )
\r
26 =head2 prepare_query( [ \%params ] )
\r
34 =item * Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt>
\r
36 =item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>
\r
40 =head1 COPYRIGHT AND LICENSE
\r
42 Copyright 2006 by Tatsuhiko Miyagawa and Brian Cassidy
\r
44 This library is free software; you can redistribute it and/or modify
\r
45 it under the same terms as Perl itself.
\r
50 my( $class, %options ) = @_;
\r
52 $options{ method } ||= 'GET';
\r
53 $options{ template } = URI->new( $options{ template } );
\r
55 my $self = $class->SUPER::new( \%options );
56 $self->parse_macros;
\r
64 my %query = $self->method eq 'post'
66 : $self->template->query_form;
\r
69 for( keys %query ) {
\r
70 if( $query{ $_ } =~ /^{(.+)}$/ ) {
\r
75 $self->macros( \%macros );
\r
79 my( $self, $params ) = @_;
\r
80 my $url = $self->template->clone;
\r
82 $params->{ startIndex } ||= 1;
\r
83 $params->{ startPage } ||= 1;
\r
84 $params->{ language } ||= '*';
\r
85 $params->{ outputEncoding } ||= 'UTF-8';
\r
86 $params->{ inputEncoding } ||= 'UTF-8';
\r
88 my $macros = $self->macros;
\r
90 # attempt to handle POST
91 if( $self->method eq 'post' ) {
92 my $post = $self->params;
94 $post->{ $macros->{ $_ } } = $params->{ $_ };
\r
96 return [ $url, $post ];
99 my $query = { $url->query_form };
\r
100 for( keys %$macros ) {
\r
101 $query->{ $macros->{ $_ } } = $params->{ $_ };
\r
104 $url->query_form( $query );
\r