Initial revision
[OpenSRF.git] / src / perlmods / OpenSRF / Transport / Jabber / JMessageWrapper.pm
1 package OpenSRF::Transport::Jabber::JMessageWrapper;
2 use Jabber::NodeFactory;
3 use Net::Jabber qw(Client);
4 use Net::Jabber::Message;
5 use base qw/ Net::Jabber::Message OpenSRF /;
6 use OpenSRF::Utils::Logger qw(:level);
7 use strict; use warnings;
8
9 =head1 Description
10
11 OpenSRF::Transport::Jabber::JMessageWrapper
12
13 Provides a means to extract information about a Jabber
14 message when all you have is the raw XML.  The API
15 implemented here should be implemented by any Transport
16 helper/MessageWrapper class.
17
18 =cut
19
20 sub DESTROY{}
21
22 my $logger = "OpenSRF::Utils::Logger";
23 my $_node_factory = Jabber::NodeFactory->new( fromstr => 1 );
24
25
26 =head2 new( Net::Jabber::Message/$raw_xml )
27
28 Pass in the raw Jabber message as XML and create a new 
29 JMessageWrapper
30
31 =cut
32
33 sub new {
34         my( $class, $xml ) = @_;
35         $class = ref( $class ) || $class;
36
37         return undef unless( $xml );
38         
39         my $self;
40
41         if( ref( $xml ) ) {
42                 $self = $xml;
43         } else {
44                 $logger->transport( "MWrapper got: " . $xml, INTERNAL );
45                 my $node = $_node_factory->newNodeFromStr( $xml );
46                 $self = $class->SUPER::new();
47                 $self->SetFrom( $node->attr('from') );
48                 $self->SetThread( $node->getTag('thread')->data );
49                 $self->SetBody( $node->getTag('body')->data );
50         }
51
52         bless( $self, $class );
53
54         $logger->transport( "MessageWrapper $self after blessing", INTERNAL );
55
56         return $self;
57
58 }
59
60 =head2 get_remote_id
61
62 Returns the JID (user@host/resource) of the remote user
63
64 =cut
65 sub get_remote_id {
66         my( $self ) = @_;
67         return $self->GetFrom();
68 }
69
70 =head2 get_sess_id
71
72 Returns the Jabber thread associated with this message
73
74 =cut
75 sub get_sess_id {
76         my( $self ) = @_;
77         return $self->GetThread();
78 }
79
80 =head2 get_body
81
82 Returns the message body of the Jabber message
83
84 =cut
85 sub get_body {
86         my( $self ) = @_;
87         return $self->GetBody();
88 }
89
90
91 1;