Imported Upstream version 0.11
[libwww-opensearch-perl.git] / lib / WWW / OpenSearch / Request.pm
diff --git a/lib/WWW/OpenSearch/Request.pm b/lib/WWW/OpenSearch/Request.pm
new file mode 100644 (file)
index 0000000..7c33255
--- /dev/null
@@ -0,0 +1,85 @@
+package WWW::OpenSearch::Request;
+
+use strict;
+use warnings;
+
+use base qw( HTTP::Request Class::Accessor::Fast );
+
+use HTTP::Request::Common ();
+
+__PACKAGE__->mk_accessors( qw( opensearch_url opensearch_params ) );
+
+=head1 NAME
+
+WWW::OpenSearch::Request - Encapsulate an opensearch request
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 CONSTRUCTOR
+
+=head2 new( $url, \%params )
+
+=head1 METHODS
+
+=head2 clone( )
+
+=head1 ACCESSORS
+
+=over 4
+
+=item * opensearch_url
+
+=item * opensearch_params
+
+=back
+
+=head1 AUTHOR
+
+=over 4
+
+=item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2007 by Tatsuhiko Miyagawa and Brian Cassidy
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut
+
+sub new {
+    my( $class, $os_url, $params ) = @_;
+
+    my( $uri, $post ) = $os_url->prepare_query( $params );
+
+    my $self;
+    if( lc $os_url->method eq 'post' ) {
+        $self = HTTP::Request::Common::POST( $uri, $post );
+        bless $self, $class;
+    }
+    else {
+        $self = $class->SUPER::new( $os_url->method => $uri );
+    }
+
+    $self->opensearch_url( $os_url );
+    $self->opensearch_params( $params );
+
+    return $self;
+}
+
+sub clone {
+    my $self  = shift;
+    my $clone = bless $self->SUPER::clone, ref( $self );
+
+    $clone->opensearch_url( $self->opensearch_url );
+    $clone->opensearch_params( $self->opensearch_params );
+
+    return $clone;
+}
+
+1;