66 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
class UsaElection extends VirtualDeviceManager
 | 
						|
{
 | 
						|
	private $api_uri = 'https://ft-ig-content-prod.s3.eu-west-1.amazonaws.com/v2/Financial-Times/ig-rcp-polls-backend/2020-presidential/latest/presidential-races.json'; // Your redirect uri
 | 
						|
	private $virtual_device_name = "Election";
 | 
						|
	private $subdevice_type = "election";
 | 
						|
 | 
						|
	function fetch($url = 'true')
 | 
						|
	{
 | 
						|
		if (DeviceManager::registeret($this->virtual_device_name)) {
 | 
						|
			$deviceId = DeviceManager::getDeviceByToken($this->virtual_device_name)['device_id'];
 | 
						|
			$dataItems = ['Trump', 'Biden', 'Unknown'];
 | 
						|
			foreach ($dataItems as $dataItem) {
 | 
						|
				if (!$subDevice = SubDeviceManager::getSubDeviceByMaster($deviceId, strtolower($dataItem))) {
 | 
						|
					SubDeviceManager::create($deviceId, strtolower($dataItem), '% ' . $dataItem);
 | 
						|
					sleep(1);
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			if (!$this->fetchEnabled($deviceId, $subDevice['subdevice_id'])) die();
 | 
						|
 | 
						|
			$finalUrl = $this->api_uri;
 | 
						|
			$json = json_decode(Utilities::CallAPI('GET', $finalUrl), true);
 | 
						|
 | 
						|
			$voteSpectrum = [
 | 
						|
				'republican' => [
 | 
						|
					'solid' => 0,
 | 
						|
					'leaning' => 0,
 | 
						|
				],
 | 
						|
				'democrat' => [
 | 
						|
					'solid' => 0,
 | 
						|
					'leaning' => 0,
 | 
						|
				],
 | 
						|
				'tossup' => 0
 | 
						|
			];
 | 
						|
 | 
						|
			foreach ($json as $state){
 | 
						|
				if ($state['raceCategory'] != 'tossup'){
 | 
						|
					$raceCategory = explode('-',$state['raceCategory']);
 | 
						|
					$voteSpectrum[$raceCategory[0]][$raceCategory[1]] = $voteSpectrum[$raceCategory[0]][$raceCategory[1]] + $state['raceDelegates'];
 | 
						|
				} else {
 | 
						|
					$voteSpectrum['tossup'] = $voteSpectrum['tossup'] + $state['raceDelegates'];
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			$Trump = $voteSpectrum['republican']['solid'] + $voteSpectrum['republican']['leaning'];
 | 
						|
			$Biden = $voteSpectrum['democrat']['solid'] + $voteSpectrum['democrat']['leaning'];
 | 
						|
			$Unknown = $voteSpectrum['tossup'];
 | 
						|
 | 
						|
			$OnePercent = ($Trump + $Biden + $Unknown) / 100;
 | 
						|
 | 
						|
			foreach ($dataItems as $Category) {
 | 
						|
				RecordManager::create($deviceId, strtolower($Category), round(($$Category / $OnePercent)));
 | 
						|
			}
 | 
						|
 | 
						|
 | 
						|
		} else {
 | 
						|
			DeviceManager::create($this->virtual_device_name, $this->virtual_device_name);
 | 
						|
			DeviceManager::approved($this->virtual_device_name);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 |