phergie / phergie-irc-plugin-react-url
Phergie plugin for displaying information about URLs
Requires
- php: ^5.6|^7.0
- nojimage/twitter-text-php: ~2.0
- phergie/phergie-irc-bot-react: ~2
- phergie/phergie-irc-plugin-http: ^4.0
- phergie/phergie-irc-plugin-react-eventfilter: ^1.0||^2.0
- react/promise: ~1.0|~2.0
Requires (Dev)
- codeclimate/php-test-reporter: ~0.1
- phake/phake: ^2.2.1
- phpunit/phpunit: ^4.6.0
- satooshi/php-coveralls: 0.6.1
- squizlabs/php_codesniffer: ^1.5.3
- symfony/config: ~2.0
- symfony/console: ~2.0
- symfony/filesystem: ~2.0
- symfony/stopwatch: ~2.0
- vectorface/dunit: ^2.0
This package is not auto-updated.
Last update: 2020-03-15 05:20:02 UTC
README
This repo is being kept for posterity and will be archived in a readonly state. If you're interested it can be forked under a new Composer namespace/GitHub organization.
Url Plugin
Phergie plugin for Display URL information about links.
Install
To install via Composer, use the command below, it will automatically detect the latest version and bind it with ~
.
composer require phergie/phergie-irc-plugin-react-url
See Phergie documentation for more information on installing and enabling plugins.
Configuration
return array( 'plugins' => array( // dependencies new \Phergie\Plugin\Dns\Plugin, // Handles DNS lookups for the HTTP plugin new \Phergie\Plugin\Http\Plugin, // Handles the HTTP requests for this plugin // configuration new \Phergie\Irc\Plugin\React\Url\Plugin(array( // All configuration is optional 'hostUrlEmitsOnly' => false, // url.host.(all|<host>) emits only, no further URL handling / shortening // or 'handler' => new \Phergie\Irc\Plugin\React\Url\DefaultUrlHandler(), // URL handler that creates a formatted message based on the URL // or 'shortenTimeout' => 15 // If after this amount of seconds no url shortener has come up with a short URL the normal URL will be used. (Not in effect when there are no shorteners listening.) // or 'filter' => null // Any valid filter implementing Phergie\Irc\Plugin\React\EventFilter\FilterInterface to filter which messages should be handled )), ) );
Events
This plugin emits the following generic, do what ever you want with it, events.
url.host.HOSTNAME
For exampleurl.host.twitter.com
(www.
is stripped from the hostname).url.host.all
For all hostnames.
This plugins also emits two events for url shortening. Only called when there are listeners registered. Each event emit is passed a UrlshorteningEvent
, if a shortener resolved short url it calls the resolve
method on the promise.
url.shorten.HOSTNAME
For exampleurl.shorten.twitter.com
(www.
is stripped from the hostname).url.shorten.all
For all hostnames.
Placeholders
The following placeholders can be used to compose a message that is passed as the first argument for DefaultUrlHandler
to create custom messages:
%url%
- Full URL%url-short%
- Shortened URL%http-status-code%
- HTTP status code%timing%
- Time in seconds it took for th request to complete%timing2%
- Time in seconds it took for th request to complete rounded off to a maximum of two decimals%response-time%
- Time in seconds it took for th request to complete%response-time2%
- Time in seconds it took for th request to complete rounded off to a maximum of two decimals%title%
- Page title%composed-title%
- Page title
Header Placeholders
Selection of response headers from: en.wikipedia.org/wiki/List_of_HTTP_header_fields#Response_Headers
%header-age%
%header-content-type%
%header-content-length%
%header-content-language%
%header-date%
%header-etag%
%header-expires%
%header-last-modified%
%header-server%
%header-x-powered-by%
UrlSectionFilter
This plugin comes with the UrlSectionFilter
that lets you filter on the different key value pairs coming out of parse_url
. The following example filter allows www.phergie.org
, www2.phergie.org
, and phergie.org
:
new OrFilter([ new UrlSectionFilter('host', '*.phergie.org'), new UrlSectionFilter('host', 'phergie.org'), ])
The filter comes with a third strict
parameter where instead of declaring out of scope on missing an URL part it return false
.
Tests
To run the unit test suite:
curl -s https://getcomposer.org/installer | php
php composer.phar install
./vendor/bin/phpunit
License
Released under the MIT License. See LICENSE
.