the-algorithm/home-mixer/server/src/main/scala/com/twitter/home_mixer/model/HomeAdsQuery.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

43 lines
1.6 KiB
Scala

package com.twitter.home_mixer.model
import com.twitter.adserver.thriftscala.RequestTriggerType
import com.twitter.home_mixer.model.HomeFeatures.GetInitialFeature
import com.twitter.home_mixer.model.HomeFeatures.GetNewerFeature
import com.twitter.home_mixer.model.HomeFeatures.GetOlderFeature
import com.twitter.home_mixer.model.HomeFeatures.PollingFeature
import com.twitter.home_mixer.model.request.HasDeviceContext
import com.twitter.product_mixer.component_library.model.cursor.UrtOrderedCursor
import com.twitter.product_mixer.component_library.model.query.ads.AdsQuery
import com.twitter.product_mixer.core.feature.featuremap.FeatureMap
import com.twitter.product_mixer.core.pipeline.HasPipelineCursor
import com.twitter.product_mixer.core.pipeline.PipelineQuery
/**
* These are for feeds needed for ads only.
*/
trait HomeAdsQuery
extends AdsQuery
with PipelineQuery
with HasDeviceContext
with HasPipelineCursor[UrtOrderedCursor] {
private val featureToRequestTriggerType = Seq(
(GetInitialFeature, RequestTriggerType.Initial),
(GetNewerFeature, RequestTriggerType.Scroll),
(GetOlderFeature, RequestTriggerType.Scroll),
(PollingFeature, RequestTriggerType.AutoRefresh)
)
override val autoplayEnabled: Option[Boolean] = deviceContext.flatMap(_.autoplayEnabled)
override def requestTriggerType: Option[RequestTriggerType] = {
val features = this.features.getOrElse(FeatureMap.empty)
featureToRequestTriggerType.collectFirst {
case (feature, requestType) if features.get(feature) => Some(requestType)
}.flatten
}
override val disableNsfwAvoidance: Option[Boolean] = Some(true)
}