the-algorithm/product-mixer/component-library/src/main/scala/com/twitter/product_mixer/component_library/pipeline/candidate/who_to_follow_module/WhoToFollowCandidatePipelineQueryTransformer.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

40 lines
1.7 KiB
Scala

package com.twitter.product_mixer.component_library.pipeline.candidate.who_to_follow_module
import com.twitter.peoplediscovery.api.thriftscala.ClientContext
import com.twitter.peoplediscovery.api.thriftscala.GetModuleRequest
import com.twitter.product_mixer.core.feature.Feature
import com.twitter.product_mixer.core.functional_component.transformer.CandidatePipelineQueryTransformer
import com.twitter.product_mixer.core.pipeline.PipelineQuery
import com.twitter.timelines.configapi.Param
object WhoToFollowCandidatePipelineQueryTransformer {
val DisplayLocation = "timeline"
val SupportedLayouts = Seq("user-bio-list")
val LayoutVersion = 2
}
case class WhoToFollowCandidatePipelineQueryTransformer[-Query <: PipelineQuery](
displayLocationParam: Param[String],
supportedLayoutsParam: Param[Seq[String]],
layoutVersionParam: Param[Int],
excludedUserIdsFeature: Option[Feature[PipelineQuery, Seq[Long]]],
) extends CandidatePipelineQueryTransformer[Query, GetModuleRequest] {
override def transform(input: Query): GetModuleRequest =
GetModuleRequest(
clientContext = ClientContext(
userId = input.getRequiredUserId,
deviceId = input.clientContext.deviceId,
userAgent = input.clientContext.userAgent,
countryCode = input.clientContext.countryCode,
languageCode = input.clientContext.languageCode,
),
displayLocation = input.params(displayLocationParam),
supportedLayouts = input.params(supportedLayoutsParam),
layoutVersion = input.params(layoutVersionParam),
excludedUserIds =
excludedUserIdsFeature.flatMap(feature => input.features.map(_.get(feature))),
includePromoted = Some(true),
)
}