NAME
Net::Gadu - Interfejs do biblioteki libgadu.so dla protokołu komunikatora Gadu-Gadu
DESCRIPTION
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ę.
DOWNLOAD
http://www.cpan.org/modules/by-module/Net/Net-Gadu-1.9.tar.gz
SUBVERSION
$ svn co http://svn.hakore.com/netgadu/
METHODS
Dostepne metody :
- $gg = new Net::Gadu()
-
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)
- $gg->login($uin, $password, $initial_status);
-
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)
- $gg->logoff();
-
Wylogowanie z serwera i zakończenie sesji.
- $gg->send_message($receiver_uin, $message);
-
Wysyła wiadomość pod wskazany numer UIN.
- $gg->send_message_chat($receiver_uin, $message);
-
Wysyła wiadomość pod wskazany numer UIN.
- $gg->set_available();
-
Ustawia status na dostepny. Podobne funkcje : set_busy(), set_invisible(), set_not_available(), change_status().
- $gg->add_notify($uin)
-
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())
- $gg->remove_notify($uin)
-
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
- $gg->change_status($status);
-
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
- $gg->change_status_descr($status, $descr);
-
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
- $gg->search($uin,$nickname,$first_name,$last_name,$city,$gender,$active)
-
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
- $gg->check_event()
-
Sprawdza czy zaszlo jakies zdarzenie (szczegolnie istotne przydatne przy polaczeniu asynchronicznym)
- $gg->get_event()
-
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
EXAMPLES
#!/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";
}
}
}
AUTHOR
Marcin Krzyżanowski, http://www.hakore.com/
LICENCE
Lesser General Public License v. 2
SEE ALSO
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:
- Around line 190:
Non-ASCII character seen before =encoding in 'protokołu'. Assuming UTF-8