mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-27 13:36:03 +02:00
ef4c5eb65e
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.
45 lines
1.9 KiB
Scala
45 lines
1.9 KiB
Scala
package com.twitter.home_mixer.functional_component.decorator.builder
|
|
|
|
import com.twitter.home_mixer.model.HomeFeatures.EntityTokenFeature
|
|
import com.twitter.home_mixer.model.HomeFeatures.SuggestTypeFeature
|
|
import com.twitter.product_mixer.core.feature.featuremap.FeatureMap
|
|
import com.twitter.product_mixer.core.functional_component.decorator.urt.builder.metadata.BaseClientEventDetailsBuilder
|
|
import com.twitter.product_mixer.core.functional_component.decorator.urt.builder.metadata.BaseClientEventInfoBuilder
|
|
import com.twitter.product_mixer.core.model.common.UniversalNoun
|
|
import com.twitter.product_mixer.core.model.marshalling.response.urt.metadata.ClientEventInfo
|
|
import com.twitter.product_mixer.core.pipeline.PipelineQuery
|
|
import com.twitter.timelines.injection.scribe.InjectionScribeUtil
|
|
|
|
/**
|
|
* Sets the [[ClientEventInfo]] with the `component` field set to the Suggest Type assigned to each candidate
|
|
*/
|
|
case class HomeClientEventInfoBuilder[Query <: PipelineQuery, Candidate <: UniversalNoun[Any]](
|
|
detailsBuilder: Option[BaseClientEventDetailsBuilder[Query, Candidate]] = None)
|
|
extends BaseClientEventInfoBuilder[Query, Candidate] {
|
|
|
|
override def apply(
|
|
query: Query,
|
|
candidate: Candidate,
|
|
candidateFeatures: FeatureMap,
|
|
element: Option[String]
|
|
): Option[ClientEventInfo] = {
|
|
val suggestType = candidateFeatures
|
|
.getOrElse(SuggestTypeFeature, None)
|
|
.getOrElse(throw new UnsupportedOperationException(s"No SuggestType was set"))
|
|
|
|
Some(
|
|
ClientEventInfo(
|
|
component = InjectionScribeUtil.scribeComponent(suggestType),
|
|
element = element,
|
|
details = detailsBuilder.flatMap(_.apply(query, candidate, candidateFeatures)),
|
|
action = None,
|
|
/**
|
|
* A backend entity encoded by the Client Entities Encoding Library.
|
|
* Placeholder string for now
|
|
*/
|
|
entityToken = candidateFeatures.getOrElse(EntityTokenFeature, None)
|
|
)
|
|
)
|
|
}
|
|
}
|