video-ad-sdk
Version:
VAST/VPAID SDK that allows video ads to be played on top of any player
53 lines (45 loc) • 1.55 kB
text/typescript
import {get, getAll, getText, getAttributes} from '../xml'
import type {ParsedAd, ParsedXML, VastTrackingEvent, Optional} from '../types'
import {parseOffset} from './helpers/parseOffset'
import {getLinearCreative} from './helpers/getLinearCreative'
const getTrackingEvent = (
trackingEventElement: ParsedXML
): VastTrackingEvent => {
const {event, offset} = getAttributes(trackingEventElement)
const uri = getText(trackingEventElement)
return {
event,
offset: offset && parseOffset(offset),
uri
}
}
/**
* Gets the Linear tracking events from the Vast Ad
*
* @param ad VAST ad object.
* @param eventName If provided it will filter-out the array events against it.
* @returns Array of Tracking event definitions
*/
export const getLinearTrackingEvents = (
ad: ParsedAd,
eventName?: string
): Optional<VastTrackingEvent[]> => {
const creativeElement = ad && getLinearCreative(ad)
const linearElement = creativeElement && get(creativeElement, 'Linear')
const trackingEventsElement =
linearElement && get(linearElement, 'TrackingEvents')
const trackingEventElements =
trackingEventsElement && getAll(trackingEventsElement, 'Tracking')
if (trackingEventElements && trackingEventElements.length > 0) {
const trackingEvents = trackingEventElements.map(getTrackingEvent)
if (!eventName) {
return trackingEvents
}
const filteredEvents = trackingEvents.filter(
({event}) => event === eventName
)
if (filteredEvents.length > 0) {
return filteredEvents
}
}
}