scala - How to change HTTP status code of AsyncResult using Scalatra -
i have created simple controller (the code below obfuscated , simplified, assume ask returns future message). trying change http code other 200 (based on actor result).
when executing code below see result come expected, 200 instead of 404
   get("/:id") {         new asyncresult() {           val is: future[_] = ask(actor, message)(timeout.tomillis)           is.oncomplete { res =>             res match {               case success(result:any) => notfound(result) //not found example of different http code other 200           }        }     }   another attempt was
case success(result:any) => {    this.status_ = (404)    result }   in case, receive nullpointerexception because response (httpservletresponse) null, due fact response on separate thread.
tl;dr
how can 1 conditionally change http code of asyncresult/future in scalatra?
details
scala 2.11.6
scalatra 2.3.0
akka 2.3.9
after digging in scalatra futuresupport mixin, found:
implicit val response: httpservletresponse = scalatracontext.response   defined member of asyncresult allows me change status code of http request inside oncomplete callback.
Comments
Post a Comment