Closed leiblix closed 9 years ago
Pokud by se neposilalo cele url ale jen uuid, tak bude potreba identifikovat i domenu a kod krameria.
Bud musi kramerius znat mapovani domeny na kod pouzivany klientem, tj. krameriu.mzk.cz -> mzk krameriusndktest.mzk.cz -> ndk kramerius.kr-olomoucky.cz -> vkol atd.. Nebo bude kod jako dalsi parametr requestu pro nahlaseni chyby.
Dalsi vec je domena klienta. Ne nutme to bude digitalniknihovna.mzk.cz (Muze si jej nasadit jina knihovna u sebe).
Ten endpoint musi sestavit url v podobe: DOMANA_KLIENTA/KOD_KRAMERIA/uuid/UUID_DOKUMENTU
DOMANA_KLIENTA a UUID_DOKUMENTU by mel urcite posilat klient. KOD_KRAMERIA muze posilat taky klient nebo si ho odvodi Kramerius sam.
Měl jsem za to, že ty bys měl posílat posílat to hlášení na konkrétní API Krameria, které obsahuje špatný dokument. V tom případě nepotřebuji žádný kód Krameria.
Takže se ptám jak to vlastně chceme
A. Za chyby zodpovídá prozovatel API V tomto případě nepotřebuji kód, Kramerius API řeší pouze vlastní chyby.
B. Za chyby zodpovídá provozovatel klienta Čili API Krameria je schopné zpracovat chyby i z jiných Kramerií.
V případě varianty B je jediné rozumné řešení posílat celé URL, protože si nemyslím, že by Kramerius jako takový měl něco vědět o různých Krameriích (a ani o kódech, které se teď používají pouze v tvém klientovi).
Nebo to udělám prostě tak, že se do toho endpointu bude posílat celá (jakákoliv) url, to je asi nejvíc jednoduché a bude to kompatibilní i s variantou B.
Mela by to byt moznost A. urcite. Slo mi o to, ze API s nahlasenym jen uuid dokumentu si dokaze vytvorit url do editoru. Ale pokud to bude chtit clovek zodpovedny za opravu nejdriv videt v klientovi, tak to uz API za stavajici situace znat nebude. Zejmena pokud se potom dodela ta samostatna sluzba, ktera vylistuje seznam nahlasenych a jeste nevyresenych problemu - tak si je budu chtit projit v klientovi a pak je opravit. Takze by tam myl byt pro kazdy problem link do klienta a do editoru.
Ale je pravda, ze API by nemelo byt zavisle na konkretnim klientovi (nemelo by o nem ani vedet). To jsem nedomyslel. Takze asi nejlepsi by bylo posilat UUID (z toho API vygeneruje vse potrebne pro sveho Krameria). A potom cele url, aby se dalo podivat kde to presne uzivatel byl, kdyz chybu nahlasoval - nahlasovani chyb pres API bude obecne a oznameni chyby tak v budoucnu muze byt hlaseno z Androidu/iOS/Web-clietn1/Web-client2/..... a ne vsude se musi nahlasena chyba projevit.
API je hotové, můžeš ho vyzkoušet na http://krameriustest.mzk.cz/search/api/v5.0/feedback Nastavil jsem email administrátora na tvůj (@honza-rychtar), takže testovací maily budou chodit tobě. Commit https://github.com/moravianlibrary/kramerius/commit/5a319361dc279f36f028a386679926a99f3c8393
Je-li to ok, tak pošlu pull request Incadu.
Diky.
vsechny 4 parametry jsou povinne. Uzivatel mail vyplnovat nebude (i kdyz dobrovolne muze). Zatim tam budu davat neco jako noreply@mzk.cz, ale pak by bylo dobre udelat tento parametr nepovinny. A podle (ne)pritomnosti pak naformatovat telo zpravy. Stejne tak parametr text by nemusel byt vyzadovany.
Feedback by pak mohl slouzit i jako klasicky feedback, ne jen na nahlasovani chyb v otevrenem dokumentu. Pak by se nevyplnovalo ani url a uuid (formular by byl nekde na obrazovce s napovedou) ....ale tohle poresime pak.
Funguje to. Muzes poslat pull request.
Pridal jsem do aplikace formular pro nahlasovani chyb:
Po odeslani mi na mail prislo:
from: noreply@janrychtar.cz pid: uuid:c6d8fc1a-8fed-4ea4-b8b8-26207a1650b9 content: Test zpětné vazby. Našel jsem chybu v názvu, .....
http://localhost/kramerius/#/mzk-test/periodical/uuid:c6d8fc1a-8fed-4ea4-b8b8-26207a1650b9
Tak jsem změnil všechny 4 parametry na nepovinné a poslal pull request (https://github.com/ceskaexpedice/kramerius/pull/248).
Metoda, která posílá mail (včetně formátování těla zprávy) je převzatá z Krameria a nechtěl jsem ji měnit. Formátovací string na tělo zprávy se bere z nastavení (feedback.mail.message=from: {0} pid: {1} content:{2}). Mělo by to být lokalizovatelné. Teď se teda bude v případě nevyplněných parametrů prostě předávat prázdný string.
Endpoint v API
parametry: uuid, mail, popis chyby
po nahlášení je zasláno na mail admina