]> git.evergreen-ils.org Git - Evergreen.git/blob - OpenSRF/src/perlmods/OpenSRF/Transport/SlimJabber/MessageWrapper.pm
testing reveals bugs, bugs get squashed!
[Evergreen.git] / OpenSRF / src / perlmods / OpenSRF / Transport / SlimJabber / MessageWrapper.pm
1 package OpenSRF::Transport::SlimJabber::MessageWrapper;
2 use XML::LibXML;
3
4 sub new {
5         my $class = shift;
6         $class = ref($class) || $class;
7
8         my $xml = shift;
9
10         my ($doc, $msg);
11         if ($xml) {
12                 $doc = XML::LibXML->new->parse_string($xml);
13                 $msg = $doc->documentElement;
14         } else {
15                 $doc = XML::LibXML::Document->createDocument;
16                 $msg = $doc->createElement( 'message' );
17                 $doc->setDocumentElement( $msg );
18         }
19
20         
21         my $self = { msg_node => $msg };
22
23         return bless $self => $class;
24 }
25
26 sub toString {
27         my $self = shift;
28         if( $self->{msg_node} ) {
29                 return $self->{msg_node}->toString(@_);
30         }
31         return "";
32 }
33
34 sub get_body {
35         my $self = shift;
36         my ($t_body) = grep {$_->nodeName eq 'body'} $self->{msg_node}->childNodes;
37         if( $t_body ) {
38                 my $body = $t_body->textContent;
39                 return $body;
40         }
41         return "";
42 }
43
44 sub get_sess_id {
45         my $self = shift;
46         my ($t_node) = grep {$_->nodeName eq 'thread'} $self->{msg_node}->childNodes;
47         if( $t_node ) {
48                 return $t_node->textContent;
49         }
50         return "";
51 }
52
53 sub get_msg_type {
54         my $self = shift;
55         $self->{msg_node}->getAttribute( 'type' );
56 }
57
58 sub get_remote_id {
59         my $self = shift;
60
61         #
62         my $rid = $self->{msg_node}->getAttribute( 'router_from' );
63         return $rid if $rid;
64
65         return $self->{msg_node}->getAttribute( 'from' );
66 }
67
68 sub setType {
69         my $self = shift;
70         $self->{msg_node}->setAttribute( type => shift );
71 }
72
73 sub setTo {
74         my $self = shift;
75         $self->{msg_node}->setAttribute( to => shift );
76 }
77
78 sub setThread {
79         my $self = shift;
80         $self->{msg_node}->appendTextChild( thread => shift );
81 }
82
83 sub setBody {
84         my $self = shift;
85         my $body = shift;
86         $self->{msg_node}->appendTextChild( body => $body );
87 }
88
89 sub set_router_command {
90         my( $self, $router_command ) = @_;
91         if( $router_command ) {
92                 $self->{msg_node}->setAttribute( router_command => $router_command );
93         }
94 }
95 sub set_router_class {
96         my( $self, $router_class ) = @_;
97         if( $router_class ) {
98                 $self->{msg_node}->setAttribute( router_class => $router_class );
99         }
100 }
101
102 1;