the-algorithm/unified_user_actions/adapter/src/main/scala/com/twitter/unified_user_actions/adapter/uua_aggregates/UuaActions.scala
twitter-team 617c8c787d Open-sourcing Unified User Actions
Unified User Action (UUA) is a centralized, real-time stream of user actions on Twitter, consumed by various product, ML, and marketing teams. UUA makes sure all internal teams consume the uniformed user actions data in an accurate and fast way.
2023-04-14 16:45:37 -05:00

37 lines
1.3 KiB
Scala

package com.twitter.unified_user_actions.adapter.uua_aggregates
import com.twitter.unified_user_actions.adapter.common.AdapterUtils
import com.twitter.unified_user_actions.thriftscala.ActionType
import com.twitter.unified_user_actions.thriftscala.EventMetadata
import com.twitter.unified_user_actions.thriftscala.Item
import com.twitter.unified_user_actions.thriftscala.KeyedUuaTweet
import com.twitter.unified_user_actions.thriftscala.UnifiedUserAction
abstract class BaseUuaAction(actionType: ActionType) {
def getRekeyedUUA(input: UnifiedUserAction): Option[KeyedUuaTweet] =
getTweetIdFromItem(input.item).map { tweetId =>
KeyedUuaTweet(
tweetId = tweetId,
actionType = input.actionType,
userIdentifier = input.userIdentifier,
eventMetadata = EventMetadata(
sourceTimestampMs = input.eventMetadata.sourceTimestampMs,
receivedTimestampMs = AdapterUtils.currentTimestampMs,
sourceLineage = input.eventMetadata.sourceLineage
)
)
}
protected def getTweetIdFromItem(item: Item): Option[Long] = {
item match {
case Item.TweetInfo(tweetInfo) => Some(tweetInfo.actionTweetId)
case _ => None
}
}
}
/**
* When there is a new user creation event in Gizmoduck
*/
object ClientTweetRenderImpressionUua extends BaseUuaAction(ActionType.ClientTweetRenderImpression)