# *** dokumentacija gimsisextClient rest api endpointa -- Anton L. Šijanec -- sijanec/gimsisextclient endpoint je testno javno dostopen na http://gimb.tk/test.php to je testni endpoint in ni namenjen produkcijskim okoljem, nanj se ne zanašajte. če res zanesljiv api endpoint, ga morate gostovati sami. uporaba: splošno: parametre pošiljate v skladu s URL formatom (RFC2616) citat iz RFC6920: Query Parameter separator '?': The query parameter separator acts as a separator between the digest value and the query parameters (if specified). For compatibility with Internationalized Resource Identifiers (IRIs), non-ASCII characters in the query part MUST be encoded as UTF-8, and the resulting octets MUST be percent-encoded (see [RFC3986], Section 2.1). Query Parameters: A "tag=value" list of optional query parameters as are used with HTTP URLs [RFC2616] with a separator character '&' between each. For example, "foo=bar&baz=bat". Query paramater seperator uporabljajte le pri GET zahtevah: https://gimb.tk/test.php?ime=vrednost&ime2=vrednost2 in ne pri POST: nepravilno: POST /test.php HTTP/1.1 Host: gimb.tk Accept: */* Content-Length: xxx ?ime=vrednost&ime2=vrednost2 pravilno: POST /test.php HTTP/1.1 Host: gimb.tk Accept: */* Content-Length: xxx-1 ime=vrednost&ime2=vrednost2 arrayi: arraye pošiljate z ime[] formatom. $a=array(1,2,3) bi bil a[]=1&a[]=2&a[]=3, ali pa a[0]=1&a[1]=2&a[2]=3. seveda lahko uporabljate tudi ključe arrayev. $b=array("a"=>"b") bi bil b[a]=b napake: napake sintakse se ne pošiljajo, ob napaki dobite le prazno stran: mogoče dobite HTTP error 500, kar pa je odvisno od php-fpm nastavitev ves stdout output klase gimsisextClient pa dobite. -1 no login info -2 not logged in -3 bad password but user exists -4 not written yet -5 unable to create cookie dir -6 non existing user avtentikacija: avtenticirate se za vsako zahtevo, saj se piškotni *NE* uporabljajo (juhu!-meni se to zdi dobra ideja) uporabniško ime: ime:u vresnost:uporabniško ime geslo: ime:p vrednost:geslo primer GET: GET /test.php?u=username&p=password&ostali=parametri HTTP/1.1 metode objekta: klic na določeno metodo. zahtevi dodate spremenljivko m=metoda. primer GET za metodo fetchurnik: GET /test.php?u=username&p=password&m=fetchurnik&ostali=parametri HTTP/1.1 podajanje parametrov/argumentov: ime parametra funkcija določi po zaporedju, v zahtevi jih pošljete kot individualne vrednosti a, b, c, d, ... . primer GET za metodo posljisporocilo, ko uporabnikust 5313 (Rok Štular) pošljemo sporočilo z zadevo EHLO in telesom ehlo from api GET /test.php?u=username&p=password&m=posljisporocilo&a=5313&b=EHLO&c=%3Cb%3Eehlo%20from%20api%3C%2Fb%3E HTTP/1.1 pomemben namig: kot je razvidno iz primera, morate parametre ustrezno url šifirati. v PHP jeziku lahko uporabite urlencode($telo) metode (velja za gimsisextClient verzije 0.8.0): spodaj je seznam metod z njihovimi parametri. metode (če je pri parametru = in neka vrednost, bo na to vrednost nastavljen argument v primeru neizpolnitve): ime metode;parametri;opombe fetchurnik;datum=null,datum je niz datuma ponedeljka želenega tedna v formatu 21.10.2019. Ob nenavedbi datuma bo izbran trenutni teden. fetchocenjevanja;;samoumevno fetchprofesorji;;samoumevno fetchprofil;;samoumevno, glej setprofil setprofil;ime,priimek,spol,eposta,obvestila,telefon);spol: "M"/"Ž" obvestila: "true"/"false" telefon: +tccpndddddd (npr. +38664176345)-od verzije zgimsisa 1.0.7226.34224 se da spreminjati le telefonsko. glej fetchabout fetchabout;;podatke o gimssiext programu-pove tudi, katera vezija zgimsisa se poganja. fetchneprebrana;;vrne število neprebranih sporočil. ta števec je čuden, jaz se ne bi zanašal nanj, raje bi bral naprej in uporabil spodnjo metodo fetchsporocilaseznam;katera;katera: 0=prejeta 1=poslana 2=izbrisana, id: int|int|bool, kjer je bool status prebranosti sporočila (1=prebrano) fetchsporocilo;id;id sporocila je v gimsisext formatu IdMsg /al' kakorkol' je že/, int|int|bool posljisporocilo;userid,zadeva,telo;userid je zajeban' dobit', kmalu bomo leakal useridje, vedno vrne null. HTML oznake morajo biti prevedene iz < in > v < in >, ampak se bodo (samo v telesu, v zadevi ne) prevedle nazaj v < in >, tako da lahko na primer poganjamo skripte, čisto casually. setgeslo;geslo,spremenigeslovobjektu;geslo je seveda novo geslo, spremenigeslovobjektu pa za uporabnike apija ni pomemben. NI POMEMBEN! NI PAČ, kaj te briga kaj nardi?!?!?!?!!1111! izbrisisporocilo;id;id je IdMsg|IdZapis. sporocilo bo premaknjeno med izbrisana sporocila/fetchsporocilaseznam(2) getversion;;vrne array(major, minor, patch) verzijo klase fetchizostanki;datzacetka,datkonca;datzacetka in dankonca določita tajmspen v katerem naj vrne izostanke. formata d.m.Y (npr. 13.10.1971) ali pa array(24, 21, 1969) resetpassword;user;ne potrebuje prijave, vrne e-mail uporabnika ali -6 (user ne obstaja) that's all folks << EOF