Heiko has a different approach here
https://github.com/hseeberger/reactive-flows/blob/master/src/main/scala/de/heikoseeberger/reactiveflows/Api.scala

onSuccess(flowFacade ? addFlow) {
case bc: BadCommand => complete(BadRequest -> bc)
case fe: FlowExists => complete(Conflict -> fe)
case fa: FlowAdded => completeCreated(fa.desc.name, fa)
}

If I recall correctly, the right arrow is creating a tuple. This seems like
a nice approach, though I suppose it also relies on the untyped nature of
Ask
In my case, if I try something like

onSuccess(requestHandler ? NotificationsRequestHandler.AskForStatus) {

            case apiError: APIError => complete(StatusCodes.BadRequest ->
apiError)

            ...

          }

my implicit conversions to ToResponseMarshallable aren't found, even though
calling Marshall(reply).to[HttpResponse] a few lines earlier is just fine.

Implicit conversions sure are humbling.

On Fri, Oct 7, 2016 at 11:59 AM, Viktor Klang <viktor.kl...@gmail.com>
wrote:

> WARNING: I may very well be incorrect here
>
> Options:
> A: switch to the onComplete directive
> B: map to an Either[Result, PimpedResult]?
>
> On Fri, Oct 7, 2016 at 6:38 PM, Richard Rodseth <rrods...@gmail.com>
> wrote:
>
>> That's the trouble. Depending on whether the actor calls withStatusCode,
>> it could be a Result or a PimpedResult. Both can be marshalled.
>>
>> In the Spray application we completed the request inside a per-request
>> actor. That is no longer possible, hence using Ask.
>>
>> On Fri, Oct 7, 2016 at 11:18 AM, Akka Team <akka.offic...@gmail.com>
>> wrote:
>>
>>> Hi Richard,
>>>
>>> You can combine ask with mapTo to cast it to the right type (or fail
>>> the future if it does not have that type), see the docs here:
>>> http://doc.akka.io/docs/akka/2.4/scala/futures.html#use-with-actors
>>>
>>> --
>>> Johan
>>> Akka Team
>>>
>>> On Fri, Oct 7, 2016 at 10:55 AM, Richard Rodseth <rrods...@gmail.com>
>>> wrote:
>>>
>>>> Continuing my struggles to port something we did with Spray, using
>>>>
>>>> // See https://bitbucket.org/binarycamp/spray-contrib/src
>>>>
>>>> I have resolved my implicit conversion errors to the point where I can
>>>> execute the following (Result[T] is an alias for Either[APIError, T]):
>>>>
>>>>   val successResult: Result[NotificationsStatusDTO] =
>>>> Right(NotificationsStatusDTO("foo"))
>>>>
>>>>   val successResponseFuture: Future[HttpResponse] = Marshal(
>>>> successResult).to[HttpResponse]
>>>>
>>>>   val successResponse = Await.result(successResponseFuture, 1.second) //
>>>> don't block in non-test code!
>>>>
>>>>   println(s"Success response $successResponse")
>>>>
>>>>   val successResult2: Result[NotificationsStatusDTO] =
>>>> Right(NotificationsStatusDTO("foo"))
>>>>
>>>>   val resultWithStatusCode: PimpedResult[(StatusCode,
>>>> NotificationsStatusDTO)] = successResult2.withStatusCode(
>>>> StatusCodes.Accepted)
>>>>
>>>>   val successResponseWithStatusCodeFuture: Future[HttpResponse] =
>>>> Marshal(resultWithStatusCode).to[HttpResponse]
>>>>
>>>>   val successResponseWithStatusCode = Await.result(successResponseWi
>>>> thStatusCodeFuture, 1.second) // don't block in non-test code!
>>>>
>>>>   println(s"Success with status code $successResponseWithStatusCode")
>>>>
>>>> But I have not been able to figure out how to use the onSuccess
>>>> directive (or another if more appropriate) if the response (either a Result
>>>> or a PimpedResult as above) is coming from an Ask.
>>>>
>>>> This obviously doesn't work:
>>>>
>>>>           onSuccess(requestHandler ? 
>>>> NotificationsRequestHandler.AskForStatus)
>>>> {
>>>>
>>>>             case _ => complete(x)
>>>>
>>>>           }
>>>>
>>>> Any pointers?
>>>>
>>>> --
>>>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>>>> >>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/c
>>>> urrent/additional/faq.html
>>>> >>>>>>>>>> Search the archives: https://groups.google.com/grou
>>>> p/akka-user
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Akka User List" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to akka-user+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to akka-user@googlegroups.com.
>>>> Visit this group at https://groups.google.com/group/akka-user.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>> --
>>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>>> >>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/c
>>> urrent/additional/faq.html
>>> >>>>>>>>>> Search the archives: https://groups.google.com/grou
>>> p/akka-user
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Akka User List" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to akka-user+unsubscr...@googlegroups.com.
>>> To post to this group, send email to akka-user@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/akka-user.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>> >>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/c
>> urrent/additional/faq.html
>> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Akka User List" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to akka-user+unsubscr...@googlegroups.com.
>> To post to this group, send email to akka-user@googlegroups.com.
>> Visit this group at https://groups.google.com/group/akka-user.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Cheers,
> √
>
> --
> >>>>>>>>>> Read the docs: http://akka.io/docs/
> >>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/
> current/additional/faq.html
> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
> ---
> You received this message because you are subscribed to the Google Groups
> "Akka User List" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to akka-user+unsubscr...@googlegroups.com.
> To post to this group, send email to akka-user@googlegroups.com.
> Visit this group at https://groups.google.com/group/akka-user.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to