/invoicing/write-front/src/main/scala/ecommerce/invoicing/app/HttpService.scala
https://github.com/pawelkaczor/ddd-leaven-akka-v2 · Scala · 37 lines · 26 code · 11 blank · 0 comment · 0 complexity · 346bfa49cf8d0fce4f9bedf854cbdd46 MD5 · raw file
- package ecommerce.invoicing.app
- import akka.actor.{Actor, ActorLogging, Props}
- import akka.http.scaladsl.Http
- import akka.util.Timeout
- import ecommerce.invoicing.{Command => InvoicingCommand, InvoicingOfficeId}
- import org.json4s.Formats
- import pl.newicom.dddd.serialization.JsonSerHints.fromConfig
- import pl.newicom.dddd.writefront.HttpCommandHandler
- import scala.concurrent.duration.FiniteDuration
- object HttpService {
- def props(interface: String, port: Int, askTimeout: FiniteDuration): Props =
- Props(new HttpService(interface, port)(askTimeout))
- }
- class HttpService(interface: String, port: Int)(implicit val timeout: Timeout)
- extends Actor with InvoicingFrontConfiguration with HttpCommandHandler with ActorLogging {
- implicit val formats: Formats = fromConfig(config)
- Http(context.system).bindAndHandle(route, interface, port)
- log.info(s"Listening on $interface:$port")
- override def receive = Actor.emptyBehavior
- override def offices = Set(InvoicingOfficeId)
- private def route = pathPrefix("ecommerce") {
- path("invoicing") {
- handle[InvoicingCommand]
- }
- }
- }