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();

Friday, 2 August 2019

Africa Roundup: Canal+ acquires ROK, Flutterwave and Alipay partner, OPay raises $50M

in July, French television company Canal+ acquired the ROK film studio from VOD company IROKOtv.

Canal+ would not disclose the acquisition price, but confirmed there was a cash component of the deal.

Founded by Jason Njoku  in 2010 — and backed by $45 million  in VC — IROKOtv boasts the world’s largest online catalog of Nollywood: a Nigerian movie genre that has become Africa’s de facto film industry and one of the largest globally (by production volume).

Based in Lagos, ROK film studios was incubated to create original content for IROKOtv, which can be accessed digitally anywhere in the world.

ROK studio founder and producer Mary Njoku  will stay on as director general under the Canal+ acquisition.

With the ROK deal, Canal+ looks to bring the Nollywood production ethos to other African countries and regions. The new organization plans to send Nigerian production teams to French speaking African countries starting this year.

The ability to reach a larger advertising network of African consumers on the continent and internationally was a big acquisition play for Canal+.

San Francisco and Lagos-based fintech  startup Flutterwave  partnered with Chinese e-commerce company Alibaba’s Alipay to offer digital payments between Africa and China.

Flutterwave is a Nigerian-founded B2B payments service (primarily) for companies in Africa to pay other companies on the continent and abroad.

Alipay is Alibaba’s digital wallet and payments platform. In 2013, Alipay surpassed PayPal in payments volume and currently claims a global network of more than 1 billion active users, per Alibaba’s latest earnings report.

A large portion of Alipay’s network is in China, which makes the Flutterwave integration significant to capturing payments activity around the estimated $200 billion in China-Africa trade.

Flutterwave will earn revenue from the partnership by charging its standard 3.8% on international transactions. The company currently has more than 60,000 merchants on its platform, according to CEO Olugbenga Agboola.

In a recent Extra Crunch feature, TechCrunch tracked Flutterwave as one of several Africa-focused fintech companies that have established headquarters in San Francisco and operations in Africa to tap the best of both worlds in VC, developers, clients and digital finance.

Flutterwave’s Alipay collaboration also tracks a trend of increased presence of Chinese companies in African tech. July saw Chinese owned Opera raise $50 million in venture spending to support its growing West African digital commercial network, which includes browser, payments and ride-hail services. The funds are predominately for OPay, an Opera owned, Africa-focused mobile payments startup.

Lead investors included Sequoia China, IDG Capital  and Source Code Capital. Opera  also joined the round in the payments venture it created.

OPay will use the capital (which wasn’t given a stage designation) primarily to grow its digital finance business in Nigeria — Africa’s most populous nation and largest economy.

OPay will also support Opera’s growing commercial network in Nigeria, which includes motorcycle ride-hail app ORide and OFood delivery service.

Opera founded OPay in 2018 on the popularity of its internet search engine. Opera’s web-browser has ranked No. 2 in usage in Africa, after Chrome, the last four years.

July also saw transit tech news in East Africa. Global ride-hail startup InDriver launched its app-based service in Kampala (Uganda), bringing its Africa operating countries to four: Kenya,  Uganda, South Africa and Tanzania. InDriver’s mobile app allows passengers to name their own fare for nearby drivers to accept, decline or counter.

Nairobi-based internet hardware and service startup BRCK and Egyptian ride-hail venture Swvl are partnering to bring Wi-Fi and online entertainment to on-demand bus service in Kenya.

Swvl BRCK Moja KenyaBRCK is installing its routers on Swvl vehicles in Kenya  to run its Moja service, which offers free public Wi-Fi — internet, music and entertainment — subsidized by commercial partners.

Founded in Cairo in 2017, Swvl is a mass transit service that has positioned itself as an Uber  for shared buses.

The company raised a $42 million Series B round in June, with intent to expand in Africa, Swvl CEO Mostafa Kandil said in an interview.

BRCK and Swvl wouldn’t confirm plans on expanding their mobile internet partnership to additional countries outside of Kenya.

Africa’s ride-hail markets are becoming a multi-wheeled and global affair making the continent home to a number of fresh mobility use cases, including the BRCK and Swvl Wi-Fi partnership.

More Africa-related stories @TechCrunch

African tech around the ‘net



from TechCrunch https://ift.tt/2KnuCZl
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support