6.2 Katalog publiczny

Każda sieć dowolnego, współczesnego komunikatora posiada miejsce, gdzie przechowywane są ogólnodostępne dane o użytkownikach. Każdy użytkownik ma możliwość edycji swoich danych oraz och usunięcia, jeśli w takowym katalogu nie chce się znajdować.

W tym rozdziale opowiemy o katalogu publicznym dostępnym w sieci komunikatora Tlen.pl.

Z uwagi, że w całej funkcjonalności katalogu publicznego niektóre elementy będą ciągle wykorzystywane, dlatego poniżej przedstawiono znaczenie tych tagów wraz z wartościami, jakie mogą one przyjąć.

Elementy last, first, nick i email chyba nie wymagają wyjaśnienia, c określa miejscowość, a tag e szkołe/uczelnie, zawartość wymienionych tu tagów kodowana jest algorytmem urlencode.

Element b zawiera rok urodzenia.

Element s określa płeć, może on przyjmować jeden z trzech wartości:

wartośćopis
0nieustawione
1mężczyzna
2kobieta

Tag r – poszukuję:

wartośćopis
0nieustawione
1kogoś do rozmowy
2przyjaźni
3flirtu/romansu
4miłości
5niczego nie szukam

Element j określa wykonywany zawód:

wartośćopis
0nieustawione
1uczeń
2student
3rolnik
4menedżer
5specjalista/wolny zawód
6urzędnik/usługi/administracja
7bezrobotny
8emeryt/rencista
9gospodyni domowa
10nauczyciel
11lekarz
12inny

Element p - "Dziś mam ochotę na..." lub "Moje plany na dziś...":

wartośćopis
0nieustawione
1mam ochotę wyjść do miasta
2mam ochotę wyjść do kina
3mam ochotę wyjść na spacer
4mam ochotę wyjść na dyskotekę
5mam ochotę wyjść na randkę w ciemno
6czekam na propozycję
7nie mam na nic ochoty

Element ten jest poniekąd deprecated, a dokładniej - istnieje specjalna funkcja do ustalania tylko tej wartości, ale nie jest ona używana już w oficjalnym kliencie, więcej informacji w rozdziale Deprecated.

Element v określa, czy pokazywać mój stan w katalogu użytkowników, tag g - mam możliwość rozmowy głosowej, a k, czy mam podłączoną kamerkę video. Elementy te przyjmują wartości:

wartośćopis
0nie
1tak

6.2.1 Odczyt danych

Odczyt swoich danych dokonujemy wysyłając żądanie:

<iq type="get" id="tr" to="tuba">
    <query xmlns="jabber:iq:register"/>
</iq>

Serwer zwróci nam dane o jakie prosiliśmy:

<iq type="result" to="malcom@tlen.pl" from="tuba" id="tr">
    <query xmlns="jabber:iq:register">
        <item>
            <first>imie</first><last>nazwisko</last>
            <nick>nick</nick><email>email</email>
            <c>miesjcowosc</c><b>1984</b><s>1</s><e>szkola</e>
            <r>1</r><j>12</j><p>0</p><v>0</v><g>1</g><k>1</k>
        </item>
    </query>
</iq>

Elementy puste lub zerowe, mogą zostać pominięte w odpowiedzi.

6.2.2 Zapis danych

Zapis danych w katalogu dokonujemy wysyłając pakiet:

<iq type="set" id="tw" to="tuba">
    <query xmlns="jabber:iq:register">
        <first>imie</first><last>nazwisko</last><nick>nick</nick>
        <email>email</email><c>miesjcowosc</c><b>1984</b><s>1</s>
        <e>szkola</e><r>1</r><j>12</j><v>0</v><g>1</g><k>1</k>
    </query>
</iq>

Elementy, które mają zostać puste lub przyjąć wartości zerowe można pominąć.

Potwierdzenie otrzymane od serwera:

<iq type="result" to="malcom@tlen.pl" from="tuba" id="tw">
    <query xmlns="jabber:iq:register"/>
</iq>

6.2.3 Usuwanie danych

Chcąc usunąć z katalogu publicznego nasze dane wysyłamy do serwera pakiet:

<iq type="set" id="tc" to="tuba">
    <query xmlns="jabber:iq:register">
        <remove/>
    </query>
</iq>

Serwer potwierdza usuniecie naszych danych:

<iq type="result" to="malcom@tlen.pl" from="tuba" id="tc">
    <query xmlns="jabber:iq:register"/>
</iq>

Usuniecie danych skutkuje tym, że przy próbie pobierania naszych danych otrzymamy puste i zerowe wartości elementów.
Taki sam efekt można uzyskać wysyłając pakiet taki pakiet zapisania danych:

<iq type="set" id="tw" to="tuba">
    <query xmlns="jabber:iq:register"/>
</iq>

6.2.4 Szukanie kontaktów

Czym byłby katalog publiczny bez możliwości szukania i przeglądania w nim danych.

Szukanie kontaktów w katalogu publicznym możliwe jest na dwa sposoby. Podając login tlenowy lub nick, wiek, miejscowość, itd..

Szukanie podając login dokonujemy wysyłając pakiet:

<iq type="get" id="src" to="tuba">
    <query xmlns="jabber:iq:search">
        <i>malcom</i>
    </query>
</iq>

Login szukanej osoby zawarty jest w tagu i, dokładniej to sam identyfikator, bez @ tlen.pl.

Szukanie w katalogu przy podaniu informacji typu: nick, wiek, miejscowość, itd., realizowane jest podobnym pakietem:

<iq type="get" id="src" to="tuba">
    <query xmlns="jabber:iq:search">
        <first>imie</first><last>nazwisko</last><nick>nick</nick>
        <email>email</email><c>miejscowosc</c><d>1</d><u>2</u>
        <e>szkola</e><m>2</m><g>1</g><k>1</k>
    </query>
</iq>

Znaczenie większości elementów jest nam znane, prócz kilku nowych, które używane są w procesie szukania.

Elementy d i u, określają przedział wieku szukanego kontaktu, odpowiednio od i do, czyli dolną i górną granice wieku.

Tag m określa stan szukanego kontaktu:

wartośćopis
brakwszyscy ludzie
0j/w (nigdy nie wysyłana)
1j/w (nigdy nie wysyłana)
2tylko ludzie on-line

Jeśli znaleziono w katalogu kontakty spełniające podane przez nas kryteria otrzymamy wynik:

<iq type="result" to="malcom@tlen.pl" from="tuba" id="src">
    <query xmlns="jabber:iq:search">
        <item jid="andrej2">
            <first>Andrzej</first><last>Kowalski</last>
            <nick>andrej</nick><email>andrej@domena.com</email>
            <a>6</a><c>Warszawa</c><b>47</b><s>1</s><r>3</r>
            <j>4</j><k>1</k>
        </item>
        <item jid="ala210s">
            <a>6</a><g>1</g>
        </item>
        <item jid="civic-77">
            <first>Darek</first><nick>Majk</nick><a>6</a>
            <c>Krak%F3w</c><b>15</b><s>1</s>
            <e>Gimnazjum+Nr.+77+</e><j>1</j><g>1</g>
        </item>
    </query>
</iq>

W przypadku, gdy nie znaleziono żadnego kontaktu otrzymamy pakiet:

<iq type="result" to="malcom@tlen.pl" from="tuba" id="src">
    <query xmlns="jabber:iq:search"/>
</iq>

W wynikach pojawia się dwa nowe elementy – a i b

Tag a mówi o statusie danego kontaktu:

wartośćopis
brakniedostępny
0j/w (nigdy nie odebrana)
1j/w (nigdy nie odebrana)
2dostępny
3wrócę później
4zaraz wracam
5zajęty
6porozmawiajmy

Element b zawiera wiek danego kontaktu.

Standardowo serwer zwraca w wyniku maksymalnie 20 pozycji. Odebranie kolejnej paczki kontaktów (przejście do następnej "strony") uzyskujemy wysyłając powtórnie pakiet szukania wzbogacony o element j, który określa liczbowo, od którego kontaktu chcemy otrzymać wyniki.

Na przykład, pobranie listy wyników dla szukania kontaktu o nicku "ala" poczynając od 20 pozycji, będzie wyglądało tak:

<iq type="get" id="src" to="tuba">
    <query xmlns="jabber:iq:search">
        <nick>ala</nick><f>20</f>
    </query>
</iq>

6.2.5 Wizytówka

Wizytówka, funkcja dostępna spod menu kontaktu, pobierającą informacje publicznego danym kontakcie z katalogu publicznego. Taki sam efekt można uzyskać wysyłając pakiet szukania przy podaniu logiku tlenowego. Kiedyś tak to się odbywało, ale od wersji 8/9 protokołu wprowadzono małe modyfikacje - id przyjmuje "specjalną" wartość.

Podobnie zrobiono w przypadku pobierania danych kontaktu do ToolTipa, przy najechaniu kursorem na dany kontakt. Tutaj tak samo używany jest "specjalny" id.

Wyniki otrzymywane od serwera są takie jak w zwykłym szukaniu, tylko id przyjmuje inna wartość.

Przykład pobierania wizytówki dla kontaktu o loginie abcd@tlen.pl:

<iq type="get" id="src3@abcd" to="tuba">
    <query xmlns="jabber:iq:search">
        <i>malcom</i>
    </query>
</iq>

Dane otrzymane od serwera:

<iq type="result" to="malcom@tlen.pl" from="tuba" id="src3@abcd">
    <query xmlns="jabber:iq:search">
        <item jid="abcd">
            <first>Andrzej</first><a>6</a>
            <c>Warszawa</c><b>23</b><s>1</s>
        </item>
    </query>
</iq>

Tę stronę ostatnio zmodyfikowano 10 sierpnia 2007 11:28:50