opacapp/opacclient

Implement new OPAC of SLUB Dresden

johan12345 opened this issue · 1 comments

They now use a new catalog which seems to be a custom development of the library themselves.
https://www.slub-dresden.de/recherche/slub-katalog-beta/#c36782

Would be great if you are interested in implementing support for the new OPAC. As far as I understand their documentation, this is basically a custom developed system, so the API implementation would be a separate one just for this library.

At opacapp/opacapp-config-files#4, @StefRe said he would be interested in trying to implement this. Feel free to ask here if you have questions! You can find some documentation on adding new libraries here and the libopac javadoc here.

I don't think the new OPAC has any public API (e.g. SRU or some JSON/XML format), but parsing the OPAC website looks doable. Basically it's a matter of finding the right HTTP requests to make (e.g. using the developer tools of your web browser) and then parsing the returned HTML using JSoup.
If we know that the API will only be used for one library, some things are slightly easier (e.g. we know that the choice of search fields will probably always stay the same, so the parseSearchFields implementation doesn't need to actually parse the search form, but can instead return a fixed set of fields).

When you implement a new API, you should use the OkHttpBaseApi as your base class - we are currently in the process of gradually moving all APIs away from the previously used Apache HTTP client (as it is has been deprecated on Android already for a couple of years now). This also allows you to take advantage of Stetho, which we have integrated in the app so that you are able to watch the HTTP requests it makes using chrome://inspect and the responses to compare with the OPAC website.

I would also suggest using Kotlin (as I also did recently for the Koha API), but if you would like to use Java, that's also fine.

I think you can close this issue, I put the remaining open items into #595 for better clarity.