the-algorithm/timelineranker/server/src/main/scala/com/twitter/timelineranker/common/VisibilityEnforcingTransform.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

23 lines
924 B
Scala

package com.twitter.timelineranker.common
import com.twitter.servo.util.FutureArrow
import com.twitter.timelineranker.core.CandidateEnvelope
import com.twitter.timelineranker.core.HydratedTweets
import com.twitter.timelines.visibility.VisibilityEnforcer
import com.twitter.util.Future
/**
* Transform which uses an instance of a VisiblityEnforcer to filter down HydratedTweets
*/
class VisibilityEnforcingTransform(visibilityEnforcer: VisibilityEnforcer)
extends FutureArrow[CandidateEnvelope, CandidateEnvelope] {
override def apply(envelope: CandidateEnvelope): Future[CandidateEnvelope] = {
visibilityEnforcer.apply(Some(envelope.query.userId), envelope.hydratedTweets.outerTweets).map {
visibleTweets =>
val innerTweets = envelope.hydratedTweets.innerTweets
envelope.copy(
hydratedTweets = HydratedTweets(outerTweets = visibleTweets, innerTweets = innerTweets))
}
}
}