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

87 lines
3.4 KiB
Scala

package com.twitter.timelineranker.config
import com.twitter.servo.util.Gate
import com.twitter.timelineranker.clients.ScopedCortexTweetQueryServiceClientFactory
import com.twitter.timelines.clients.gizmoduck.ScopedGizmoduckClientFactory
import com.twitter.timelines.clients.manhattan.ScopedUserMetadataClientFactory
import com.twitter.timelines.clients.socialgraph.ScopedSocialGraphClientFactory
import com.twitter.timelines.clients.strato.realgraph.ScopedRealGraphClientFactory
import com.twitter.timelines.clients.tweetypie.AdditionalFieldConfig
import com.twitter.timelines.clients.tweetypie.ScopedTweetyPieClientFactory
import com.twitter.timelines.visibility.VisibilityEnforcerFactory
import com.twitter.timelines.visibility.VisibilityProfileHydratorFactory
import com.twitter.tweetypie.thriftscala.{Tweet => TTweet}
class ClientWrapperFactories(config: RuntimeConfiguration) {
private[this] val statsReceiver = config.statsReceiver
val cortexTweetQueryServiceClientFactory: ScopedCortexTweetQueryServiceClientFactory =
new ScopedCortexTweetQueryServiceClientFactory(
config.underlyingClients.cortexTweetQueryServiceClient,
statsReceiver = statsReceiver
)
val gizmoduckClientFactory: ScopedGizmoduckClientFactory = new ScopedGizmoduckClientFactory(
config.underlyingClients.gizmoduckClient,
statsReceiver = statsReceiver
)
val socialGraphClientFactory: ScopedSocialGraphClientFactory = new ScopedSocialGraphClientFactory(
config.underlyingClients.sgsClient,
statsReceiver
)
val visibilityEnforcerFactory: VisibilityEnforcerFactory = new VisibilityEnforcerFactory(
gizmoduckClientFactory,
socialGraphClientFactory,
statsReceiver
)
val tweetyPieAdditionalFieldsToDisable: Seq[Short] = Seq(
TTweet.MediaTagsField.id,
TTweet.SchedulingInfoField.id,
TTweet.EscherbirdEntityAnnotationsField.id,
TTweet.CardReferenceField.id,
TTweet.SelfPermalinkField.id,
TTweet.ExtendedTweetMetadataField.id,
TTweet.CommunitiesField.id,
TTweet.VisibleTextRangeField.id
)
val tweetyPieHighQoSClientFactory: ScopedTweetyPieClientFactory =
new ScopedTweetyPieClientFactory(
tweetyPieClient = config.underlyingClients.tweetyPieHighQoSClient,
additionalFieldConfig = AdditionalFieldConfig(
fieldDisablingGates = tweetyPieAdditionalFieldsToDisable.map(_ -> Gate.False).toMap
),
includePartialResults = Gate.False,
statsReceiver = statsReceiver
)
val tweetyPieLowQoSClientFactory: ScopedTweetyPieClientFactory = new ScopedTweetyPieClientFactory(
tweetyPieClient = config.underlyingClients.tweetyPieLowQoSClient,
additionalFieldConfig = AdditionalFieldConfig(
fieldDisablingGates = tweetyPieAdditionalFieldsToDisable.map(_ -> Gate.False).toMap
),
includePartialResults = Gate.False,
statsReceiver = statsReceiver
)
val userMetadataClientFactory: ScopedUserMetadataClientFactory =
new ScopedUserMetadataClientFactory(
config.underlyingClients.manhattanStarbuckClient,
TimelineRankerConstants.ManhattanStarbuckAppId,
statsReceiver
)
val visibilityProfileHydratorFactory: VisibilityProfileHydratorFactory =
new VisibilityProfileHydratorFactory(
gizmoduckClientFactory,
socialGraphClientFactory,
statsReceiver
)
val realGraphClientFactory =
new ScopedRealGraphClientFactory(config.underlyingClients.stratoClient, statsReceiver)
}