ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/Net-XMPP2/lib/Net/XMPP2/Error/Stanza.pm
Revision: 1.1
Committed: Thu Jul 5 17:33:59 2007 UTC (19 years, 3 months ago) by elmex
Branch: MAIN
CVS Tags: HEAD
Log Message:
fixed some broken links in the documentation and moved errors
to seperate files.

File Contents

# Content
1 package Net::XMPP2::Error::Stanza;
2 use Net::XMPP2::Error;
3 our @ISA = qw/Net::XMPP2::Error/;
4
5 =head1 NAME
6
7 Net::XMPP2::Error::Stanza - Stanza errors
8
9 Subclass of L<Net::XMPP2::Error>
10
11 =cut
12
13 sub init {
14 my ($self) = @_;
15 my $node = $self->xml_node;
16
17 unless (defined $node) {
18 $self->{error_cond} = 'client-timeout';
19 $self->{error_type} = 'cancel';
20 return;
21 }
22
23 my @error;
24 my ($err) = $node->find_all ([qw/client error/]);
25
26 unless ($err) {
27 warn "No error element found in error stanza!";
28 $self->{text} = "Unknown Stanza error";
29 return
30 }
31
32 $self->{error_type} = $err->attr ('type');
33 $self->{error_code} = $err->attr ('code');
34
35 if (my ($txt) = $err->find_all ([qw/stanzas text/])) {
36 $self->{error_text} = $txt->text;
37 }
38
39 for my $er (
40 qw/bad-request conflict feature-not-implemented forbidden
41 gone internal-server-error item-not-found jid-malformed
42 not-acceptable not-allowed not-authorized payment-required
43 recipient-unavailable redirect registration-required
44 remote-server-not-found remote-server-timeout resource-constraint
45 service-unavailable subscription-required undefined-condition
46 unexpected-request/)
47 {
48 if (my ($el) = $err->find_all ([stanzas => $er])) {
49 $self->{error_cond} = $er;
50 $self->{error_cond_node} = $el;
51 last;
52 }
53 }
54 }
55
56 =head2 METHODS
57
58 =over 4
59
60 =item B<xml_node ()>
61
62 Returns the L<Net::XMPP2::Node> object for this Stanza error.
63 This method returns undef if the Stanza timeouted.
64
65 In the case of a timeout the C<condition> method returns C<client-timeout>,
66 C<type> returns 'cancel' and C<code> undef.
67
68 =cut
69
70 sub xml_node {
71 $_[0]->{node}
72 }
73
74 =item B<type ()>
75
76 This method returns one of:
77
78 'cancel', 'continue', 'modify', 'auth' and 'wait'
79
80 =cut
81
82 sub type { $_[0]->{error_type} }
83
84 =item B<code ()>
85
86 This method returns the error code if one was found.
87
88 =cut
89
90 sub code { $_[0]->{error_code} }
91
92 =item B<condition ()>
93
94 Returns the error condition string if one was found when receiving the Stanza error.
95 It can be undef or one of:
96
97 bad-request
98 conflict
99 feature-not-implemented
100 forbidden
101 gone
102 internal-server-error
103 item-not-found
104 jid-malformed
105 not-acceptable
106 not-allowed
107 not-authorized
108 payment-required
109 recipient-unavailable
110 redirect
111 registration-required
112 remote-server-not-found
113 remote-server-timeout
114 resource-constraint
115 service-unavailable
116 subscription-required
117 undefined-condition
118 unexpected-request
119
120
121 =cut
122
123 sub condition { $_[0]->{error_cond} }
124
125 =item B<condition_node ()>
126
127 Returns the error condition node if one was found when receiving the Stanza error.
128 This is mostly for debugging purposes.
129
130 =cut
131
132 sub condition_node { $_[0]->{error_cond_node} }
133
134 =item B<text ()>
135
136 The humand readable error portion. Might be undef if none was received.
137
138 =cut
139
140 sub text { $_[0]->{error_text} }
141
142 sub string {
143 my ($self) = @_;
144
145 sprintf "stanza error: %s/%s (type %s): %s",
146 $self->code || '',
147 $self->condition || '',
148 $self->type,
149 $self->text
150 }
151
152 =back
153
154 =cut
155
156
157 =head1 AUTHOR
158
159 Robin Redeker, C<< <elmex at ta-sa.org> >>, JID: C<< <elmex at jabber.org> >>
160
161 =head1 COPYRIGHT & LICENSE
162
163 Copyright 2007 Robin Redeker, all rights reserved.
164
165 This program is free software; you can redistribute it and/or modify it
166 under the same terms as Perl itself.
167
168 =cut
169
170 1; # End of Net::XMPP2