mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-27 21:46:04 +02:00
48 lines
1.6 KiB
Scala
48 lines
1.6 KiB
Scala
package com.twitter.home_mixer.module
|
|
|
|
import com.google.inject.Provides
|
|
import com.twitter.conversions.DurationOps._
|
|
import com.twitter.finagle.mtls.authentication.ServiceIdentifier
|
|
import com.twitter.finagle.stats.StatsReceiver
|
|
import com.twitter.inject.TwitterModule
|
|
import com.twitter.inject.annotations.Flag
|
|
import com.twitter.timelinemixer.clients.feedback.FeedbackHistoryManhattanClient
|
|
import com.twitter.timelinemixer.clients.feedback.FeedbackHistoryManhattanClientConfig
|
|
import com.twitter.timelines.clients.manhattan.mhv3.ManhattanClientBuilder
|
|
import com.twitter.util.Duration
|
|
import javax.inject.Singleton
|
|
|
|
object FeedbackHistoryClientModule extends TwitterModule {
|
|
private val ProdDataset = "feedback_history"
|
|
private val StagingDataset = "feedback_history_nonprod"
|
|
private final val Timeout = "mh_feedback_history.timeout"
|
|
|
|
flag[Duration](Timeout, 150.millis, "Timeout per request")
|
|
|
|
@Provides
|
|
@Singleton
|
|
def providesFeedbackHistoryClient(
|
|
@Flag(Timeout) timeout: Duration,
|
|
serviceId: ServiceIdentifier,
|
|
statsReceiver: StatsReceiver
|
|
) = {
|
|
val manhattanDataset = serviceId.environment.toLowerCase match {
|
|
case "prod" => ProdDataset
|
|
case _ => StagingDataset
|
|
}
|
|
|
|
val config = new FeedbackHistoryManhattanClientConfig {
|
|
val dataset = manhattanDataset
|
|
val isReadOnly = true
|
|
val serviceIdentifier = serviceId
|
|
override val defaultMaxTimeout = timeout
|
|
}
|
|
|
|
new FeedbackHistoryManhattanClient(
|
|
ManhattanClientBuilder.buildManhattanEndpoint(config, statsReceiver),
|
|
manhattanDataset,
|
|
statsReceiver
|
|
)
|
|
}
|
|
}
|