public static function execute(&$Logger, \buyrtbfidelity\parsers\openrtb\OpenRTBParser &$Parser, \model\openrtb\RtbBidRequest &$RtbBidRequest, \model\openrtb\RtbBidRequestUser &$RtbBidRequestUser, &$rtb_user) { // User ID \util\ParseHelper::parse_item($RtbBidRequestUser, $rtb_user, "id"); // BuyerID, alternative to User ID \util\ParseHelper::parse_item($RtbBidRequestUser, $rtb_user, "buyeruid"); // Year of Birth \util\ParseHelper::parse_item($RtbBidRequestUser, $rtb_user, "yob"); // User Keywords Meta /* * Apparently Neal and Jim not sure on this one, * saying it could be a string or an array of strings */ if (isset($rtb_user["keywords"])) { if (is_array($rtb_user["keywords"])) { \util\ParseHelper::parse_item_list($RtbBidRequestUser, $rtb_user, "keywords"); } else { \util\ParseHelper::parse_item($RtbBidRequestUser, $rtb_user, "keywords"); } } // Custom Data \util\ParseHelper::parse_item($RtbBidRequestUser, $rtb_user, "customdata"); // geo object if (isset($rtb_user["geo"])) { $geo = $rtb_user["geo"]; $RtbBidRequestGeo = new \model\openrtb\RtbBidRequestGeo(); \buyrtbfidelity\parsers\openrtb\parselets\common\ParseGeo::execute($Logger, $Parser, $RtbBidRequest, $RtbBidRequestGeo, $geo); $RtbBidRequestUser->RtbBidRequestGeo = $RtbBidRequestGeo; } // user data objects if (isset($rtb_user["data"]) && is_array($rtb_user["data"])) { $user_data_list = $rtb_user["data"]; foreach ($user_data_list as $user_data) { $RtbBidRequestData = new \model\openrtb\RtbBidRequestData(); \buyrtbfidelity\parsers\openrtb\parselets\common\ParseData::execute($Logger, $Parser, $RtbBidRequest, $RtbBidRequestData, $user_data); $RtbBidRequestUser->RtbBidRequestDataList[] = $RtbBidRequestData; } } }
public static function execute(&$Logger, \buyrtbfidelity\parsers\openrtb\OpenRTBParser &$Parser, \model\openrtb\RtbBidRequest &$RtbBidRequest, \model\openrtb\RtbBidRequestDevice &$RtbBidRequestDevice, &$device) { $RtbBidRequestDevice->devicetype = DEVICE_DESKTOP; if (!isset($Parser->json_post["device"])) { return; } $default_device = $Parser->json_post["device"]; // do not track bit \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "dnt"); // User Agent. If URL encoded, decode if (isset($default_device["ua"])) { \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "ua"); if (strpos($RtbBidRequestDevice->ua, '%20') !== false) { $RtbBidRequestDevice->ua = urldecode($RtbBidRequestDevice->ua); } } /* * NginAd requires the User's IP Address * for black listing purposes and for fill ratios * against the MD5 checksum. * * The OpenRTB spec states it's optional */ \util\ParseHelper::parse_with_exception($RtbBidRequestDevice, $default_device, $Parser->expeption_missing_min_bid_request_params . ": device_ip", "ip"); // geo object if (isset($default_device["geo"])) { $geo = $default_device["geo"]; $RtbBidRequestGeo = new \model\openrtb\RtbBidRequestGeo(); \buyrtbfidelity\parsers\openrtb\parselets\common\ParseGeo::execute($Logger, $Parser, $RtbBidRequest, $RtbBidRequestGeo, $geo); $RtbBidRequestDevice->RtbBidRequestGeo = $RtbBidRequestGeo; } // device id SHA1 \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "didsha1"); // device id MD5 \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "didmd5"); // platform device id SHA1 \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "dpidsha1"); // platform device id MD5 \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "dpidmd5"); // mac address SHA1 \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "macsha1"); // mac address MD5 \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "macmd5"); // IPv6 address \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "ipv6"); // mobile ISP carrier \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "carrier"); // language code ( alpha-2/ISO 639-1 ) \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "language"); // Device OEM make \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "make"); // Device OEM model \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "model"); // OS name \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "os"); // OS version \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "osv"); // Bit Flag for Javascript Enabled \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "js"); // Connection type id \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "connectiontype"); // device type id if (!empty($default_device["devicetype"])) { $RtbBidRequestDevice->devicetype = intval($default_device["devicetype"]); } elseif (isset($RtbBidRequestDevice->model)) { if (\mobileutil\MobileDeviceType::isPhone($RtbBidRequestDevice->model) === true) { $RtbBidRequestDevice->devicetype = DEVICE_MOBILE; } elseif (\mobileutil\MobileDeviceType::isTablet($RtbBidRequestDevice->model) === true) { $RtbBidRequestDevice->devicetype = DEVICE_TABLET; } } if ($RtbBidRequestDevice->devicetype == DEVICE_DESKTOP && isset($RtbBidRequestDevice->ua) && $RtbBidRequestDevice->ua != null) { $detect = new \mobileutil\MobileDetect(null, $RtbBidRequestDevice->ua); if ($detect->isTablet()) { $RtbBidRequestDevice->devicetype = DEVICE_TABLET; } elseif ($detect->isMobile()) { $RtbBidRequestDevice->devicetype = DEVICE_MOBILE; } } // adobe flash version \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "flashver"); // native ads unique id \util\ParseHelper::parse_item($RtbBidRequestDevice, $default_device, "ifa"); }