Example #1
0
 public function case_get_vendor_factory()
 {
     $self = $this;
     $this->given($transport = 'foo', $factory = function ($socketUri) use(&$called, $self, $transport) {
         $called = true;
         $self->string($socketUri)->isEqualTo($transport . '://bar/baz');
         return new LUT(str_replace($transport, 'tcp', $socketUri));
     }, SUT::register($transport, $factory))->when(function () use(&$result, $transport) {
         $result = SUT::getFactory($transport);
     })->then->object($result)->isInstanceOf('Closure')->object($result('foo://bar/baz'))->isEqualTo(new LUT('tcp://bar/baz'))->boolean($called)->isTrue();
 }
Example #2
0
    }
    /**
     * Factory to create a valid `Hoa\Socket\Socket` object.
     *
     * @param   string  $socketUri    URI of the socket to connect to.
     * @return  void
     */
    public static function transportFactory($socketUri)
    {
        $parsed = parse_url($socketUri);
        if (false === $parsed || !isset($parsed['host'])) {
            throw new Exception('URL %s seems invalid, cannot parse it.', 0, $socketUri);
        }
        $secure = isset($parsed['scheme']) ? 'ircs' === $parsed['scheme'] : false;
        /**
         * Regarding RFC
         * https://tools.ietf.org/html/draft-butcher-irc-url-04#section-2.4,
         * port 194 is likely to be a more “authentic” server, however at this
         * time the majority of IRC non secure servers are available on port
         * 6667.
         */
        $port = isset($parsed['port']) ? $parsed['port'] : (true === $secure ? 994 : 6667);
        return new static('tcp://' . $parsed['host'] . ':' . $port, $secure);
    }
}
/**
 * Register `irc://` and `ircs://` transports.
 */
HoaSocket\Transport::register('irc', ['Hoa\\Irc\\Socket', 'transportFactory']);
HoaSocket\Transport::register('ircs', ['Hoa\\Irc\\Socket', 'transportFactory']);