Add probe_detect hook

This commit is contained in:
Hypolite Petovan 2020-06-06 14:54:04 -04:00
parent b3c07fc726
commit 6bed6d5587
2 changed files with 27 additions and 0 deletions

View File

@ -466,6 +466,19 @@ Hook data is a `\FastRoute\RouterCollector` object that should be used to add ad
**Notice**: The class whose name is provided in the route handler must be reachable via auto-loader. **Notice**: The class whose name is provided in the route handler must be reachable via auto-loader.
### probe_detect
Called before trying to detect the target network of a URL.
If any registered hook function sets the `result` key of the hook data array, it will be returned immediately.
Hook functions should also return immediately if the hook data contains an existing result.
Hook data:
- **uri** (input): the profile URI.
- **network** (input): the target network (can be empty for auto-detection).
- **uid** (input): the user to return the contact data for (can be empty for public contacts).
- **result** (output): Set by the hook function to indicate a successful detection.
## Complete list of hook callbacks ## Complete list of hook callbacks
Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above. Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above.

View File

@ -24,6 +24,7 @@ namespace Friendica\Network;
use DOMDocument; use DOMDocument;
use DomXPath; use DomXPath;
use Friendica\Core\Cache\Duration; use Friendica\Core\Cache\Duration;
use Friendica\Core\Hook;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Protocol; use Friendica\Core\Protocol;
use Friendica\Core\System; use Friendica\Core\System;
@ -617,6 +618,19 @@ class Probe
{ {
$parts = parse_url($uri); $parts = parse_url($uri);
$hookData = [
'uri' => $uri,
'network' => $network,
'uid' => $uid,
'result' => [],
];
Hook::callAll('probe_detect', $hookData);
if ($hookData['result']) {
return $hookData['result'];
}
if (!empty($parts["scheme"]) && !empty($parts["host"])) { if (!empty($parts["scheme"]) && !empty($parts["host"])) {
$host = $parts["host"]; $host = $parts["host"];
if (!empty($parts["port"])) { if (!empty($parts["port"])) {