Treat COIDs with query or fragment as invalid
This commit is contained in:
1 parent
b9141326b1
commit
b3c810473f
2 files changed
+45
-6
No files matched your search
@@ -36,7 +36,11 @@ class COIDParser {
|
||||
(strtolower(substr($coidString, 0, 7)) == 'coid://') ? $coidString : 'coid://'.$coidString
|
||||
);
|
||||
// Normalize scheme and host segments to lower case
|
||||
return new IRI('coid://'.strtolower($coidPre->getHost()).$coidPre->getPath());
|
||||
// Keep query and fragment (will currently make those IRIs invalid as COIDs
|
||||
// but may be used in future)
|
||||
return new IRI('coid://'.strtolower($coidPre->getHost()).$coidPre->getPath()
|
||||
.($coidPre->getQuery() !== null ? '?'.$coidPre->getQuery() : '')
|
||||
.($coidPre->getFragment() !== null ? '#'.$coidPre->getFragment() : ''));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -47,7 +51,8 @@ class COIDParser {
|
||||
*/
|
||||
public static function getType(IRI $coid) : ?int {
|
||||
if ($coid->getScheme()!='coid' || $coid->getHost()==''
|
||||
|| preg_match(self::REGEX_HOSTNAME, $coid->getHost()) != 1)
|
||||
|| preg_match(self::REGEX_HOSTNAME, $coid->getHost()) !== 1
|
||||
|| $coid->getQuery() !== null || $coid->getFragment() !== null)
|
||||
return self::COID_INVALID;
|
||||
|
||||
if ($coid->getPath()=='' || $coid->getPath()=='/')
|
||||
@@ -55,10 +60,10 @@ class COIDParser {
|
||||
|
||||
$segments = explode('/', $coid->getPath());
|
||||
switch (count($segments)) {
|
||||
case 2:
|
||||
return (preg_match(self::REGEX_SEGMENT, $segments[1]) == 1)
|
||||
? self::COID_UNVERSIONED
|
||||
: self::COID_INVALID;
|
||||
case 2:
|
||||
return (preg_match(self::REGEX_SEGMENT, $segments[1]) == 1)
|
||||
? self::COID_UNVERSIONED
|
||||
: self::COID_INVALID;
|
||||
case 3:
|
||||
if (preg_match(self::REGEX_SEGMENT, $segments[1]) != 1)
|
||||
return self::COID_INVALID;
|
||||
|
||||
Reference in new issue
Block a user