the-algorithm/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/AdvertiserBrandSafetySettingsStoreModule.scala
twitter-team ef4c5eb65e Twitter Recommendation Algorithm
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
2023-03-31 17:36:31 -05:00

57 lines
2.4 KiB
Scala

package com.twitter.home_mixer.module
import com.google.inject.Provides
import com.twitter.adserver.{thriftscala => ads}
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.storage.client.manhattan.kv.Guarantee
import com.twitter.storehaus.ReadableStore
import com.twitter.storehaus_internal.manhattan.ManhattanCluster
import com.twitter.storehaus_internal.manhattan.ManhattanClusters
import com.twitter.timelines.clients.ads.AdvertiserBrandSafetySettingsStore
import com.twitter.timelines.clients.manhattan.mhv3.ManhattanClientBuilder
import com.twitter.timelines.clients.manhattan.mhv3.ManhattanClientConfigWithDataset
import com.twitter.util.Duration
import javax.inject.Singleton
object AdvertiserBrandSafetySettingsStoreModule extends TwitterModule {
@Provides
@Singleton
def providesAdvertiserBrandSafetySettingsStore(
injectedServiceIdentifier: ServiceIdentifier,
statsReceiver: StatsReceiver
): ReadableStore[Long, ads.AdvertiserBrandSafetySettings] = {
val advertiserBrandSafetySettingsManhattanClientConfig = new ManhattanClientConfigWithDataset {
override val cluster: ManhattanCluster = ManhattanClusters.apollo
override val appId: String = "brand_safety_apollo"
override val dataset = "advertiser_brand_safety_settings"
override val statsScope: String = "AdvertiserBrandSafetySettingsManhattanClient"
override val defaultGuarantee = Guarantee.Weak
override val defaultMaxTimeout: Duration = 100.milliseconds
override val maxRetryCount: Int = 1
override val isReadOnly: Boolean = true
override val serviceIdentifier: ServiceIdentifier = injectedServiceIdentifier
}
val advertiserBrandSafetySettingsManhattanEndpoint = ManhattanClientBuilder
.buildManhattanEndpoint(advertiserBrandSafetySettingsManhattanClientConfig, statsReceiver)
val advertiserBrandSafetySettingsStore: ReadableStore[Long, ads.AdvertiserBrandSafetySettings] =
AdvertiserBrandSafetySettingsStore
.cached(
advertiserBrandSafetySettingsManhattanEndpoint,
advertiserBrandSafetySettingsManhattanClientConfig.dataset,
ttl = 60.minutes,
maxKeys = 100000,
windowSize = 10L
)(statsReceiver)
advertiserBrandSafetySettingsStore
}
}