Author image Marcin Krzyżanowski
and 1 contributors

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