mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-07-14 16:04:42 +02:00
chore: move committed third-party deps to lib (#3973)
This commit is contained in:
parent
46ac77590e
commit
7b2ac36264
8 changed files with 6 additions and 3 deletions
21
lib/php-urljoin/LICENSE
Normal file
21
lib/php-urljoin/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2018 j. shagam <fluffy@beesbuzz.biz>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
143
lib/php-urljoin/src/urljoin.php
Normal file
143
lib/php-urljoin/src/urljoin.php
Normal file
|
@ -0,0 +1,143 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
|
||||
A spiritual port of Python's urlparse.urljoin() function to PHP. Why this isn't in the standard library is anyone's guess.
|
||||
|
||||
Author: fluffy, http://beesbuzz.biz/
|
||||
Latest version at: https://github.com/plaidfluff/php-urljoin
|
||||
|
||||
*/
|
||||
|
||||
function urljoin($base, $rel) {
|
||||
if (!$base) {
|
||||
return $rel;
|
||||
}
|
||||
|
||||
if (!$rel) {
|
||||
return $base;
|
||||
}
|
||||
|
||||
$uses_relative = array('', 'ftp', 'http', 'gopher', 'nntp', 'imap',
|
||||
'wais', 'file', 'https', 'shttp', 'mms',
|
||||
'prospero', 'rtsp', 'rtspu', 'sftp',
|
||||
'svn', 'svn+ssh', 'ws', 'wss');
|
||||
|
||||
$pbase = parse_url($base);
|
||||
$prel = parse_url($rel);
|
||||
|
||||
if ($prel === false || preg_match('/^[a-z0-9\-.]*[^a-z0-9\-.:][a-z0-9\-.]*:/i', $rel)) {
|
||||
/*
|
||||
Either parse_url couldn't parse this, or the original URL
|
||||
fragment had an invalid scheme character before the first :,
|
||||
which can confuse parse_url
|
||||
*/
|
||||
$prel = array('path' => $rel);
|
||||
}
|
||||
|
||||
if (array_key_exists('path', $pbase) && $pbase['path'] === '/') {
|
||||
unset($pbase['path']);
|
||||
}
|
||||
|
||||
if (isset($prel['scheme'])) {
|
||||
if (
|
||||
$prel['scheme'] != ($pbase['scheme'] ?? null)
|
||||
|| in_array($prel['scheme'], $uses_relative) == false
|
||||
) {
|
||||
return $rel;
|
||||
}
|
||||
}
|
||||
|
||||
$merged = array_merge($pbase, $prel);
|
||||
|
||||
// Handle relative paths:
|
||||
// 'path/to/file.ext'
|
||||
// './path/to/file.ext'
|
||||
if (array_key_exists('path', $prel) && substr($prel['path'], 0, 1) != '/') {
|
||||
|
||||
// Normalize: './path/to/file.ext' => 'path/to/file.ext'
|
||||
if (substr($prel['path'], 0, 2) === './') {
|
||||
$prel['path'] = substr($prel['path'], 2);
|
||||
}
|
||||
|
||||
if (array_key_exists('path', $pbase)) {
|
||||
$dir = preg_replace('@/[^/]*$@', '', $pbase['path']);
|
||||
$merged['path'] = $dir . '/' . $prel['path'];
|
||||
} else {
|
||||
$merged['path'] = '/' . $prel['path'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(array_key_exists('path', $merged)) {
|
||||
// Get the path components, and remove the initial empty one
|
||||
$pathParts = explode('/', $merged['path']);
|
||||
array_shift($pathParts);
|
||||
|
||||
$path = [];
|
||||
$prevPart = '';
|
||||
foreach ($pathParts as $part) {
|
||||
if ($part == '..' && count($path) > 0) {
|
||||
// Cancel out the parent directory (if there's a parent to cancel)
|
||||
$parent = array_pop($path);
|
||||
// But if it was also a parent directory, leave it in
|
||||
if ($parent == '..') {
|
||||
array_push($path, $parent);
|
||||
array_push($path, $part);
|
||||
}
|
||||
} else if ($prevPart != '' || ($part != '.' && $part != '')) {
|
||||
// Don't include empty or current-directory components
|
||||
if ($part == '.') {
|
||||
$part = '';
|
||||
}
|
||||
array_push($path, $part);
|
||||
}
|
||||
$prevPart = $part;
|
||||
}
|
||||
$merged['path'] = '/' . implode('/', $path);
|
||||
}
|
||||
|
||||
$ret = '';
|
||||
if (isset($merged['scheme'])) {
|
||||
$ret .= $merged['scheme'] . ':';
|
||||
}
|
||||
|
||||
if (isset($merged['scheme']) || isset($merged['host'])) {
|
||||
$ret .= '//';
|
||||
}
|
||||
|
||||
if (isset($prel['host'])) {
|
||||
$hostSource = $prel;
|
||||
} else {
|
||||
$hostSource = $pbase;
|
||||
}
|
||||
|
||||
// username, password, and port are associated with the hostname, not merged
|
||||
if (isset($hostSource['host'])) {
|
||||
if (isset($hostSource['user'])) {
|
||||
$ret .= $hostSource['user'];
|
||||
if (isset($hostSource['pass'])) {
|
||||
$ret .= ':' . $hostSource['pass'];
|
||||
}
|
||||
$ret .= '@';
|
||||
}
|
||||
$ret .= $hostSource['host'];
|
||||
if (isset($hostSource['port'])) {
|
||||
$ret .= ':' . $hostSource['port'];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($merged['path'])) {
|
||||
$ret .= $merged['path'];
|
||||
}
|
||||
|
||||
if (isset($prel['query'])) {
|
||||
$ret .= '?' . $prel['query'];
|
||||
}
|
||||
|
||||
if (isset($prel['fragment'])) {
|
||||
$ret .= '#' . $prel['fragment'];
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue