libgadu
1.12.2
|
Wyliczenia | |
enum | { GG_PUBDIR50_UIN, GG_PUBDIR50_STATUS, GG_PUBDIR50_FIRSTNAME, GG_PUBDIR50_LASTNAME, GG_PUBDIR50_NICKNAME, GG_PUBDIR50_BIRTHYEAR, GG_PUBDIR50_CITY, GG_PUBDIR50_GENDER, GG_PUBDIR50_ACTIVE, GG_PUBDIR50_START, GG_PUBDIR50_FAMILYNAME, GG_PUBDIR50_FAMILYCITY } |
Rodzaj pola zapytania. Więcej... | |
enum | { GG_PUBDIR50_GENDER_FEMALE, GG_PUBDIR50_GENDER_MALE } |
Wartość pola GG_PUBDIR50_GENDER przy wyszukiwaniu. Więcej... | |
enum | { GG_PUBDIR50_GENDER_SET_FEMALE, GG_PUBDIR50_GENDER_SET_MALE } |
Wartość pola GG_PUBDIR50_GENDER przy wysyłaniu informacji o sobie. Więcej... | |
enum | { GG_PUBDIR50_ACTIVE_TRUE } |
Wartość pola GG_PUBDIR50_ACTIVE. Więcej... | |
enum | { GG_PUBDIR50_WRITE, GG_PUBDIR50_READ, GG_PUBDIR50_SEARCH, GG_PUBDIR50_SEARCH_REPLY } |
Rodzaj zapytania lub odpowiedzi katalogu publicznego. Więcej... | |
Funkcje | |
gg_pubdir50_t | gg_pubdir50_new (int type) |
Tworzy nowe zapytanie katalogu publicznego. Więcej... | |
int | gg_pubdir50_add (gg_pubdir50_t req, const char *field, const char *value) |
Dodaje pole zapytania. Więcej... | |
int | gg_pubdir50_seq_set (gg_pubdir50_t req, uint32_t seq) |
Ustawia numer sekwencyjny zapytania. Więcej... | |
void | gg_pubdir50_free (gg_pubdir50_t s) |
Zwalnia zasoby po zapytaniu lub odpowiedzi katalogu publicznego. Więcej... | |
uint32_t | gg_pubdir50 (struct gg_session *sess, gg_pubdir50_t req) |
Wysyła zapytanie katalogu publicznego do serwera. Więcej... | |
const char * | gg_pubdir50_get (gg_pubdir50_t res, int num, const char *field) |
Pobiera pole z odpowiedzi katalogu publicznego. Więcej... | |
int | gg_pubdir50_count (gg_pubdir50_t res) |
Zwraca liczbę wyników odpowiedzi. Więcej... | |
int | gg_pubdir50_type (gg_pubdir50_t res) |
Zwraca rodzaj zapytania lub odpowiedzi. Więcej... | |
uin_t | gg_pubdir50_next (gg_pubdir50_t res) |
Zwraca numer, od którego należy rozpocząc kolejne wyszukiwanie. Więcej... | |
uint32_t | gg_pubdir50_seq (gg_pubdir50_t res) |
Zwraca numer sekwencyjny zapytania lub odpowiedzi. Więcej... | |
Funkcje katalogu publicznego pozwalają wyszukiwać znajomych oraz manipulować informacjami o sobie (imię, nazwisko, miejscowość, rok urodzenia itd.). Każda operacja na katalogu publicznym wymaga skonstruowania odpowiedniego zapytania do serwera i ewentualnej obsłudze odpowiedzi.
Wyszukiwanie może wyglądać następująco:
Jak widać, gg_pubdir50_new()
tworzy obiekt opisujący operację katalogu, gg_pubdir50_add()
dodaje kolejne pola zapytania. Pole zapytania jest w rzeczywiści stałą tekstową, np. GG_PUBDIR50_UIN
to "FmNumber"
. Należy pamiętać, że wszystkie argumenty są tekstami, ale nie trzeba się przejmować alokacją pamięci — biblioteka zapamięta to, co jest potrzebne. Kodowanie tekstów jest zgodne z ustawieniem sesji. Na końcu wywołujemy funkcję gg_pubdir50()
, która zwróci numer sekwencyjny wyszukiwania (można zachować dla późniejszego rozróżnienia wyników).
Aby otrzymać wynik, należy obsłużyć zdarzenia GG_EVENT_PUBDIR50_SEARCH_REPLY
, GG_EVENT_PUBDIR50_WRITE
i GG_EVENT_PUBDIR50_READ
. Dla przykładu, obsługa wyników wyszukiwania wygląda następująco:
Jeśli chcemy wiedzieć, od jakiego numeru zacząć wyszukiwanie, żeby dostać dalszą część, używamy gg_pubdir50_next()
. Numer sekwencyjny otrzymamy dzięki funkcji gg_pubdir50_seq()
.
gg_pubdir50_t
, ponieważ mogą się zmieniać między wersjami biblioteki. Dzięki odwoływaniu się przez funkcje, mamy pewność, że bez względu na zmiany API/ABI otrzymamy to samo. Dodatkowo, jeśli pojawią się nowe pola, wystarczy odwoływać się do nich tak jak do obecnych, za pomocą funkcji gg_pubdir50_add()
i gg_pubdir50_get()
. anonymous enum |
Rodzaj pola zapytania.
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
Rodzaj zapytania lub odpowiedzi katalogu publicznego.
gg_pubdir50_t gg_pubdir50_new | ( | int | type | ) |
Tworzy nowe zapytanie katalogu publicznego.
type | Rodzaj zapytania |
gg_pubdir50_t
lub NULL
w przypadku błędu. int gg_pubdir50_add | ( | gg_pubdir50_t | req, |
const char * | field, | ||
const char * | value | ||
) |
Dodaje pole zapytania.
req | Zapytanie |
field | Nazwa pola |
value | Wartość pola |
int gg_pubdir50_seq_set | ( | gg_pubdir50_t | req, |
uint32_t | seq | ||
) |
Ustawia numer sekwencyjny zapytania.
req | Zapytanie |
seq | Numer sekwencyjny |
void gg_pubdir50_free | ( | gg_pubdir50_t | s | ) |
Zwalnia zasoby po zapytaniu lub odpowiedzi katalogu publicznego.
s | Zapytanie lub odpowiedź |
uint32_t gg_pubdir50 | ( | struct gg_session * | sess, |
gg_pubdir50_t | req | ||
) |
Wysyła zapytanie katalogu publicznego do serwera.
sess | Struktura sesji |
req | Zapytanie |
const char* gg_pubdir50_get | ( | gg_pubdir50_t | res, |
int | num, | ||
const char * | field | ||
) |
Pobiera pole z odpowiedzi katalogu publicznego.
res | Odpowiedź |
num | Numer wyniku odpowiedzi |
field | Nazwa pola (wielkość liter nie ma znaczenia) |
NULL
jeśli nie znaleziono int gg_pubdir50_count | ( | gg_pubdir50_t | res | ) |
Zwraca liczbę wyników odpowiedzi.
res | Odpowiedź |
int gg_pubdir50_type | ( | gg_pubdir50_t | res | ) |
Zwraca rodzaj zapytania lub odpowiedzi.
res | Zapytanie lub odpowiedź |
uin_t gg_pubdir50_next | ( | gg_pubdir50_t | res | ) |
Zwraca numer, od którego należy rozpocząc kolejne wyszukiwanie.
Dłuższe odpowiedzi katalogu publicznego są wysyłane przez serwer w mniejszych paczkach. Po otrzymaniu odpowiedzi, jeśli numer kolejnego wyszukiwania jest większy od zera, dalsze wyniki można otrzymać przez wywołanie kolejnego zapytania z określonym numerem początkowym.
res | Odpowiedź |
uint32_t gg_pubdir50_seq | ( | gg_pubdir50_t | res | ) |
Zwraca numer sekwencyjny zapytania lub odpowiedzi.
res | Zapytanie lub odpowiedź |