ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/Net-XMPP2/lib/Net/XMPP2/IM/Presence.pm
Revision: 1.2
Committed: Fri Apr 20 14:56:45 2007 UTC (19 years, 7 months ago) by elmex
Branch: MAIN
Changes since 1.1: +12 -0 lines
Log Message:
implemented Client.pm. Implemented error objects which simplyfied
the error reporting.

File Contents

# User Rev Content
1 elmex 1.1 package Net::XMPP2::IM::Presence;
2     use strict;
3     use Net::XMPP2::Util;
4     use Net::XMPP2::IM::Message;
5    
6     sub new {
7     my $this = shift;
8     my $class = ref($this) || $this;
9     bless { @_ }, $class;
10     }
11    
12 elmex 1.2 sub clone {
13     my ($self) = @_;
14     my $p = $self->new (connection => $self->{connection});
15     $p->_set (
16     show => $self->{show},
17     jid => $self->{jid},
18     priority => $self->{priority},
19     status => $self->{status},
20     );
21     $p
22     }
23    
24 elmex 1.1 sub _set {
25     my ($self, %data) = @_;
26     $self->{show} = $data{show} || '';
27     $self->{priority} = $data{priority};
28     $self->{status} = $data{status};
29     }
30    
31     sub jid { $_[0]->{jid} }
32    
33     sub priority { $_[0]->{priority} }
34    
35     sub status_all_lang {
36     my ($self, $jid) = @_;
37     keys %{$self->{status} || []}
38     }
39    
40     sub show { $_[0]->{show} }
41    
42     sub status {
43     my ($self, $lang) = @_;
44    
45     if (defined $lang) {
46     return $self->{status}->{$lang}
47     } else {
48     return $self->{status}->{''}
49     if defined $self->{status}->{''};
50     return $self->{status}->{en}
51     if defined $self->{status}->{en};
52     }
53    
54     undef
55     }
56    
57     sub make_message {
58     my ($self) = @_;
59     Net::XMPP2::IM::Message->new (
60     connection => $self->{connection},
61     to => $self->jid
62     );
63     }
64    
65     sub debug_dump {
66     my ($self) = @_;
67     printf " * %-30s [%-5s] (%3d) {%s}\n",
68     $self->jid,
69     $self->show || '',
70     $self->priority || 0,
71     $self->status || '',
72     }
73    
74     1;