Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday 31 January 2019

Uber driven out of Barcelona again

Uber is suspending its professional taxi service in Barcelona from tomorrow almost a year after it re-entered the Catalan capital.

The move follows the regional government agreeing new regulations for the vehicle for hire (VTC) sector aimed at making sure they do not compete directly with taxis.

“The new restrictions approved by the Catalan Government leave us with no choice but to suspend UberX while we assess our future in Barcelona. We are committed to being a long term partner to Spanish cities and hope to work with the Catalan Government and the City Council on fair regulation for all,” an Uber spokesman told us.

We’ve reached out to Cabify to ask whether it will also be suspending service in the city tomorrow.

The ride-hailing company also said previously that it would have no choice but to leave if the decree was approved.

The new regional VTC rules, which also come into force across Catalonia from tomorrow, require a minimum 15 minute wait between a booking being made and a passenger being picked up.

The decree also bans VTCs from circulating in the streets between jobs, requiring they go back to a base such as a parking lot or garage to wait for the next pick up.

VTC companies using apps for ride bookings are also prohibited from displaying the real-time location of bookable vehicles prior to a reservation being made.

Achieving compliance would clearly require major changes to how ride-hailing companies like Uber and Cabify operate. The decree also provides for fines of up to €1,400 (~$1,600) for any VTC drivers caught infringing the provisions. So Uber’s announcement of a service suspension is not a surprise.

Nor does the company appear prepared to return unless the decree is reversed, saying it needs a “fair” regulation — echoing its messaging when it pulled out of Denmark back in 2017.

“The obligation to wait 15 minutes to travel in a VTC does not exist anywhere in Europe and is totally incompatible with the immediacy of on-demand services, such as UberX,” it writes now in a blog post entitled ‘see you later, Barcelona’.

“Barcelona, we hope to see you soon,” it adds, claiming the relaunched service was used by more than half a million people over its run, relying on “thousands” of drivers to deliver it.

Uber’s original p2p service was also forced out of Barcelona, back in 2014, following legal challenges from the taxi sector that eventually went all the way up to Europe’s top court.

At the end of 2017 the court judged Uber to be a transport company, not a neutral platform — enforcing compliance with local VTC rules and rendering the Uber’s early regulation-dodging playbook a dud in Europe.

Since then, taxi associations in Barcelona and other major Spanish cities have been keeping up the pressure for regulation on the VTC sector by holding a series of strikes — including one earlier this month in which some strikers were caught on camera attacking a Cabify driver’s car.

The driver was reported to have suffered a panic attack during the attack.

An ‘indefinite strike’ was also called last summer and only ended after the Spanish government agreed to devolve regulatory power to autonomous regions and local authorities.

Uber and Cabify temporarily paused services in Barcelona during that strike after reports of violence, including attacks on drivers. Although taxi associations organizing the protests were quick to distance themselves from any violent acts, urging their members to protest peacefully.

The most recent strike in Barcelona also saw some VTC drivers take to the streets to try to apply the brake to regulation, parking their vehicles along a major road and demonstrating outside parliament.

There’s still a chance that the Catalan parliament could refuse to back the decree. Though the current regional government is committed to a full restructuring of the law to ensure VTCs and taxis do not compete for the same work.



from TechCrunch https://tcrn.ch/2GaZvA2
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support