summaryrefslogtreecommitdiff
path: root/lib/XML/Stream/Namespace.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/XML/Stream/Namespace.pm')
-rw-r--r--lib/XML/Stream/Namespace.pm190
1 files changed, 190 insertions, 0 deletions
diff --git a/lib/XML/Stream/Namespace.pm b/lib/XML/Stream/Namespace.pm
new file mode 100644
index 0000000..a9aee25
--- /dev/null
+++ b/lib/XML/Stream/Namespace.pm
@@ -0,0 +1,190 @@
+##############################################################################
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+# Jabber
+# Copyright (C) 1998-2004 Jabber Software Foundation http://jabber.org/
+#
+##############################################################################
+
+package XML::Stream::Namespace;
+
+=head1 NAME
+
+XML::Stream::Namespace - Object to make defining Namespaces easier in
+ XML::Stream.
+
+=head1 SYNOPSIS
+
+XML::Stream::Namespace is a helper package to XML::Stream. It provides
+a clean way of defining Namespaces for XML::Stream to use when connecting.
+
+=head1 DESCRIPTION
+
+ This module allows you to set and read elements from an XML::Stream
+ Namespace.
+
+=head1 METHODS
+
+ SetNamespace("mynamespace");
+ SetXMLNS("http://www.mynamespace.com/xmlns");
+ SetAttributes(attrib1=>"value1",
+ attrib2=>"value2");
+
+ GetNamespace() returns "mynamespace"
+ GetXMLNS() returns "http://www.mynamespace.com/xmlns"
+ GetAttributes() returns a hash ( attrib1=>"value1",attrib2=>"value2")
+ GetStream() returns the following string:
+ "xmlns:mynamespace='http://www.nynamespace.com/xmlns'
+ mynamespace:attrib1='value1'
+ mynamespace:attrib2='value2'"
+
+=head1 EXAMPLES
+
+
+ $myNamespace = new XML::Stream::Namespace("mynamspace");
+ $myNamespace->SetXMLNS("http://www.mynamespace.org/xmlns");
+ $myNamespace->SetAttributes(foo=>"bar",
+ bob=>"vila");
+
+ $stream = new XML::Stream;
+ $stream->Connect(name=>"foo.bar.org",
+ port=>1234,
+ namespace=>"foo:bar",
+ namespaces=>[ $myNamespace ]);
+
+ #
+ # The above Connect will send the following as the opening string
+ # of the stream to foo.bar.org:1234...
+ #
+ # <stream:stream
+ # xmlns:stream="http://etherx.jabber.org/streams"
+ # to="foo.bar.org"
+ # xmlns="foo:bar"
+ # xmlns:mynamespace="http://www.mynamespace.org/xmlns"
+ # mynamespace:foo="bar"
+ # mynamespace:bob="vila">
+ #
+
+
+=head1 AUTHOR
+
+Written by Ryan Eatmon in February 2000
+Idea By Thomas Charron in January of 2000 for http://etherx.jabber.org/streams/
+
+=head1 COPYRIGHT
+
+This module is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use Carp;
+use vars qw( $VERSION );
+
+$VERSION = "1.22";
+
+sub new
+{
+ my $proto = shift;
+ my $self = { };
+
+ ($self->{Namespace}) = @_ if ($#_ > -1);
+
+ $self->{Attributes} = {};
+
+ bless($self,$proto);
+ return $self;
+}
+
+
+sub SetNamespace
+{
+ my $self = shift;
+ my ($namespace) = @_;
+
+ $self->{Namespace} = $namespace;
+}
+
+
+sub SetXMLNS
+{
+ my $self = shift;
+ my ($xmlns) = @_;
+
+ $self->{XMLNS} = $xmlns;
+}
+
+
+sub SetAttributes
+{
+ my $self = shift;
+ my %att = @_;
+
+ my $key;
+ foreach $key (keys(%att))
+ {
+ $self->{Attributes}->{$key} = $att{$key};
+ }
+}
+
+
+sub GetNamespace
+{
+ my $self = shift;
+
+ return $self->{Namespace};
+}
+
+sub GetXMLNS
+{
+ my $self = shift;
+
+ return $self->{XMLNS};
+}
+
+sub GetAttributes
+{
+ my $self = shift;
+ my ($attrib) = @_;
+
+ return $self->{Attributes} if ($attrib eq "");
+ return $self->{Attributes}->{$attrib};
+}
+
+
+sub GetStream
+{
+ my $self = shift;
+
+ my $string = "";
+
+ $string .= "xmlns:".$self->GetNamespace();
+ $string .= "='".$self->GetXMLNS()."'";
+ my $attrib;
+ foreach $attrib (keys(%{$self->GetAttributes()}))
+ {
+ $string .= " ".$self->GetNamespace().":";
+ $string .= $attrib;
+ $string .= "='".$self->GetAttributes($attrib)."'";
+ }
+
+ return $string;
+}
+
+1;
+