Net::Gadu.3pm

Langue: en

Version: 2007-04-22 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

NAME

Net::Gadu - Interfejs do biblioteki libgadu.so dla protokoXu Gadu-Gadu

DESCRIPTION

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

DOWNLOAD

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

SUBVERSION

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

METHODS

Dostepne metody :
$gg = new Net::Gadu()
     opcjonalny parametr :
     server => "11.11.11.11"  (ip alternatywnego serwera)
     async => 1 lub 0   (komunikacja asynchroniczna lub nie)
 
 
$gg->login(uin, password);
Polaczenie z serwerem oraz logowanie do serwera.
$gg->logoff();
Wylogowanie z serwera i zakonczenie sesji.
$gg->send_message(receiver_uin, message);
Wysyla wiadomosc pod wskazany numer UIN.
$gg->send_message_chat(receiver_uin, message);
Wysyla wiadomosc 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()
MoA°Xesz uA°Xyc tej funkcji w celu poinformowania serwera, A°Xe chcesz znaA.X status danej osoby i czekaA.X 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())
$gg->remove_notify()
MoA°Xesz uA°Xyc tej funkcji w celu poinformowania serwera, A°Xe nie chcesz otrzymywac zdarzen zwiazanych ze zmiana statusu od tej osoby.
$gg->change_status();
Zmiana statusu mozliwa na jeden z:
     $Net::Gadu::STATUS_NOT_AVAIL
     $Net::Gadu::STATUS_AVAIL
     $Net::Gadu::STATUS_BUSY
     $Net::Gadu::STATUS_INVISIBLE
 
 
$gg->change_status_descr();
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
 
 
$gg->search($uin,$nickname,$first_name,$last_name,$city,$gender,$active)
     Wyszukiwanie, jesli parametr ma wartoXae "", czyli pustX wtedy to pole nie
     jest brane pod uwage podczas wyszukiwania.
     Zwracana jest tablica ze szczegoXowymi informacjami.
     OdpowiedX naleXy odebraae po otrzymaniu zdarzenia $Net::Gadu::EVENT_SEARCH_REPLY.
     PrzykXadowe uXycie oraz wynik znajdujX sie w przykXadowym
     programie "ex/ex1" dostarczanym wraz ze XrodXami.
 
     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
 
 

EXAMPLES

#!/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) {
         }
     }
 }
 
 

AUTHOR

Marcin KrzyXanowski, http://www.hakore.com/

LICENCE

Lesser General Public License

SEE ALSO

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