fix much migration deprecation warnings
parent
bbbc71bd3c
commit
17dc9f1bab
|
@ -7,17 +7,6 @@ final class LilaLoader extends ApplicationLoader {
|
|||
|
||||
println("LilaLoader")
|
||||
|
||||
// def load(context: ApplicationLoader.Context) = {
|
||||
// import play.api.inject.guice.GuiceApplicationBuilder
|
||||
// val application = new GuiceApplicationBuilder(
|
||||
// environment = context.environment,
|
||||
// configuration = context.initialConfiguration
|
||||
// ).build()
|
||||
// // Env._ref.set(application)
|
||||
// old.play.Env.start(application)
|
||||
// application
|
||||
// }
|
||||
|
||||
def load(context: ApplicationLoader.Context): Application = {
|
||||
LoggerConfigurator(context.environment.classLoader).foreach {
|
||||
_.configure(context.environment, context.initialConfiguration, Map.empty)
|
||||
|
|
|
@ -296,7 +296,7 @@ object Api extends LilaController {
|
|||
js(ctx) map toHttp
|
||||
}
|
||||
|
||||
private val tooManyRequests = TooManyRequest(jsonError("Try again later"))
|
||||
private val tooManyRequests = TooManyRequests(jsonError("Try again later"))
|
||||
|
||||
private def toHttp(result: ApiResult)(implicit ctx: Context): Result = result match {
|
||||
case Limited => tooManyRequests
|
||||
|
|
|
@ -96,7 +96,7 @@ object Coach extends LilaController {
|
|||
}
|
||||
}
|
||||
|
||||
def pictureApply = AuthBody(BodyParsers.parse.multipartFormData) { implicit ctx => me =>
|
||||
def pictureApply = AuthBody(parse.multipartFormData) { implicit ctx => me =>
|
||||
OptionFuResult(api findOrInit me) { c =>
|
||||
ctx.body.body.file("picture") match {
|
||||
case Some(pic) => api.uploadPicture(c, pic) recover {
|
||||
|
|
|
@ -61,7 +61,7 @@ object Fishnet extends LilaController {
|
|||
}
|
||||
|
||||
private def ClientAction[A <: JsonApi.Request](f: A => lila.fishnet.Client => Fu[Either[Result, Option[JsonApi.Work]]])(implicit reads: Reads[A]) =
|
||||
Action.async(BodyParsers.parse.tolerantJson) { req =>
|
||||
Action.async(parse.tolerantJson) { req =>
|
||||
req.body.validate[A].fold(
|
||||
err => {
|
||||
logger.warn(s"Malformed request: $err\n${req.body}")
|
||||
|
|
|
@ -44,7 +44,7 @@ object Insight extends LilaController {
|
|||
}
|
||||
}
|
||||
|
||||
def json(username: String) = OpenBody(BodyParsers.parse.json) { implicit ctx =>
|
||||
def json(username: String) = OpenBody(parse.json) { implicit ctx =>
|
||||
import lila.insight.JsonQuestion, JsonQuestion._
|
||||
Accessible(username) { user =>
|
||||
ctx.body.body.validate[JsonQuestion].fold(
|
||||
|
|
|
@ -17,12 +17,14 @@ import lila.security.{ Permission, Granter, FingerprintedUser }
|
|||
import lila.user.{ UserContext, User => UserModel }
|
||||
|
||||
private[controllers] trait LilaController
|
||||
extends Controller
|
||||
extends BaseController
|
||||
with ContentTypes
|
||||
with RequestGetter
|
||||
with ResponseWriter
|
||||
with LilaSocket {
|
||||
|
||||
protected def controllerComponents = old.play.Env.components.controllerComponents
|
||||
|
||||
protected val controllerLogger = lila.log("controller")
|
||||
|
||||
protected implicit val LilaResultZero = Zero.instance[Result](Results.NotFound)
|
||||
|
@ -51,7 +53,7 @@ private[controllers] trait LilaController
|
|||
)
|
||||
|
||||
protected def Open(f: Context => Fu[Result]): Action[Unit] =
|
||||
Open(BodyParsers.parse.empty)(f)
|
||||
Open(parse.empty)(f)
|
||||
|
||||
protected def Open[A](p: BodyParser[A])(f: Context => Fu[Result]): Action[A] =
|
||||
Action.async(p) { req =>
|
||||
|
@ -61,7 +63,7 @@ private[controllers] trait LilaController
|
|||
}
|
||||
|
||||
protected def OpenBody(f: BodyContext[_] => Fu[Result]): Action[AnyContent] =
|
||||
OpenBody(BodyParsers.parse.anyContent)(f)
|
||||
OpenBody(parse.anyContent)(f)
|
||||
|
||||
protected def OpenBody[A](p: BodyParser[A])(f: BodyContext[A] => Fu[Result]): Action[A] =
|
||||
Action.async(p) { req =>
|
||||
|
@ -71,7 +73,7 @@ private[controllers] trait LilaController
|
|||
}
|
||||
|
||||
protected def Auth(f: Context => UserModel => Fu[Result]): Action[Unit] =
|
||||
Auth(BodyParsers.parse.empty)(f)
|
||||
Auth(parse.empty)(f)
|
||||
|
||||
protected def Auth[A](p: BodyParser[A])(f: Context => UserModel => Fu[Result]): Action[A] =
|
||||
Action.async(p) { req =>
|
||||
|
@ -83,7 +85,7 @@ private[controllers] trait LilaController
|
|||
}
|
||||
|
||||
protected def AuthBody(f: BodyContext[_] => UserModel => Fu[Result]): Action[AnyContent] =
|
||||
AuthBody(BodyParsers.parse.anyContent)(f)
|
||||
AuthBody(parse.anyContent)(f)
|
||||
|
||||
protected def AuthBody[A](p: BodyParser[A])(f: BodyContext[A] => UserModel => Fu[Result]): Action[A] =
|
||||
Action.async(p) { req =>
|
||||
|
@ -98,7 +100,7 @@ private[controllers] trait LilaController
|
|||
Secure(perm(Permission))(f)
|
||||
|
||||
protected def Secure(perm: Permission)(f: Context => UserModel => Fu[Result]): Action[AnyContent] =
|
||||
Secure(BodyParsers.parse.anyContent)(perm)(f)
|
||||
Secure(parse.anyContent)(perm)(f)
|
||||
|
||||
protected def Secure[A](p: BodyParser[A])(perm: Permission)(f: Context => UserModel => Fu[Result]): Action[A] =
|
||||
Auth(p) { implicit ctx => me =>
|
||||
|
@ -106,7 +108,7 @@ private[controllers] trait LilaController
|
|||
}
|
||||
|
||||
protected def SecureF(s: UserModel => Boolean)(f: Context => UserModel => Fu[Result]): Action[AnyContent] =
|
||||
Auth(BodyParsers.parse.anyContent) { implicit ctx => me =>
|
||||
Auth(parse.anyContent) { implicit ctx => me =>
|
||||
s(me).fold(f(ctx)(me), authorizationFailed)
|
||||
}
|
||||
|
||||
|
@ -116,7 +118,7 @@ private[controllers] trait LilaController
|
|||
}
|
||||
|
||||
protected def SecureBody(perm: Permission.type => Permission)(f: BodyContext[_] => UserModel => Fu[Result]): Action[AnyContent] =
|
||||
SecureBody(BodyParsers.parse.anyContent)(perm(Permission))(f)
|
||||
SecureBody(parse.anyContent)(perm(Permission))(f)
|
||||
|
||||
protected def Firewall[A <: Result](a: => Fu[A])(implicit ctx: Context): Fu[Result] =
|
||||
Env.security.firewall.accepts(ctx.req) flatMap {
|
||||
|
|
|
@ -157,7 +157,7 @@ object Mod extends LilaController {
|
|||
Env.memo.asyncCache.multi[IpAddress, Int](
|
||||
name = "ipIntel",
|
||||
f = ip => {
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
val email = Env.api.Net.Email
|
||||
val url = s"http://check.getipintel.net/check.php?ip=$ip&contact=$email"
|
||||
WS.url(url).get().map(_.body).mon(_.security.proxy.request.time).flatMap { str =>
|
||||
|
|
|
@ -301,7 +301,7 @@ object Round extends LilaController with TheftPrevention {
|
|||
}
|
||||
}
|
||||
|
||||
def atom(gameId: String, color: String) = Action.async { implicit req =>
|
||||
def atom(gameId: String, color: String) = old.play.Env.actionBuilder.async { implicit req =>
|
||||
GameRepo.pov(gameId, color) flatMap {
|
||||
case Some(pov) => GameRepo initialFen pov.game map { initialFen =>
|
||||
val pgn = Env.game.pgnDump(pov.game, initialFen, PgnDump.WithFlags(clocks = false))
|
||||
|
|
|
@ -148,7 +148,7 @@ object Tournament extends LilaController {
|
|||
}
|
||||
}
|
||||
|
||||
def join(id: String) = AuthBody(BodyParsers.parse.json) { implicit ctx => implicit me =>
|
||||
def join(id: String) = AuthBody(parse.json) { implicit ctx => implicit me =>
|
||||
NoLame {
|
||||
val password = ctx.body.body.\("p").asOpt[String]
|
||||
negotiate(
|
||||
|
|
|
@ -20,7 +20,7 @@ object UserAnalysis extends LilaController with TheftPrevention {
|
|||
|
||||
def index = load("", Standard)
|
||||
|
||||
def parse(arg: String) = arg.split("/", 2) match {
|
||||
def parseUri(arg: String) = arg.split("/", 2) match {
|
||||
case Array(key) => load("", Variant orDefault key)
|
||||
case Array(key, fen) => Variant.byKey get key match {
|
||||
case Some(variant) => load(fen, variant)
|
||||
|
@ -114,7 +114,7 @@ object UserAnalysis extends LilaController with TheftPrevention {
|
|||
).map(_ as JSON)
|
||||
}
|
||||
|
||||
def forecasts(fullId: String) = AuthBody(BodyParsers.parse.json) { implicit ctx => me =>
|
||||
def forecasts(fullId: String) = AuthBody(parse.json) { implicit ctx => me =>
|
||||
import lila.round.Forecast
|
||||
OptionFuResult(GameRepo pov fullId) { pov =>
|
||||
if (isTheft(pov)) fuccess(theftResponse)
|
||||
|
@ -131,7 +131,7 @@ object UserAnalysis extends LilaController with TheftPrevention {
|
|||
}
|
||||
}
|
||||
|
||||
def forecastsOnMyTurn(fullId: String, uci: String) = AuthBody(BodyParsers.parse.json) { implicit ctx => me =>
|
||||
def forecastsOnMyTurn(fullId: String, uci: String) = AuthBody(parse.json) { implicit ctx => me =>
|
||||
import lila.round.Forecast
|
||||
OptionFuResult(GameRepo pov fullId) { pov =>
|
||||
if (isTheft(pov)) fuccess(theftResponse)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package lila.app
|
||||
package templating
|
||||
|
||||
import controllers.routes
|
||||
import play.twirl.api.Html
|
||||
|
||||
import lila.api.Context
|
||||
|
@ -16,7 +15,7 @@ trait AssetHelper { self: I18nHelper =>
|
|||
val assetBaseUrl = s"//$assetDomain"
|
||||
|
||||
def cdnUrl(path: String) = s"$assetBaseUrl$path"
|
||||
def staticUrl(path: String) = s"$assetBaseUrl${routes.Assets.at(path)}"
|
||||
def staticUrl(path: String) = s"$assetBaseUrl/assets/$path"
|
||||
|
||||
def dbImageUrl(path: String) = s"$assetBaseUrl/image/$path"
|
||||
|
||||
|
@ -27,7 +26,7 @@ trait AssetHelper { self: I18nHelper =>
|
|||
cssAt("vendor/" + name, staticDomain)
|
||||
|
||||
def cssAt(path: String, staticDomain: Boolean, version: AssetVersion): Html = Html {
|
||||
val href = if (staticDomain) staticUrl(path) else routes.Assets.at(path)
|
||||
val href = if (staticDomain) staticUrl(path) else s"/assets/$path"
|
||||
s"""<link href="$href?v=$version" type="text/css" rel="stylesheet"/>"""
|
||||
}
|
||||
def cssAt(path: String, staticDomain: Boolean = true)(implicit ctx: Context): Html =
|
||||
|
|
|
@ -33,7 +33,7 @@ tablebaseEndpoint: "@tablebaseEndpoint"
|
|||
</div>
|
||||
<div class="list">
|
||||
@chess.variant.Variant.all.filterNot(chess.variant.FromPosition ==).map { v =>
|
||||
<a data-icon="@iconByVariant(v)" href="@routes.UserAnalysis.parse(v.key)">@v.name</a>
|
||||
<a data-icon="@iconByVariant(v)" href="@routes.UserAnalysis.parseUri(v.key)">@v.name</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -96,7 +96,7 @@ description = "All of lichess features are free for all and forever. We do it fo
|
|||
<a href="@routes.UserAnalysis.index()#explorer">Opening explorer</a> (34 million games!)
|
||||
}
|
||||
@tr(unlimited) {
|
||||
<a href="@routes.UserAnalysis.parse("8/3k4/8/5r2/1PP5/2RK4/8/8 w - - 0 1")#explorer">6 men endgame tablebase</a>
|
||||
<a href="@routes.UserAnalysis.parseUri("8/3k4/8/5r2/1PP5/2RK4/8/8 w - - 0 1")#explorer">6 men endgame tablebase</a>
|
||||
}
|
||||
@tr(check) {
|
||||
Download/Upload any game as PGN
|
||||
|
|
|
@ -120,7 +120,7 @@ POST /training/:id/attempt controllers.Puzzle.round(id: Int)
|
|||
# User Analysis
|
||||
GET /analysis/socket controllers.UserAnalysis.socket
|
||||
GET /analysis/keyboard-i18n controllers.UserAnalysis.keyboardI18n
|
||||
GET /analysis/*something controllers.UserAnalysis.parse(something: String)
|
||||
GET /analysis/*something controllers.UserAnalysis.parseUri(something: String)
|
||||
GET /analysis controllers.UserAnalysis.index
|
||||
POST /analysis/pgn controllers.UserAnalysis.pgn
|
||||
|
||||
|
@ -530,6 +530,5 @@ POST /jslog/$id<\w{12}> controllers.Main.jslog(id)
|
|||
|
||||
# Assets
|
||||
GET /glyphs controllers.Main.glyphs
|
||||
GET /assets/*file controllers.Assets.at(path="/public", file)
|
||||
|
||||
GET /robots.txt controllers.Main.robots
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package lila.api
|
||||
|
||||
import akka.actor._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
import lila.hub.actorApi.{ DeployPre, DeployPost }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ package lila.common
|
|||
|
||||
import play.api.i18n.Lang
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
// http://detectlanguage.com
|
||||
final class DetectLanguage(url: String, key: String) {
|
||||
|
|
|
@ -25,23 +25,22 @@ object Env {
|
|||
|
||||
def start(components: LilaComponents) = _ref.set(components)
|
||||
|
||||
private lazy val components: LilaComponents = Option(_ref.get()).get
|
||||
lazy val components: LilaComponents = Option(_ref.get()).get
|
||||
|
||||
lazy val application: Application = components.application
|
||||
lazy val lifecycle: ApplicationLifecycle = components.applicationLifecycle
|
||||
implicit lazy val defaultContext: ExecutionContext = components.executionContext
|
||||
|
||||
lazy val actorSystem: ActorSystem = application.actorSystem
|
||||
lazy val materializer: Materializer = application.materializer
|
||||
lazy val configuration: Configuration = application.configuration
|
||||
lazy val mode: Mode = application.mode
|
||||
lazy val scheduler: Scheduler = actorSystem.scheduler
|
||||
lazy val defaultContext: ExecutionContext = components.executionContext
|
||||
lazy val environment: Environment = components.environment
|
||||
|
||||
lazy val WS: WSClient = {
|
||||
import play.api.libs.ws.ahc.{ AsyncHttpClientProvider, AhcWSClientProvider }
|
||||
implicit val mat = materializer
|
||||
implicit val ec = defaultContext
|
||||
val asyncHttpClient = new AsyncHttpClientProvider(environment, configuration, lifecycle).get
|
||||
new AhcWSClientProvider(asyncHttpClient).get
|
||||
}
|
||||
|
@ -62,60 +61,4 @@ object Env {
|
|||
def url(url: String) = WS.url(url)
|
||||
def close() = {}
|
||||
}
|
||||
// lazy val cache: CacheApi = injector.instanceOf(classOf[CacheApi])
|
||||
// lazy val procNbr = Runtime.getRuntime.availableProcessors()
|
||||
|
||||
// private def factory(of: String) = new ThreadFactory {
|
||||
// val counter = new AtomicInteger(0)
|
||||
// override def newThread(r: Runnable): Thread = new Thread(r, s"$of-${counter.incrementAndGet()}")
|
||||
// }
|
||||
|
||||
// lazy val httpRequestExecContext = ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(procNbr * 2, factory("http-requests")))
|
||||
// lazy val httpCallsExecContext = ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(procNbr * 10, factory("http-calls")))
|
||||
// lazy val dataStoreExecContext = ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(procNbr * 5, factory("data-store")))
|
||||
|
||||
}
|
||||
|
||||
object api {
|
||||
object Play {
|
||||
def application = Env.application
|
||||
def maybeApplication = Option(Env.application)
|
||||
def classloader = Env.application.classloader
|
||||
def configuration = Env.configuration
|
||||
def current = Env.application
|
||||
def isDev = Env.mode == Mode.Dev
|
||||
def isProd = Env.mode == Mode.Prod
|
||||
def isTest = Env.mode == Mode.Test
|
||||
def mode = Env.mode
|
||||
// def getFile(relativePath: String) = Env.application.getFile(relativePath)
|
||||
// def getExistingFile(relativePath: String) = Env.application.getExistingFile(relativePath)
|
||||
// def resource(name: String) = Env.application.resource(name)
|
||||
// def resourceAsStream(name: String) = Env.application.resourceAsStream(name)
|
||||
}
|
||||
object libs {
|
||||
object ws {
|
||||
def WS = Env.WS
|
||||
}
|
||||
object concurrent {
|
||||
object Akka {
|
||||
object Implicits {
|
||||
implicit def defaultActorSystem: ActorSystem = Env.actorSystem
|
||||
implicit def defaultMaterializer: Materializer = Env.materializer
|
||||
implicit def defaultScheduler: Scheduler = Env.scheduler
|
||||
}
|
||||
def defaultScheduler: Scheduler = Env.scheduler
|
||||
def defaultActorSystem: ActorSystem = Env.actorSystem
|
||||
def defaultMaterializer: Materializer = Env.materializer
|
||||
}
|
||||
object Execution {
|
||||
object Implicits {
|
||||
implicit def defaultContext: ExecutionContext = Env.defaultContext
|
||||
}
|
||||
def defaultContext: ExecutionContext = Env.defaultContext
|
||||
// def httpRequestsContext = Env.httpRequestExecContext
|
||||
// def httpCallsContext = Env.httpCallsExecContext
|
||||
// def dataStoreContext = Env.dataStoreExecContext
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package lila
|
||||
|
||||
import old.play.api.libs.concurrent.Execution.Implicits._
|
||||
import old.play.Env.defaultContext
|
||||
import scala.concurrent.duration._
|
||||
import scala.concurrent.{ Future, ExecutionContext }
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ final class Env(
|
|||
}
|
||||
|
||||
def fetchPgn(id: String): Fu[Option[String]] = {
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
WS.url(s"$InternalEndpoint/master/pgn/$id").get() map {
|
||||
case res if res.status == 200 => res.body.some
|
||||
case _ => None
|
||||
|
|
|
@ -6,7 +6,7 @@ import scala.util.{ Try, Success, Failure }
|
|||
import org.joda.time.DateTime
|
||||
import org.joda.time.format.DateTimeFormat
|
||||
import play.api.libs.iteratee._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
import lila.db.dsl._
|
||||
import lila.game.BSONHandlers.gameBSONHandler
|
||||
|
|
|
@ -2,7 +2,7 @@ package lila.game
|
|||
|
||||
import akka.stream.scaladsl.{ Source => StreamSource }
|
||||
import akka.util.ByteString
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
import chess.format.{ Forsyth, FEN }
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package lila.plan
|
||||
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
import play.api.libs.ws.WSResponse
|
||||
|
||||
import lila.user.User
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package lila.push
|
||||
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
private final class GooglePush(
|
||||
getDevice: String => Fu[Option[Device]],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package lila.push
|
||||
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
private final class OneSignalPush(
|
||||
getDevices: String => Fu[List[Device]],
|
||||
|
|
|
@ -22,7 +22,7 @@ final class ESClientHttp(
|
|||
val index: Index,
|
||||
writeable: Boolean
|
||||
) extends ESClient {
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
def store(id: Id, doc: JsObject) = writeable ?? monitor("store") {
|
||||
HTTP(s"store/${index.name}/${id.value}", doc)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package lila.security
|
||||
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
final class DisposableEmailDomain(
|
||||
providerUrl: String,
|
||||
|
|
|
@ -4,7 +4,7 @@ import scala.concurrent.duration._
|
|||
|
||||
import akka.actor.ActorSystem
|
||||
import play.api.i18n.Lang
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
import play.api.libs.ws.WSAuthScheme
|
||||
import play.twirl.api.Html
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package lila.security
|
||||
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
import play.api.mvc.RequestHeader
|
||||
|
||||
import lila.common.PimpedJson._
|
||||
|
|
|
@ -2,7 +2,7 @@ package lila.security
|
|||
|
||||
import lila.common.IpAddress
|
||||
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
final class Tor(providerUrl: String) {
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package lila.slack
|
||||
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
import lila.common.PimpedJson._
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package lila.study
|
||||
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
private final class PgnFetch {
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package lila.tv
|
|||
import akka.actor._
|
||||
import akka.pattern.{ ask, pipe }
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
private final class Streaming(
|
||||
system: ActorSystem,
|
||||
|
|
|
@ -2,7 +2,7 @@ package lila.video
|
|||
|
||||
import org.joda.time.DateTime
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
private[video] final class Sheet(
|
||||
url: String,
|
||||
|
|
|
@ -2,7 +2,7 @@ package lila.video
|
|||
|
||||
import org.joda.time.DateTime
|
||||
import play.api.libs.json._
|
||||
import old.play.api.libs.ws.WS
|
||||
import old.play.Env.WS
|
||||
|
||||
private[video] final class Youtube(
|
||||
url: String,
|
||||
|
|
Loading…
Reference in New Issue