diff --git a/daikoku/app/actions/actions.scala b/daikoku/app/actions/actions.scala index 524d81ac7..0537cadbb 100644 --- a/daikoku/app/actions/actions.scala +++ b/daikoku/app/actions/actions.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.actions -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.implicits.catsSyntaxOptionId import fr.maif.otoroshi.daikoku.domain.TeamPermission.{Administrator, ApiEditor} import fr.maif.otoroshi.daikoku.domain._ diff --git a/daikoku/app/audit/audit.scala b/daikoku/app/audit/audit.scala index 48e73c728..33215073e 100644 --- a/daikoku/app/audit/audit.scala +++ b/daikoku/app/audit/audit.scala @@ -1,12 +1,11 @@ package fr.maif.otoroshi.daikoku.audit -import akka.Done -import akka.actor.{Actor, ActorSystem, PoisonPill, Props, Terminated} -import akka.http.scaladsl.util.FastFuture -import akka.http.scaladsl.util.FastFuture._ -import akka.kafka.ProducerSettings -import akka.stream.scaladsl.{Keep, Sink, Source} -import akka.stream.{Materializer, OverflowStrategy, QueueOfferResult} +import org.apache.pekko.Done +import org.apache.pekko.actor.{Actor, ActorSystem, PoisonPill, Props, Terminated} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture._ +import org.apache.pekko.stream.scaladsl.{Keep, Sink, Source} +import org.apache.pekko.stream.{Materializer, OverflowStrategy, QueueOfferResult} import cats.data.EitherT import controllers.AppError import fr.maif.otoroshi.daikoku.audit.config.{ElasticAnalyticsConfig, Webhook} @@ -19,6 +18,7 @@ import org.apache.kafka.clients.producer.{Callback, Producer, ProducerRecord, Re import org.apache.kafka.common.config.SslConfigs import org.apache.kafka.common.config.internals.BrokerSecurityConfigs import org.apache.kafka.common.serialization.{ByteArraySerializer, StringSerializer} +import org.apache.pekko.kafka.ProducerSettings import org.joda.time.DateTime import org.joda.time.format.ISODateTimeFormat import play.api.Logger @@ -188,7 +188,7 @@ case class TenantAuditEvent(evt: AuditEvent, "_id" -> IdGenerator.token(32), "@type" -> theType, "@id" -> env.snowflakeGenerator.nextIdStr(), - "@timestamp" -> play.api.libs.json.JodaWrites.JodaDateTimeNumberWrites + "@timestamp" -> json.DateTimeFormat .writes(DateTime.now()), "@tenantId" -> tenant.id.value, "@userId" -> user.id.value, diff --git a/daikoku/app/controllers/AdminApiController.scala b/daikoku/app/controllers/AdminApiController.scala index 422b8361f..b7b2cdc91 100644 --- a/daikoku/app/controllers/AdminApiController.scala +++ b/daikoku/app/controllers/AdminApiController.scala @@ -1,9 +1,9 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.Source -import akka.util.ByteString +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.Source +import org.apache.pekko.util.ByteString import cats.implicits._ import fr.maif.otoroshi.daikoku.actions.{DaikokuAction, DaikokuActionContext} import fr.maif.otoroshi.daikoku.audit.AuditTrailEvent diff --git a/daikoku/app/controllers/ApiController.scala b/daikoku/app/controllers/ApiController.scala index f2fa4d381..54a78734e 100644 --- a/daikoku/app/controllers/ApiController.scala +++ b/daikoku/app/controllers/ApiController.scala @@ -1,10 +1,10 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.NotUsed -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Flow, JsonFraming, Sink, Source} -import akka.util.ByteString +import org.apache.pekko.NotUsed +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Flow, JsonFraming, Sink, Source} +import org.apache.pekko.util.ByteString import cats.Id import cats.data.EitherT import cats.implicits.{catsSyntaxOptionId, toTraverseOps} diff --git a/daikoku/app/controllers/AppError.scala b/daikoku/app/controllers/AppError.scala index 64c837276..5f0336c92 100644 --- a/daikoku/app/controllers/AppError.scala +++ b/daikoku/app/controllers/AppError.scala @@ -1,6 +1,6 @@ package controllers -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import controllers.AppError.toJson import play.api.libs.json.{JsObject, Json} import play.api.mvc diff --git a/daikoku/app/controllers/AssetsController.scala b/daikoku/app/controllers/AssetsController.scala index 8b5392728..01c99e1a2 100644 --- a/daikoku/app/controllers/AssetsController.scala +++ b/daikoku/app/controllers/AssetsController.scala @@ -1,29 +1,20 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture -import akka.stream.alpakka.s3.ObjectMetadata -import akka.stream.scaladsl.Source -import akka.util.ByteString -import fr.maif.otoroshi.daikoku.actions.{ - DaikokuAction, - DaikokuActionMaybeWithGuest, - DaikokuTenantAction -} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.scaladsl.Source +import org.apache.pekko.util.ByteString +import fr.maif.otoroshi.daikoku.actions.{DaikokuAction, DaikokuActionMaybeWithGuest, DaikokuTenantAction} import fr.maif.otoroshi.daikoku.audit.AuditTrailEvent import fr.maif.otoroshi.daikoku.ctrls.authorizations.async._ import fr.maif.otoroshi.daikoku.domain.AssetId import fr.maif.otoroshi.daikoku.env.Env import fr.maif.otoroshi.daikoku.logger.AppLogger import fr.maif.otoroshi.daikoku.utils.IdGenerator +import org.apache.pekko.stream.connectors.s3.ObjectMetadata import play.api.http.HttpEntity import play.api.libs.json.{JsArray, Json} import play.api.libs.streams.Accumulator -import play.api.mvc.{ - AbstractController, - Action, - BodyParser, - ControllerComponents -} +import play.api.mvc.{AbstractController, Action, BodyParser, ControllerComponents} import scala.concurrent.ExecutionContext import scala.concurrent.duration.DurationInt diff --git a/daikoku/app/controllers/ConsumptionController.scala b/daikoku/app/controllers/ConsumptionController.scala index 4506bbfa4..20e5e3cb4 100644 --- a/daikoku/app/controllers/ConsumptionController.scala +++ b/daikoku/app/controllers/ConsumptionController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import controllers.AppError import fr.maif.otoroshi.daikoku.actions.DaikokuAction import fr.maif.otoroshi.daikoku.audit.AuditTrailEvent diff --git a/daikoku/app/controllers/HomeController.scala b/daikoku/app/controllers/HomeController.scala index f08c7456c..f36bc775b 100644 --- a/daikoku/app/controllers/HomeController.scala +++ b/daikoku/app/controllers/HomeController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import com.github.blemale.scaffeine.{Cache, Scaffeine} import com.nimbusds.jose.util.StandardCharset import daikoku.BuildInfo diff --git a/daikoku/app/controllers/JobsController.scala b/daikoku/app/controllers/JobsController.scala index dcb94f470..51d00eb4f 100644 --- a/daikoku/app/controllers/JobsController.scala +++ b/daikoku/app/controllers/JobsController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import fr.maif.otoroshi.daikoku.env.Env import fr.maif.otoroshi.daikoku.utils.OtoroshiClient import jobs.{ApiKeyStatsJob, AuditTrailPurgeJob, OtoroshiVerifierJob} diff --git a/daikoku/app/controllers/LoginController.scala b/daikoku/app/controllers/LoginController.scala index ee1eb19d6..f66c7359f 100644 --- a/daikoku/app/controllers/LoginController.scala +++ b/daikoku/app/controllers/LoginController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import com.eatthepath.otp.TimeBasedOneTimePasswordGenerator import fr.maif.otoroshi.daikoku.actions.{DaikokuAction, DaikokuActionMaybeWithGuest, DaikokuTenantAction, DaikokuTenantActionContext} import fr.maif.otoroshi.daikoku.audit.{AuditTrailEvent, AuthorizationLevel} diff --git a/daikoku/app/controllers/MessageController.scala b/daikoku/app/controllers/MessageController.scala index 056cd0789..bb5d45df9 100644 --- a/daikoku/app/controllers/MessageController.scala +++ b/daikoku/app/controllers/MessageController.scala @@ -1,11 +1,11 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.actor.{ActorRef, PoisonPill, Props} -import akka.http.scaladsl.util.FastFuture -import akka.pattern.ask -import akka.stream.scaladsl.Source -import akka.stream.{CompletionStrategy, OverflowStrategy} -import akka.util.Timeout +import org.apache.pekko.actor.{ActorRef, PoisonPill, Props} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.pattern.ask +import org.apache.pekko.stream.scaladsl.Source +import org.apache.pekko.stream.{CompletionStrategy, OverflowStrategy} +import org.apache.pekko.util.Timeout import fr.maif.otoroshi.daikoku.actions.DaikokuAction import fr.maif.otoroshi.daikoku.audit.AuditTrailEvent import fr.maif.otoroshi.daikoku.ctrls.authorizations.async.{PublicUserAccess, TenantAdminOnly} @@ -172,12 +172,12 @@ class MessageController(DaikokuAction: DaikokuAction, PublicUserAccess(AuditTrailEvent("@{user.name} has received his messages"))( ctx) { val completionMatcher: PartialFunction[Any, CompletionStrategy] = { - case akka.actor.Status.Success(s: CompletionStrategy) => s - case akka.actor.Status.Success(_) => CompletionStrategy.draining - case akka.actor.Status.Success => CompletionStrategy.draining + case org.apache.pekko.actor.Status.Success(s: CompletionStrategy) => s + case org.apache.pekko.actor.Status.Success(_) => CompletionStrategy.draining + case org.apache.pekko.actor.Status.Success => CompletionStrategy.draining } val failureMatcher: PartialFunction[Any, Throwable] = { - case akka.actor.Status.Failure(cause) => cause + case org.apache.pekko.actor.Status.Failure(cause) => cause } val source: Source[JsValue, ActorRef] = Source diff --git a/daikoku/app/controllers/MockController.scala b/daikoku/app/controllers/MockController.scala index 3bf5e0f7a..9c730aa91 100644 --- a/daikoku/app/controllers/MockController.scala +++ b/daikoku/app/controllers/MockController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.implicits.catsSyntaxOptionId import fr.maif.otoroshi.daikoku.actions.DaikokuAction import fr.maif.otoroshi.daikoku.domain.TeamPermission._ diff --git a/daikoku/app/controllers/NotificationController.scala b/daikoku/app/controllers/NotificationController.scala index f3976031f..bfffb9add 100644 --- a/daikoku/app/controllers/NotificationController.scala +++ b/daikoku/app/controllers/NotificationController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.data.EitherT import controllers.AppError import controllers.AppError._ diff --git a/daikoku/app/controllers/OtoroshiSettingsController.scala b/daikoku/app/controllers/OtoroshiSettingsController.scala index 3c2a7f110..7a253f6ae 100644 --- a/daikoku/app/controllers/OtoroshiSettingsController.scala +++ b/daikoku/app/controllers/OtoroshiSettingsController.scala @@ -1,9 +1,9 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.model.Uri -import akka.http.scaladsl.util.FastFuture -import akka.stream.scaladsl.Source -import akka.util.ByteString +import org.apache.pekko.http.scaladsl.model.Uri +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.scaladsl.Source +import org.apache.pekko.util.ByteString import cats.data.EitherT import cats.implicits.catsSyntaxOptionId import com.google.common.base.Charsets diff --git a/daikoku/app/controllers/PaymentClient.scala b/daikoku/app/controllers/PaymentClient.scala index 4a6a1319a..adcac04c1 100644 --- a/daikoku/app/controllers/PaymentClient.scala +++ b/daikoku/app/controllers/PaymentClient.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.data.{EitherT, OptionT} import cats.implicits.catsSyntaxOptionId import controllers.AppError diff --git a/daikoku/app/controllers/TeamController.scala b/daikoku/app/controllers/TeamController.scala index 34fe1b1ef..23a05a553 100644 --- a/daikoku/app/controllers/TeamController.scala +++ b/daikoku/app/controllers/TeamController.scala @@ -1,8 +1,8 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Sink, Source} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Sink, Source} import cats.data.EitherT import cats.implicits.catsSyntaxOptionId import controllers.AppError diff --git a/daikoku/app/controllers/TenantController.scala b/daikoku/app/controllers/TenantController.scala index 31783d52b..a3f81d964 100644 --- a/daikoku/app/controllers/TenantController.scala +++ b/daikoku/app/controllers/TenantController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.data.EitherT import cats.implicits.catsSyntaxOptionId import com.nimbusds.jose.jwk.KeyType diff --git a/daikoku/app/controllers/TranslationController.scala b/daikoku/app/controllers/TranslationController.scala index 8e374ad77..b0b815800 100644 --- a/daikoku/app/controllers/TranslationController.scala +++ b/daikoku/app/controllers/TranslationController.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer import controllers.AppError import controllers.AppError.TranslationNotFound import fr.maif.otoroshi.daikoku.actions.{DaikokuAction, DaikokuActionMaybeWithGuest, DaikokuActionMaybeWithoutUser} diff --git a/daikoku/app/controllers/UsersController.scala b/daikoku/app/controllers/UsersController.scala index 714714658..b1fb2c1af 100644 --- a/daikoku/app/controllers/UsersController.scala +++ b/daikoku/app/controllers/UsersController.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import com.eatthepath.otp.TimeBasedOneTimePasswordGenerator import fr.maif.otoroshi.daikoku.actions.{DaikokuAction, DaikokuActionMaybeWithGuest} import fr.maif.otoroshi.daikoku.audit.AuditTrailEvent diff --git a/daikoku/app/controllers/authorizations.scala b/daikoku/app/controllers/authorizations.scala index 122c910ec..f055e6e72 100644 --- a/daikoku/app/controllers/authorizations.scala +++ b/daikoku/app/controllers/authorizations.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.ctrls -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import controllers.AppError import controllers.AppError.{ForbiddenAction, TeamForbidden, TeamNotFound, Unauthorized} import fr.maif.otoroshi.daikoku.actions.DaikokuActionContext diff --git a/daikoku/app/daikoku.scala b/daikoku/app/daikoku.scala index 1cf18e376..26dcb553a 100644 --- a/daikoku/app/daikoku.scala +++ b/daikoku/app/daikoku.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer import com.softwaremill.macwire._ import controllers.{Assets, AssetsComponents} import fr.maif.otoroshi.daikoku.actions.{ diff --git a/daikoku/app/domain/CommonServices.scala b/daikoku/app/domain/CommonServices.scala index c34604662..5a5e25c2b 100644 --- a/daikoku/app/domain/CommonServices.scala +++ b/daikoku/app/domain/CommonServices.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.domain -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.implicits.catsSyntaxOptionId import controllers.AppError import fr.maif.otoroshi.daikoku.actions.DaikokuActionContext diff --git a/daikoku/app/domain/SchemaDefinition.scala b/daikoku/app/domain/SchemaDefinition.scala index 8bf00fa2d..3e9e13aae 100644 --- a/daikoku/app/domain/SchemaDefinition.scala +++ b/daikoku/app/domain/SchemaDefinition.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.domain -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.data.EitherT import controllers.AppError import fr.maif.otoroshi.daikoku.actions.DaikokuActionContext diff --git a/daikoku/app/domain/apiEntities.scala b/daikoku/app/domain/apiEntities.scala index 4430cd3d6..9f25c2a32 100644 --- a/daikoku/app/domain/apiEntities.scala +++ b/daikoku/app/domain/apiEntities.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.domain -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.data.EitherT import cats.syntax.option._ import controllers.AppError diff --git a/daikoku/app/domain/json.scala b/daikoku/app/domain/json.scala index da3ae5585..031f933d2 100644 --- a/daikoku/app/domain/json.scala +++ b/daikoku/app/domain/json.scala @@ -78,14 +78,12 @@ object json { val DateTimeFormat = new Format[DateTime] { override def reads(json: JsValue) = Try { - val longDate: Long = - ((json \ "$long").asOpt[Long]).getOrElse(json.as[Long]) - JsSuccess(new DateTime(longDate)) + JsSuccess(new DateTime(json.as[Long])) } recover { case e => JsError(e.getMessage) } get - override def writes(o: DateTime) = JsNumber(o.toDate.getTime) + override def writes(o: DateTime) = JsNumber(o.getMillis) } val OtoroshiSettingsFormat = new Format[OtoroshiSettings] { diff --git a/daikoku/app/domain/tenantEntities.scala b/daikoku/app/domain/tenantEntities.scala index faa9fd1e5..2e1ffde84 100644 --- a/daikoku/app/domain/tenantEntities.scala +++ b/daikoku/app/domain/tenantEntities.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.domain -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.implicits.catsSyntaxOptionId import com.github.jknack.handlebars.{Context, Handlebars, Options} import controllers.AppError diff --git a/daikoku/app/env/env.scala b/daikoku/app/env/env.scala index dfbbeea1c..ab5860ab1 100644 --- a/daikoku/app/env/env.scala +++ b/daikoku/app/env/env.scala @@ -1,9 +1,9 @@ package fr.maif.otoroshi.daikoku.env -import akka.actor.{ActorRef, ActorSystem, PoisonPill} -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{FileIO, Keep, Sink, Source} +import org.apache.pekko.actor.{ActorRef, ActorSystem, PoisonPill} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{FileIO, Keep, Sink, Source} import cats.implicits.catsSyntaxOptionId import com.auth0.jwt.algorithms.Algorithm import com.auth0.jwt.{JWT, JWTVerifier} diff --git a/daikoku/app/env/evolutions.scala b/daikoku/app/env/evolutions.scala index 100666ab1..85ac1dd2d 100644 --- a/daikoku/app/env/evolutions.scala +++ b/daikoku/app/env/evolutions.scala @@ -1,9 +1,9 @@ package fr.maif.otoroshi.daikoku.env -import akka.Done -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Sink, Source} +import org.apache.pekko.Done +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Sink, Source} import cats.data.OptionT import cats.implicits.catsSyntaxOptionId import fr.maif.otoroshi.daikoku.domain._ diff --git a/daikoku/app/jobs/ApiKeyStatsJob.scala b/daikoku/app/jobs/ApiKeyStatsJob.scala index 019542056..3aa09c177 100644 --- a/daikoku/app/jobs/ApiKeyStatsJob.scala +++ b/daikoku/app/jobs/ApiKeyStatsJob.scala @@ -1,10 +1,10 @@ package jobs -import akka.actor.Cancellable -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Flow, Sink, Source} -import akka.{Done, NotUsed} +import org.apache.pekko.actor.Cancellable +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Flow, Sink, Source} +import org.apache.pekko.{Done, NotUsed} import cats.data.OptionT import cats.implicits.catsSyntaxOptionId import fr.maif.otoroshi.daikoku.domain.BillingTimeUnit.{Day, Hour, Month, Year} diff --git a/daikoku/app/jobs/AuditTrailPurgeJob.scala b/daikoku/app/jobs/AuditTrailPurgeJob.scala index 3b61134bb..e8648978e 100644 --- a/daikoku/app/jobs/AuditTrailPurgeJob.scala +++ b/daikoku/app/jobs/AuditTrailPurgeJob.scala @@ -1,6 +1,6 @@ package jobs -import akka.actor.Cancellable +import org.apache.pekko.actor.Cancellable import fr.maif.otoroshi.daikoku.env.Env import org.joda.time.DateTime import play.api.Logger diff --git a/daikoku/app/jobs/OtoroshiVerifierJob.scala b/daikoku/app/jobs/OtoroshiVerifierJob.scala index 54ae18da7..638d8b1f6 100644 --- a/daikoku/app/jobs/OtoroshiVerifierJob.scala +++ b/daikoku/app/jobs/OtoroshiVerifierJob.scala @@ -1,8 +1,8 @@ package jobs -import akka.Done -import akka.actor.Cancellable -import akka.stream.scaladsl.{Sink, Source} +import org.apache.pekko.Done +import org.apache.pekko.actor.Cancellable +import org.apache.pekko.stream.scaladsl.{Sink, Source} import cats.data.EitherT import cats.syntax.option._ import controllers.AppError diff --git a/daikoku/app/jobs/QueueJob.scala b/daikoku/app/jobs/QueueJob.scala index ead881d4a..b543f7267 100644 --- a/daikoku/app/jobs/QueueJob.scala +++ b/daikoku/app/jobs/QueueJob.scala @@ -1,7 +1,7 @@ package jobs -import akka.actor.{ActorSystem, Cancellable} -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.actor.{ActorSystem, Cancellable} +import org.apache.pekko.http.scaladsl.util.FastFuture import cats.data.{EitherT, OptionT} import controllers.AppError import fr.maif.otoroshi.daikoku.ctrls.PaymentClient diff --git a/daikoku/app/login/api.scala b/daikoku/app/login/api.scala index b08b12a18..76c4ff96f 100644 --- a/daikoku/app/login/api.scala +++ b/daikoku/app/login/api.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku.login -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer import cats.syntax.option._ import fr.maif.otoroshi.daikoku.domain.TeamPermission.Administrator import fr.maif.otoroshi.daikoku.domain._ diff --git a/daikoku/app/login/ldap.scala b/daikoku/app/login/ldap.scala index cfae7398f..47a6bcb4f 100644 --- a/daikoku/app/login/ldap.scala +++ b/daikoku/app/login/ldap.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.login -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import fr.maif.otoroshi.daikoku.domain.TeamPermission.Administrator import fr.maif.otoroshi.daikoku.domain._ import fr.maif.otoroshi.daikoku.env.Env diff --git a/daikoku/app/login/oauth.scala b/daikoku/app/login/oauth.scala index 298698edd..e6001c2ac 100644 --- a/daikoku/app/login/oauth.scala +++ b/daikoku/app/login/oauth.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.login -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import com.auth0.jwt.JWT import fr.maif.otoroshi.daikoku.domain.TeamPermission.Administrator import fr.maif.otoroshi.daikoku.domain._ diff --git a/daikoku/app/login/otoroshi.scala b/daikoku/app/login/otoroshi.scala index d2ada3f0c..d9468171e 100644 --- a/daikoku/app/login/otoroshi.scala +++ b/daikoku/app/login/otoroshi.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.login -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import com.auth0.jwt.JWT import com.auth0.jwt.algorithms.Algorithm import fr.maif.otoroshi.daikoku.domain.TeamPermission.Administrator diff --git a/daikoku/app/messages/Events.scala b/daikoku/app/messages/Events.scala index bd71b9b73..e17d203a5 100644 --- a/daikoku/app/messages/Events.scala +++ b/daikoku/app/messages/Events.scala @@ -1,8 +1,8 @@ package fr.maif.otoroshi.daikoku.messages -import akka.actor.{Actor, ActorLogging} -import akka.pattern._ -import akka.stream.scaladsl.{Sink, Source} +import org.apache.pekko.actor.{Actor, ActorLogging} +import org.apache.pekko.pattern._ +import org.apache.pekko.stream.scaladsl.{Sink, Source} import fr.maif.otoroshi.daikoku.actions.DaikokuActionContext import fr.maif.otoroshi.daikoku.domain.{Message, Tenant, User} import fr.maif.otoroshi.daikoku.env.Env diff --git a/daikoku/app/messages/MessageStreamActor.scala b/daikoku/app/messages/MessageStreamActor.scala index 467528aa9..70b88f91d 100644 --- a/daikoku/app/messages/MessageStreamActor.scala +++ b/daikoku/app/messages/MessageStreamActor.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.messages -import akka.actor.{Actor, ActorRef} +import org.apache.pekko.actor.{Actor, ActorRef} import fr.maif.otoroshi.daikoku.domain.{TeamId, UserId} class MessageStreamActor(source: ActorRef, user: UserId) extends Actor { diff --git a/daikoku/app/storage/api.scala b/daikoku/app/storage/api.scala index 4d59726aa..a19b194ba 100644 --- a/daikoku/app/storage/api.scala +++ b/daikoku/app/storage/api.scala @@ -1,10 +1,10 @@ package storage -import akka.NotUsed -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.Source -import akka.util.ByteString +import org.apache.pekko.NotUsed +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.Source +import org.apache.pekko.util.ByteString import cats.data.OptionT import fr.maif.otoroshi.daikoku.domain._ import fr.maif.otoroshi.daikoku.env.Env diff --git a/daikoku/app/storage/drivers/postgres/PostgresDataStore.scala b/daikoku/app/storage/drivers/postgres/PostgresDataStore.scala index b9d6bfc9f..37934e8af 100644 --- a/daikoku/app/storage/drivers/postgres/PostgresDataStore.scala +++ b/daikoku/app/storage/drivers/postgres/PostgresDataStore.scala @@ -1,10 +1,10 @@ package storage.drivers.postgres -import akka.NotUsed -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Framing, Keep, Sink, Source} -import akka.util.ByteString +import org.apache.pekko.NotUsed +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Framing, Keep, Sink, Source} +import org.apache.pekko.util.ByteString import cats.implicits.catsSyntaxOptionId import fr.maif.otoroshi.daikoku.domain._ import fr.maif.otoroshi.daikoku.domain.json._ diff --git a/daikoku/app/storage/drivers/postgres/ReactivePg.scala b/daikoku/app/storage/drivers/postgres/ReactivePg.scala index dda075e2d..1f1520d05 100644 --- a/daikoku/app/storage/drivers/postgres/ReactivePg.scala +++ b/daikoku/app/storage/drivers/postgres/ReactivePg.scala @@ -1,6 +1,6 @@ package storage.drivers.postgres -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import io.vertx.sqlclient.{Pool, Row, RowSet} import play.api.libs.json.{JsArray, JsObject, Json} import play.api.{Configuration, Logger} diff --git a/daikoku/app/utils/ApiService.scala b/daikoku/app/utils/ApiService.scala index 868f3a554..f8922bdd7 100644 --- a/daikoku/app/utils/ApiService.scala +++ b/daikoku/app/utils/ApiService.scala @@ -1,9 +1,9 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Flow, Sink, Source} -import akka.{Done, NotUsed} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Flow, Sink, Source} +import org.apache.pekko.{Done, NotUsed} import cats.Monad import cats.data.{EitherT, OptionT} import cats.implicits.catsSyntaxOptionId diff --git a/daikoku/app/utils/DeletionService.scala b/daikoku/app/utils/DeletionService.scala index 3a6b9b22c..76e8995cc 100644 --- a/daikoku/app/utils/DeletionService.scala +++ b/daikoku/app/utils/DeletionService.scala @@ -1,8 +1,8 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer -import akka.stream.scaladsl.{Sink, Source} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.scaladsl.{Sink, Source} import cats.data.EitherT import cats.implicits.catsSyntaxOptionId import controllers.AppError diff --git a/daikoku/app/utils/Translator.scala b/daikoku/app/utils/Translator.scala index 13985b115..8e1f80d53 100644 --- a/daikoku/app/utils/Translator.scala +++ b/daikoku/app/utils/Translator.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import fr.maif.otoroshi.daikoku.domain.Tenant import fr.maif.otoroshi.daikoku.env.Env import play.api.i18n.{Lang, MessagesApi} diff --git a/daikoku/app/utils/admin.scala b/daikoku/app/utils/admin.scala index 5a8830620..c269e6074 100644 --- a/daikoku/app/utils/admin.scala +++ b/daikoku/app/utils/admin.scala @@ -1,17 +1,13 @@ package fr.maif.otoroshi.daikoku.utils.admin import java.util.Base64 -import akka.http.scaladsl.util.FastFuture -import akka.stream.scaladsl.Source -import akka.util.ByteString +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.scaladsl.Source +import org.apache.pekko.util.ByteString import com.auth0.jwt.JWT import com.google.common.base.Charsets -import fr.maif.otoroshi.daikoku.domain.{Tenant, ValueType} -import fr.maif.otoroshi.daikoku.env.{ - Env, - LocalAdminApiConfig, - OtoroshiAdminApiConfig -} +import fr.maif.otoroshi.daikoku.domain.{Tenant, ValueType, json} +import fr.maif.otoroshi.daikoku.env.{Env, LocalAdminApiConfig, OtoroshiAdminApiConfig} import fr.maif.otoroshi.daikoku.logger.AppLogger import fr.maif.otoroshi.daikoku.login.TenantHelper import fr.maif.otoroshi.daikoku.utils.Errors @@ -296,9 +292,9 @@ abstract class AdminApiController[Of, Id <: ValueType]( def patchEntity(id: String) = DaikokuApiAction.async(parse.json) { ctx => object JsonImplicits { implicit val jodaDateTimeWrites: Writes[DateTime] = - play.api.libs.json.JodaWrites.JodaDateTimeNumberWrites + json.DateTimeFormat.writes implicit val jodaDateTimeReads: Reads[DateTime] = - play.api.libs.json.JodaReads.DefaultJodaDateTimeReads + json.DateTimeFormat.reads } object JsonPatchHelpers { diff --git a/daikoku/app/utils/emails.scala b/daikoku/app/utils/emails.scala index e094f8f60..8aa03aae4 100644 --- a/daikoku/app/utils/emails.scala +++ b/daikoku/app/utils/emails.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture -import akka.http.scaladsl.util.FastFuture.EnhancedFuture +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture.EnhancedFuture import fr.maif.otoroshi.daikoku.domain._ import org.owasp.html.HtmlPolicyBuilder import play.api.Logger diff --git a/daikoku/app/utils/errors.scala b/daikoku/app/utils/errors.scala index 2b633f135..5bc14a64d 100644 --- a/daikoku/app/utils/errors.scala +++ b/daikoku/app/utils/errors.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import fr.maif.otoroshi.daikoku.env.Env import fr.maif.otoroshi.daikoku.domain._ import fr.maif.otoroshi.daikoku.login._ diff --git a/daikoku/app/utils/future.scala b/daikoku/app/utils/future.scala index c4ef80141..1b0b50649 100644 --- a/daikoku/app/utils/future.scala +++ b/daikoku/app/utils/future.scala @@ -1,6 +1,6 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import scala.concurrent.Future diff --git a/daikoku/app/utils/jwt.scala b/daikoku/app/utils/jwt.scala index ae68a48a1..8db48f605 100644 --- a/daikoku/app/utils/jwt.scala +++ b/daikoku/app/utils/jwt.scala @@ -8,7 +8,7 @@ import java.security.interfaces.{ } import java.util.concurrent.TimeUnit -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko.http.scaladsl.util.FastFuture import com.auth0.jwt.algorithms.Algorithm import com.nimbusds.jose.jwk.{ECKey, JWK, KeyType, RSAKey} import fr.maif.otoroshi.daikoku.env.Env diff --git a/daikoku/app/utils/otoroshi.scala b/daikoku/app/utils/otoroshi.scala index 9ef29b811..8496aadfa 100644 --- a/daikoku/app/utils/otoroshi.scala +++ b/daikoku/app/utils/otoroshi.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku.utils -import akka.http.scaladsl.util.FastFuture -import akka.stream.Materializer +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.Materializer import cats.data.EitherT import cats.implicits.catsSyntaxOptionId import controllers.AppError diff --git a/daikoku/app/utils/request.scala b/daikoku/app/utils/request.scala index ed631fc3e..9dc1721d2 100644 --- a/daikoku/app/utils/request.scala +++ b/daikoku/app/utils/request.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku.utils import java.util.concurrent.ConcurrentHashMap -import akka.http.scaladsl.model.Uri +import org.apache.pekko.http.scaladsl.model.Uri import fr.maif.otoroshi.daikoku.domain.Tenant import play.api.libs.json.{JsObject, JsValue, Reads} import play.api.mvc.RequestHeader diff --git a/daikoku/app/utils/s3.scala b/daikoku/app/utils/s3.scala index 54155486b..473b6aa08 100644 --- a/daikoku/app/utils/s3.scala +++ b/daikoku/app/utils/s3.scala @@ -1,30 +1,28 @@ package fr.maif.otoroshi.daikoku.utils -import java.net.URL -import java.util.concurrent.atomic.{AtomicBoolean, AtomicReference} - -import akka.actor.ActorSystem -import akka.http.scaladsl.model.{ContentType, ContentTypes, HttpHeader} -import akka.stream.Materializer -import akka.stream.alpakka.s3._ -import akka.stream.alpakka.s3.headers.CannedAcl -import akka.stream.alpakka.s3.scaladsl.S3 -import akka.stream.scaladsl.{Keep, Sink, Source} -import akka.util.ByteString -import akka.{Done, NotUsed} -import com.amazonaws.{ClientConfiguration, HttpMethod, SdkClientException} import com.amazonaws.auth.{AWSStaticCredentialsProvider, BasicAWSCredentials} import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration import com.amazonaws.services.s3.AmazonS3ClientBuilder +import com.amazonaws.{ClientConfiguration, HttpMethod, SdkClientException} import fr.maif.otoroshi.daikoku.domain._ +import org.apache.pekko.actor.ActorSystem +import org.apache.pekko.http.scaladsl.model.{ContentType, ContentTypes, HttpHeader} +import org.apache.pekko.stream.Materializer +import org.apache.pekko.stream.connectors.s3.headers.CannedAcl +import org.apache.pekko.stream.connectors.s3.scaladsl.S3 +import org.apache.pekko.stream.connectors.s3._ +import org.apache.pekko.stream.scaladsl.{Keep, Sink, Source} +import org.apache.pekko.util.ByteString +import org.apache.pekko.{Done, NotUsed} import org.joda.time.DateTime import play.api.libs.json._ import software.amazon.awssdk.auth.credentials._ -import software.amazon.awssdk.core.exception.SdkException import software.amazon.awssdk.regions.Region import software.amazon.awssdk.regions.providers.AwsRegionProvider -import scala.concurrent.{ExecutionContext, Future, duration} +import java.net.URL +import java.util.concurrent.atomic.{AtomicBoolean, AtomicReference} +import scala.concurrent.{ExecutionContext, Future} import scala.util.Try class BadFileContentFromContentType() @@ -212,14 +210,14 @@ class AssetsDataStore(actorSystem: ActorSystem)(implicit ec: ExecutionContext, implicit conf: S3Configuration) : Future[Option[(Source[ByteString, NotUsed], ObjectMetadata)]] = { val none: Option[(Source[ByteString, NotUsed], ObjectMetadata)] = None - S3.download(conf.bucket, + S3.getObject(conf.bucket, s"/${tenant.value}/teams/${team.value}/assets/${asset.value}") .withAttributes(s3ClientSettingsAttrs) - .runFold(none)((_, opt) => opt) + .runFold(none)((opt, _) => opt) } def checkBucket()(implicit conf: S3Configuration): Future[BucketAccess] = { - S3.checkIfBucketExists(conf.bucket)(mat, s3ClientSettingsAttrs) + S3.checkIfBucketExists(conf.bucket)(actorSystem, s3ClientSettingsAttrs) } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -311,9 +309,9 @@ class AssetsDataStore(actorSystem: ActorSystem)(implicit ec: ExecutionContext, implicit conf: S3Configuration) : Future[Option[(Source[ByteString, NotUsed], ObjectMetadata)]] = { val none: Option[(Source[ByteString, NotUsed], ObjectMetadata)] = None - S3.download(conf.bucket, s"/${tenant.value}/tenant-assets/${asset.value}") + S3.getObject(conf.bucket, s"/${tenant.value}/tenant-assets/${asset.value}") .withAttributes(s3ClientSettingsAttrs) - .runFold(none)((_, opt) => opt) + .runFold(none)((opt, _) => opt) } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -353,18 +351,18 @@ class AssetsDataStore(actorSystem: ActorSystem)(implicit ec: ExecutionContext, implicit conf: S3Configuration) : Future[Option[(Source[ByteString, NotUsed], ObjectMetadata)]] = { val none: Option[(Source[ByteString, NotUsed], ObjectMetadata)] = None - S3.download(conf.bucket, s"/users/${asset.value}") + S3.getObject(conf.bucket, s"/users/${asset.value}") .withAttributes(s3ClientSettingsAttrs) - .runFold(none)((_, opt) => opt) + .runFold(none)((opt, _) => opt) } def getThumbnail(tenant: TenantId, asset: AssetId)( implicit conf: S3Configuration) : Future[Option[(Source[ByteString, NotUsed], ObjectMetadata)]] = { val none: Option[(Source[ByteString, NotUsed], ObjectMetadata)] = None - S3.download(conf.bucket, s"/${tenant.value}/thumbnails/${asset.value}") + S3.getObject(conf.bucket, s"/${tenant.value}/thumbnails/${asset.value}") .withAttributes(s3ClientSettingsAttrs) - .runFold(none)((_, opt) => opt) + .runFold(none)((opt, _) => opt) } def storeThumbnail(tenant: TenantId, diff --git a/daikoku/build.sbt b/daikoku/build.sbt index 06e68848a..113107685 100644 --- a/daikoku/build.sbt +++ b/daikoku/build.sbt @@ -13,12 +13,11 @@ Global / onChangedBuildSource := ReloadOnSourceChanges lazy val reactiveMongoVersion = "0.20.10" lazy val wiremockVersion = "3.0.1" -lazy val playJsonVersion = "2.10.3" lazy val awsJavaSdkVersion = "1.12.582" -lazy val akkaHttp2Version = "10.2.10" +lazy val akkaHttp2Version = "10.2.10" lazy val root = (project in file(".")) - .enablePlugins(PlayScala, DockerPlugin, BuildInfoPlugin, PlayAkkaHttp2Support) + .enablePlugins(PlayScala, DockerPlugin, BuildInfoPlugin, PlayPekkoHttp2Support) .disablePlugins(PlayFilters) .settings( buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion), @@ -65,8 +64,14 @@ libraryDependencies ++= Seq( "com.dimafeng" %% "testcontainers-scala-postgresql" % "0.40.14" % Test, "org.apache.commons" % "commons-lang3" % "3.13.0", "org.bouncycastle" % "bcprov-jdk18on" % "1.76", - "com.typesafe.play" %% "play-json" % playJsonVersion, - "com.typesafe.play" %% "play-json-joda" % playJsonVersion, + //play framework + "org.playframework" %% "play-json" % "3.0.1", + "org.playframework" %% "play-pekko-http2-support" % "3.0.0", + //pekko + "org.apache.pekko" %% "pekko-connectors-kafka" % "1.0.0", + "org.apache.pekko" %% "pekko-connectors-s3" % "1.0.1", + + "com.auth0" % "java-jwt" % "4.4.0", "com.auth0" % "jwks-rsa" % "0.22.1", // https://github.com/auth0/jwks-rsa-java "com.nimbusds" % "nimbus-jose-jwt" % "9.37", @@ -83,10 +88,6 @@ libraryDependencies ++= Seq( "org.gnieh" %% "diffson-play-json" % "4.4.0" excludeAll ExclusionRule( organization = "com.typesafe.akka" ), - "com.typesafe.akka" %% "akka-stream-kafka" % "2.0.7", - "com.lightbend.akka" %% "akka-stream-alpakka-s3" % "2.0.2", - "com.typesafe.akka" %% "akka-http2-support" % akkaHttp2Version, - "com.typesafe.akka" %% "akka-http-xml" % akkaHttp2Version, "org.typelevel" %% "cats-core" % "2.10.0", "de.svenkubiak" % "jBCrypt" % "0.4.3", "com.amazonaws" % "aws-java-sdk-core" % awsJavaSdkVersion, diff --git a/daikoku/project/plugins.sbt b/daikoku/project/plugins.sbt index 6ae6d0de0..a878cb5f0 100644 --- a/daikoku/project/plugins.sbt +++ b/daikoku/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.9.0") +addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.0") //addSbtPlugin("io.get-coursier" % "sbt-coursier" % "2.0.8") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2") addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.12") diff --git a/daikoku/test/daikoku/suites.scala b/daikoku/test/daikoku/suites.scala index c69f42956..29bc47d6c 100644 --- a/daikoku/test/daikoku/suites.scala +++ b/daikoku/test/daikoku/suites.scala @@ -1,7 +1,7 @@ package fr.maif.otoroshi.daikoku.tests -import akka.http.scaladsl.util.FastFuture -import akka.stream.scaladsl.{Keep, Sink, Source} +import org.apache.pekko.http.scaladsl.util.FastFuture +import org.apache.pekko.stream.scaladsl.{Keep, Sink, Source} import cats.implicits.catsSyntaxOptionId import com.auth0.jwt.algorithms.Algorithm import com.themillhousegroup.scoup.Scoup