<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">El mié., 12 oct. 2016 a las 7:26, David Cook (<<a href="mailto:dcook@prosentient.com.au">dcook@prosentient.com.au</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-AU" link="blue" vlink="purple" class="gmail_msg"><div class="m_4676470608577672232WordSection1 gmail_msg"><p class="MsoNormal gmail_msg"><a name="m_4676470608577672232__MailEndCompose" class="gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Really curious to see how this plays out!<u class="gmail_msg"></u><u class="gmail_msg"></u></span></a></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">I’ve just added parameter validation to a Koha::Object, and while it works well enough, I’m hoping for a more generalized solution. I haven’t looked at Koha::Exceptions::* yet, but maybe that will help.</span></p></div></div></blockquote><div><br></div><div>I don't know how that would work, what bug number is it?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-AU" link="blue" vlink="purple" class="gmail_msg"><div class="m_4676470608577672232WordSection1 gmail_msg"><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-family:Calibri,sans-serif;font-size:11pt">Peeking at Koha::Exceptions::</span><span style="font-family:Calibri,sans-serif;font-size:11pt">MissingParameter, I hope that there’s more specificity than just “A required parameter is missing”. I’d want to know which required parameter is missing.</span><br></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Is there a document somewhere saying how to use Koha::Exceptions?</span></p></div></div></blockquote><div><br></div><div>Well, we are not baking our own exception system, we are just using Class::Exception so it is pretty documented!</div><div> </div><div>Look at bug 17425, you will notice when we throw an exception we can add a message.</div><div><br></div><div>Regards!</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-AU" link="blue" vlink="purple" class="gmail_msg"><div class="m_4676470608577672232WordSection1 gmail_msg"><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">David Cook<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Systems Librarian<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Prosentient Systems<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">72/330 Wattle St<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Ultimo, NSW 2007<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Australia<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Office: <a href="tel:02%2092%2012%2008%2099" value="+33292120899" class="gmail_msg" target="_blank">02 9212 0899</a><u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">Direct: <a href="tel:02%2080%2005%2005%2095" value="+33280050595" class="gmail_msg" target="_blank">02 8005 0595</a><u class="gmail_msg"></u><u class="gmail_msg"></u></span></p><p class="MsoNormal gmail_msg"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt" class="gmail_msg"><div class="gmail_msg"><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm 0cm 0cm" class="gmail_msg"><p class="MsoNormal gmail_msg"><b class="gmail_msg"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif" class="gmail_msg"> <a href="mailto:koha-devel-bounces@lists.koha-community.org" class="gmail_msg" target="_blank">koha-devel-bounces@lists.koha-community.org</a> [mailto:<a href="mailto:koha-devel-bounces@lists.koha-community.org" class="gmail_msg" target="_blank">koha-devel-bounces@lists.koha-community.org</a>] <b class="gmail_msg">On Behalf Of </b>Tomas Cohen Arazi<br class="gmail_msg"><b class="gmail_msg">Sent:</b> Wednesday, 12 October 2016 2:39 AM<br class="gmail_msg"><b class="gmail_msg">To:</b> koha-devel <<a href="mailto:koha-devel@lists.koha-community.org" class="gmail_msg" target="_blank">koha-devel@lists.koha-community.org</a>><br class="gmail_msg"><b class="gmail_msg">Subject:</b> [Koha-devel] Marseille16 / REST api<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p></div></div></div></div></div><div lang="EN-AU" link="blue" vlink="purple" class="gmail_msg"><div class="m_4676470608577672232WordSection1 gmail_msg"><div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt" class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p><div class="gmail_msg"><div class="gmail_msg"><p class="MsoNormal gmail_msg">During the first couple Hackfest days, Jonathan, Benjamin and I worked on a reference implementation of CRUD code for a REST endpoint, so others can read it, discuss it and use it as a reference for their own developments.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">We worked on Koha::Cit(y|ies) because it was a really simple class. All our work is now on bug 17428.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">The main goals/concepts we tried to apply were:<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">* Controller class (Koha::REST::V1::Cities) should be as simple as possible. No business logic on it. All business logic is expected to be put on the Koha::Cit(ies|y) classes. And fully tested.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">* All verbs/use cases should be covered by tests (t/db_dependent/api/v1/cities.t). We did it, and this file could be used (with little adjustments) as the basis for new endpoint tests.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><p class="MsoNormal gmail_msg">* Heavy use of exceptions. I wouldn't say we heavily use them, but the point is that we pass everything to the business object, and catch exceptions it might raise. Martin pointed out that he would help us further simplify it, making heavier use of the Swagger plugin's facilities. Specially on parameters sanity check. More on this tomorrow!<u class="gmail_msg"></u><u class="gmail_msg"></u></p><div class="gmail_msg"><p class="MsoNormal gmail_msg">* Koha::Exceptions got per-class files so the exceptions file is more manageable. Bug 17425 introduced Koha/Exceptions/Object.pm, and we propose that's the way to go (Koha/Exceptions.pm still has Virtualshelves-related exceptions that should be moved).<u class="gmail_msg"></u><u class="gmail_msg"></u></p><div class="gmail_msg"><p class="MsoNormal gmail_msg">* Make use of Try::Tiny for try/catch blocks. On the process we wrote bug 17425, which introduces new exceptions, we added the dependency for Try::Tiny (no worries, it is packaged for Jessie/Ubuntu) and Mirko was here to validate.<u class="gmail_msg"></u><u class="gmail_msg"></u></p><div class="gmail_msg"><p class="MsoNormal gmail_msg">* Moving business-logic to Koha:: namespace and write REST endpoints on top of that business objects. We picked a simple object, Koha::Patron(s) will be a more complex one of course. This is what Jonathan has been doing, and people willing to write REST endpoints should check with him, and probably help moving business logic into Koha:: namespace.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div></div></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">There are several patches on bugzilla introducing endpoints. We will try to contact patch authors to help them make their work match this proposed 'guidelines'.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">We are sticking to the 'patches speak' approach, so feel free to criticize this implementation, to improve it or even provide a counter-proposal. We are otherwise moving on, trying to get a functional complete REST api ASAP.<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">Thanks!<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">Tomas, Jonathan, Benjamin<u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p></div></div><div class="gmail_msg"><p class="MsoNormal gmail_msg">-- <u class="gmail_msg"></u><u class="gmail_msg"></u></p></div><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><p class="MsoNormal gmail_msg"><span style="font-size:9.5pt;font-family:"Helvetica",sans-serif;color:#757575" class="gmail_msg">Tomás Cohen Arazi<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p></div><div class="gmail_msg"><p class="MsoNormal gmail_msg"><span style="font-size:9.5pt;font-family:"Helvetica",sans-serif;color:#757575" class="gmail_msg">Theke Solutions (<a href="http://theke.io/" class="gmail_msg" target="_blank">https://theke.io</a>)<br class="gmail_msg"></span><span style="font-size:9.5pt;font-family:"Segoe UI Symbol",sans-serif;color:#757575" class="gmail_msg">✆</span><span style="font-size:9.5pt;font-family:"Helvetica",sans-serif;color:#757575" class="gmail_msg"> <a href="tel:+54%209%20351%20351-3384" value="+5493513513384" class="gmail_msg" target="_blank">+54 9351 3513384</a><br class="gmail_msg">GPG: B2F3C15F<u class="gmail_msg"></u><u class="gmail_msg"></u></span></p></div></div></div></div></div></div></blockquote></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(117,117,117);font-family:"helvetica neue",helvetica,arial,sans-serif;font-size:12.8px">Tomás Cohen Arazi</div><div style="color:rgb(117,117,117);font-family:"helvetica neue",helvetica,arial,sans-serif;font-size:12.8px">Theke Solutions (<a href="http://theke.io/">https://theke.io</a>)<br>✆ +54 9351 3513384<br>GPG: B2F3C15F</div></div></div>