1
0
mirror of https://github.com/laravel/valet.git synced 2026-02-05 00:20:08 +01:00
Files
laravel-valet/cli/Valet/Ngrok.php
2016-09-21 09:17:36 -05:00

48 lines
1.3 KiB
PHP

<?php
namespace Valet;
use Httpful\Request;
use DomainException;
class Ngrok
{
var $tunnelsEndpoint = 'http://127.0.0.1:4040/api/tunnels';
/**
* Get the current tunnel URL from the Ngrok API.
*
* @return string
*/
function currentTunnelUrl()
{
return retry(20, function () {
$body = Request::get($this->tunnelsEndpoint)->send()->body;
// If there are active tunnels on the Ngrok instance we will spin through them and
// find the one responding on HTTP. Each tunnel has an HTTP and a HTTPS address
// but for local testing purposes we just desire the plain HTTP URL endpoint.
if (isset($body->tunnels) && count($body->tunnels) > 0) {
return $this->findHttpTunnelUrl($body->tunnels);
} else {
throw new DomainException("Tunnel not established.");
}
}, 250);
}
/**
* Find the HTTP tunnel URL from the list of tunnels.
*
* @param array $tunnels
* @return string|null
*/
function findHttpTunnelUrl(array $tunnels)
{
foreach ($tunnels as $tunnel) {
if ($tunnel->proto === 'http') {
return $tunnel->public_url;
}
}
}
}