the-algorithm/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/FeedbackHistoryClientModule.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
)
}
}