Net::Gadu - Interfejs do biblioteki libgadu.so dla protoko³u Gadu-Gadu
Wykorzystuje biblioteke libgadu.so ktora jest czescia projektu EKG. Aby zaintalowac libgadu.so nalezy skompilowac EKG z opcja --with-shared. Jesli uzywasz EKG z pakietu prawdopodobnie biblioteka ta zostala zainstalowana. Szczegolowe informacje znajdziesz na stronie projektu EKG - http://ekg.chmurka.net/ Do zbudowania pakietu potrzeba jest zainstalowana biblioteka z prefixem /usr lub /usr/local , jesli lokalizacja jest niestandardowa mozna wyedytowac plik Makefile.PL podajac wlasciwe lokalizacje
http://www.cpan.org/modules/by-module/Net/Net-Gadu-1.8.tar.gz
$ svn co http://svn.hakore.com/netgadu/trunk
Dostepne metody :
opcjonalny parametr : server => "11.11.11.11" (ip alternatywnego serwera) async => 1 lub 0 (komunikacja asynchroniczna lub nie)
Polaczenie z serwerem oraz logowanie do serwera.
Wylogowanie z serwera i zakonczenie sesji.
Wysyla wiadomosc pod wskazany numer UIN.
Ustawia status na dostepny. Podobne funkcje : set_busy(), set_invisible(), set_not_available(), change_status().
Możesz użyc tej funkcji w celu poinformowania serwera, że chcesz znać status danej osoby i czekać na zdarzenia zwiazane ze zmiana statusu. Zaczynaja dochodzic zdarzenia EVENT_NOTIFY,EVENT_NOTIFY60 gdy ktos sie pojawi oraz EVENT_STATUS,EVENT_STATUS60 gdy ktos zmieni status (patrz opis get_event())
Możesz użyc tej funkcji w celu poinformowania serwera, że nie chcesz otrzymywac zdarzen zwiazanych ze zmiana statusu od tej osoby.
Zmiana statusu mozliwa na jeden z:
$Net::Gadu::STATUS_NOT_AVAIL $Net::Gadu::STATUS_AVAIL $Net::Gadu::STATUS_BUSY $Net::Gadu::STATUS_INVISIBLE
Zmiana statusu z opisem, mozliwa na jeden z:
$Net::Gadu::STATUS_NOT_AVAIL_DESCR $Net::Gadu::STATUS_AVAIL_DESCR $Net::Gadu::STATUS_BUSY_DESCR $Net::Gadu::STATUS_INVISIBLE_DESCR
Wyszukiwanie, jesli parametr ma warto¶æ "", czyli pust± wtedy to pole nie jest brane pod uwagê podczas wyszukiwania. Zwracana jest tablica ze szczego³owymi informacjami. Odpowied¼ nale¿y odebraæ po otrzymaniu zdarzenia $Net::Gadu::EVENT_SEARCH_REPLY. Przyk³adowe u¿ycie oraz wynik znajduj± siê w przyk³adowym programie "ex/ex1" dostarczanym wraz ze ¼ród³ami. Uwaga: $gender = "male" lub "female" lub "none") $active = 1 lub 0
Sprawdza czy zaszlo jakies zdarzenie (szczegolnie istotne przydatne przy polaczeniu asynchronicznym)
Zwraca informacje o zdarzeniu ktore mialo miejsce, zwracany jest hasz np : $e = $gg_event(); $e->{type} zawiera kod ostatniego zdarzenia $Net::Gadu::EVENT_MSG $e->{message} # tresc wiadomosci $e->{sender} # uin wysylajacego $e->{msgclass} # typ wiadomosci $Net::Gadu::EVENT_ACK # potwierdzenie wyslania wiadomosci $e->{recipient} $e->{status} $e->{seq} $Net::Gadu::EVENT_STATUS # zmiana statusu (wersja klienta Gadu-Gadu < 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_STATUS60 # zmiana statusu (wersja klienta Gadu-Gadu >= 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_NOTIFY # informacja o pojawieniu sie kogos (wersja klienta Gadu-Gadu < 6.0) $e->{uin} $e->{status} $Net::Gadu::EVENT_NOTIFY_DESCR # informajca o pojawieniu sie kogos, z opisem (wersja klienta Gadu-Gadu < 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_NOTIFY60 # informacja o pojawieniu sie kogos (wersja klienta Gadu-Gadu >= 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_SEARCH_REPLY $e->{results} Dostepne kody zdarzen : $Net::Gadu::EVENT_NONE $Net::Gadu::EVENT_MSG $Net::Gadu::EVENT_NOTIFY $Net::Gadu::EVENT_NOTIFY_DESCR $Net::Gadu::EVENT_NOTIFY60 $Net::Gadu::EVENT_STATUS $Net::Gadu::EVENT_STATUS60 $Net::Gadu::EVENT_ACK $Net::Gadu::EVENT_PONG $Net::Gadu::EVENT_CONN_FAILED $Net::Gadu::EVENT_CONN_SUCCESS $Net::Gadu::EVENT_DISCONNECT $Net::Gadu::EVENT_SEARCH_REPLY
#!/usr/bin/perl
use Net::Gadu; use Data::Dumper;
my $gg = new Net::Gadu(async=>1);
## LOGIN $gg->login("1234567","password") or die "Login error\n";
## EVENTS(this example, after successful login change status, send message and logout while (1) { while ($gg->check_event() == 1) {
my $e = $gg->get_event(); my $type = $e->{type}; if ($type == $Net::Gadu::EVENT_CONN_FAILED) { die "Connection failed"; } if ($type == $Net::Gadu::EVENT_NOTIFY60) { print "EVENT_NOTIFY60 from ".$e->{uin}."\n" ; } if ($type == $Net::Gadu::EVENT_STATUS60) { print "EVENT_STATUS60 from ".$e->{uin}.", status ".$e->{status}."\n" ; } if ($type == $Net::Gadu::EVENT_DISCONNECT) { die "disconnect"; } if ($type == $Net::Gadu::EVENT_CONN_SUCCESS) { $gg->set_available(); # notify server that you want to receive status notifications $gg->add_notify("42112"); # Send THANKS to author $gg->send_message_chat("42112","dziekuje za Net::Gadu"); # SEARCH INIT $gg->search("","krzak","","","","male",0); } if ($type == $Net::Gadu::EVENT_MSG) { print $e->{message}." ".$e->{sender}."\n"; } if ($type == $Net::Gadu::EVENT_SEARCH_REPLY) { # SEARCH RESULT print Dumper($e->{results}); #$gg->logoff(); #exit(1); } if ($type == $Net::Gadu::EVENT_ACK) { } } }
Marcin Krzy¿anowski, http://www.hakore.com/
Lesser General Public License
http://www.gadu-gadu.pl/ http://ekg.chmurka.net/ http://www.gnugadu.org/ http://www.hakore.com/
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'protoko³u'. Assuming CP1252
To install Net::Gadu, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Gadu
CPAN shell
perl -MCPAN -e shell install Net::Gadu
For more information on module installation, please visit the detailed CPAN module installation guide.