/**
* Annotate the event with all relevant info.
* @param mixed $event Object or (flat) array
* @return mixed The transformed event array or WP_Error on failure.
*/
static function validate_and_sanitize($event)
{
$event = (object) $event;
// Required
if (!$event->_en) {
return new WP_Error('invalid_event', 'A valid event must be specified via `_en`', 400);
}
// delete non-routable addresses otherwise geoip will discard the record entirely
if (property_exists($event, '_via_ip') && preg_match('/^192\\.168|^10\\./', $event->_via_ip)) {
unset($event->_via_ip);
}
$validated = array('browser_type' => Jetpack_Tracks_Client::BROWSER_TYPE, '_aua' => Jetpack_Tracks_Client::get_user_agent());
$_event = (object) array_merge((array) $event, $validated);
// If you want to blacklist property names, do it here.
// Make sure we have an event timestamp.
if (!isset($_event->_ts)) {
$_event->_ts = Jetpack_Tracks_Client::build_timestamp();
}
return $_event;
}