/** * Tests getApiRequest(). */ public function testGetApiRequest() { $apiUrl = 'http://gsc.io/u/?rl=http%3A%2F%2Fexample.com%2F'; $shortUrl = 'http://gsc.io/u/112'; $deferred = $this->getMockDeferred(); $request = $this->adapter->getApiRequest($apiUrl, $deferred); $this->assertInstanceOf('Phergie\\Plugin\\Http\\Request', $request); $this->assertEquals($apiUrl, $request->getUrl()); $request->callReject('foo'); $request->callResolve($this->getMockResponse(201, [], $shortUrl)); $request->callResolve($this->getMockResponse(500, [], 'Error: bar')); Phake::inOrder(Phake::verify($deferred)->reject('foo'), Phake::verify($deferred)->resolve($shortUrl), Phake::verify($deferred)->reject()); }
/** * Handle the event * * @param string $url * @param \React\Promise\Deferred $deferred */ public function handleShortenEvent($url, Deferred $deferred) { $requestId = uniqid(); // Only urls longer than the minimum length should be shortened if (strlen($url) < $this->adapter->getMinimumLength()) { $this->logDebug('[' . $requestId . ']Skip shortening url (too short): ' . $url); $deferred->resolve($url); return; } // Check if URL host is one we're skipping $host = parse_url($url, \PHP_URL_HOST); if (in_array($host, $this->skipHosts)) { $this->logDebug('[' . $requestId . ']Skip shortening url (based on hostname): ' . $url); $deferred->resolve($url); return; } $this->logDebug('[' . $requestId . ']Shortening url: ' . $url); $request = $this->adapter->getApiRequest($this->adapter->getApiUrl($url), $deferred); $this->getEventEmitter()->emit('http.request', [$request]); }