
Net::Gadu - Interfejs do biblioteki libgadu.so dla protokoÅu komunikatora Gadu-Gadu

Wykorzystuje bibliotekÄ libgadu.so która jest czÄÅciÄ projektu EKG. SzczegóÅowe informacje na temat instalacji biblioteki Libgadu znajdziesz na stronie projektu EKG - http://ekg.chmurka.net/ .Do zbudowania pakietu Net::Gadu potrzebna jest zainstalowana w systemie biblioteka Libgadu.
Jeżeli biblioteka Libgadu zostaÅa zainstalowana w niestandardowym miejscu w systemie należy wyedytowac plik Makefile.PL podajÄ c wÅaÅciwÄ lokalizacjÄ.

http://www.cpan.org/modules/by-module/Net/Net-Gadu-1.9.tar.gz

$ svn co http://svn.hakore.com/netgadu/

Dostepne metody :
opcjonalny parametr :
async => 1 lub 0 (komunikacja asynchroniczna lub nie)
server => "91.197.13.211" (alternatywne IP serwera Gadu-Gadu. Nie ustawiaj jezeli nie wiesz co to oznacza)
Polaczenie z serwerem oraz logowanie do serwera. Pamietaj aby zaraz po polaczeniu wykonac $gg->notify();
parametry:
$uin = numer Gadu-Gadu
$password = haslo
$initial_status = status ustawiany po polaczeniu (opcjonalny)
Wylogowanie z serwera i zakoÅczenie sesji.
WysyÅa wiadomoÅÄ pod wskazany numer UIN.
WysyÅa wiadomoÅÄ pod wskazany numer UIN.
Ustawia status na dostepny. Podobne funkcje : set_busy(), set_invisible(), set_not_available(), change_status().
parametry:
$uin = numer Gadu-Gady który chcemy obserwowaÄ.
Możesz użyÄ tej funkcji w celu poinformowania serwera, że chcesz znaÄ status danej osoby i otrzymywaÄ zdarzenia zwiazane ze zmianÄ statusu. Od tego momentu zaczynajÄ nadchodziÄ z serwera zdarzenia EVENT_NOTIFY, EVENT_NOTIFY60 zawsze gdy ktoÅ siÄ pojawi oraz EVENT_STATUS,EVENT_STATUS60 gdy ktoÅ zmieni status (patrz opis get_event())
Możesz użyÄ tej funkcji w celu poinformowania serwera, że nie chcesz otrzymywaÄ zdarzeÅ zwiÄ zanych ze zmianÄ statusu od tej osoby.
parametry:
$uin = numer Gadu-Gadu
Zmiana statusu możliwa jest na jeden z:
$Net::Gadu::STATUS_NOT_AVAIL
$Net::Gadu::STATUS_AVAIL
$Net::Gadu::STATUS_BUSY
$Net::Gadu::STATUS_INVISIBLE
parametry:
$status = nowy status
$descr = tekst opisu
Zmiana statusu z opisem możliwa 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
$Net::Gadu::$EVENT_XML_EVENT
$Net::Gadu::$EVENT_WELCOME

#!/usr/bin/perl
use Net::Gadu;
use Data::Dumper;
my $gg = new Net::Gadu(async => 1);
$gg->login("1234567", "password", $Net::Gadu::STATUS_BUSY) or die "Login error\n";
#main loop. In 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) {
print "CONNECTED\n";
#it have to be sent after connect success
$gg->notify();
# 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) {
print "EVENT_ACK\n";
}
}
}

Marcin Krzyżanowski, http://www.hakore.com/

Lesser General Public License v. 2

http://www.gadu-gadu.pl/ http://ekg.chmurka.net/ http://www.gnugadu.org/ http://www.hakore.com/