|
|
@ -9,6 +9,7 @@ use \Yggverse\Gemini\Client\Response; |
|
|
|
use \Yggverse\Net\Address; |
|
|
|
use \Yggverse\Net\Address; |
|
|
|
|
|
|
|
|
|
|
|
use \Yggverse\Yoda\Model\Connection; |
|
|
|
use \Yggverse\Yoda\Model\Connection; |
|
|
|
|
|
|
|
use \Yggverse\Yoda\Model\Filesystem; |
|
|
|
|
|
|
|
|
|
|
|
class Gemini |
|
|
|
class Gemini |
|
|
|
{ |
|
|
|
{ |
|
|
@ -55,46 +56,35 @@ class Gemini |
|
|
|
|
|
|
|
|
|
|
|
case 20: // ok |
|
|
|
case 20: // ok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Update content data |
|
|
|
$this->_connection->setData( |
|
|
|
$this->_connection->setData( |
|
|
|
$response->getBody() |
|
|
|
$response->getBody() |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Detect MIME type |
|
|
|
switch (true) |
|
|
|
switch (true) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case str_contains( |
|
|
|
case $mime = self::getMimeByMeta( |
|
|
|
$response->getMeta(), |
|
|
|
$response->getMeta() |
|
|
|
$this->_connection::MIME_TEXT_GEMINI |
|
|
|
): break; |
|
|
|
): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->_connection->setMime( |
|
|
|
case $mime = Filesystem::getMimeByPath( |
|
|
|
$this->_connection::MIME_TEXT_GEMINI |
|
|
|
$address->getPath() |
|
|
|
); |
|
|
|
): break; |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
case $mime = Filesystem::getMimeByData( |
|
|
|
|
|
|
|
$response->getData() |
|
|
|
|
|
|
|
): break; |
|
|
|
|
|
|
|
|
|
|
|
case str_contains( |
|
|
|
default: $mime = null; |
|
|
|
$response->getMeta(), |
|
|
|
} |
|
|
|
$this->_connection::MIME_TEXT_PLAIN |
|
|
|
|
|
|
|
): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->_connection->setMime( |
|
|
|
$this->_connection->setMime( |
|
|
|
$this->_connection::MIME_TEXT_PLAIN |
|
|
|
$mime |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
throw new \Exception( |
|
|
|
|
|
|
|
sprintf( |
|
|
|
|
|
|
|
_('MIME type not implemented for %s'), |
|
|
|
|
|
|
|
$response->getMeta() |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 31: // redirect |
|
|
|
case 31: // redirect |
|
|
|
// show link, no follow |
|
|
|
// show link, no follow |
|
|
|
|
|
|
|
|
|
|
@ -109,10 +99,6 @@ class Gemini |
|
|
|
) |
|
|
|
) |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
$this->_connection->setMime( |
|
|
|
|
|
|
|
$this->_connection::MIME_TEXT_GEMINI |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
default: |
|
|
@ -139,4 +125,25 @@ class Gemini |
|
|
|
true |
|
|
|
true |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function getMimeByMeta( |
|
|
|
|
|
|
|
?string $meta = null |
|
|
|
|
|
|
|
): ?string |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if ($meta) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
preg_match( |
|
|
|
|
|
|
|
'/(?<mime>([\w]+\/[\w]+))/m', |
|
|
|
|
|
|
|
$meta, |
|
|
|
|
|
|
|
$match |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($match['mime'])) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return $match['mime']; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |