kopia lustrzana https://github.com/nextcloud/social
search on uri
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>pull/1575/head
rodzic
f860167e81
commit
f9e891876b
|
@ -30,7 +30,6 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace OCA\Social\Search;
|
namespace OCA\Social\Search;
|
||||||
|
|
||||||
use OCA\Social\Tools\Traits\TArrayTools;
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use OCA\Social\Exceptions\AccountDoesNotExistException;
|
use OCA\Social\Exceptions\AccountDoesNotExistException;
|
||||||
use OCA\Social\Model\ActivityPub\Actor\Person;
|
use OCA\Social\Model\ActivityPub\Actor\Person;
|
||||||
|
@ -38,15 +37,16 @@ use OCA\Social\Service\AccountService;
|
||||||
use OCA\Social\Service\CacheActorService;
|
use OCA\Social\Service\CacheActorService;
|
||||||
use OCA\Social\Service\ConfigService;
|
use OCA\Social\Service\ConfigService;
|
||||||
use OCA\Social\Service\FollowService;
|
use OCA\Social\Service\FollowService;
|
||||||
use OCA\Social\Service\MiscService;
|
|
||||||
use OCA\Social\Service\SearchService;
|
use OCA\Social\Service\SearchService;
|
||||||
use OCA\Social\Service\StreamService;
|
use OCA\Social\Service\StreamService;
|
||||||
|
use OCA\Social\Tools\Traits\TArrayTools;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\Search\IProvider;
|
use OCP\Search\IProvider;
|
||||||
use OCP\Search\ISearchQuery;
|
use OCP\Search\ISearchQuery;
|
||||||
use OCP\Search\SearchResult;
|
use OCP\Search\SearchResult;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UnifiedSearchProvider
|
* Class UnifiedSearchProvider
|
||||||
|
@ -67,7 +67,8 @@ class UnifiedSearchProvider implements IProvider {
|
||||||
private AccountService $accountService;
|
private AccountService $accountService;
|
||||||
private SearchService $searchService;
|
private SearchService $searchService;
|
||||||
private ConfigService $configService;
|
private ConfigService $configService;
|
||||||
private MiscService $miscService;
|
private LoggerInterface $logger;
|
||||||
|
|
||||||
private ?Person $viewer = null;
|
private ?Person $viewer = null;
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,12 +83,18 @@ class UnifiedSearchProvider implements IProvider {
|
||||||
* @param AccountService $accountService
|
* @param AccountService $accountService
|
||||||
* @param SearchService $searchService
|
* @param SearchService $searchService
|
||||||
* @param ConfigService $configService
|
* @param ConfigService $configService
|
||||||
* @param MiscService $miscService
|
* @param LoggerInterface $logger
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
IL10N $l10n, IURLGenerator $urlGenerator, StreamService $streamService, FollowService $followService,
|
IL10N $l10n,
|
||||||
CacheActorService $cacheActorService, AccountService $accountService, SearchService $searchService,
|
IURLGenerator $urlGenerator,
|
||||||
ConfigService $configService, MiscService $miscService
|
StreamService $streamService,
|
||||||
|
FollowService $followService,
|
||||||
|
CacheActorService $cacheActorService,
|
||||||
|
AccountService $accountService,
|
||||||
|
SearchService $searchService,
|
||||||
|
ConfigService $configService,
|
||||||
|
LoggerInterface $logger
|
||||||
) {
|
) {
|
||||||
$this->l10n = $l10n;
|
$this->l10n = $l10n;
|
||||||
$this->urlGenerator = $urlGenerator;
|
$this->urlGenerator = $urlGenerator;
|
||||||
|
@ -97,7 +104,7 @@ class UnifiedSearchProvider implements IProvider {
|
||||||
$this->accountService = $accountService;
|
$this->accountService = $accountService;
|
||||||
$this->searchService = $searchService;
|
$this->searchService = $searchService;
|
||||||
$this->configService = $configService;
|
$this->configService = $configService;
|
||||||
$this->miscService = $miscService;
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,11 +147,12 @@ class UnifiedSearchProvider implements IProvider {
|
||||||
$search = trim($query->getTerm());
|
$search = trim($query->getTerm());
|
||||||
|
|
||||||
$result = array_merge(
|
$result = array_merge(
|
||||||
|
$this->convertAccounts($this->searchService->searchUri($search)),
|
||||||
$this->convertAccounts($this->searchService->searchAccounts($search)),
|
$this->convertAccounts($this->searchService->searchAccounts($search)),
|
||||||
$this->convertHashtags($this->searchService->searchHashtags($search))
|
$this->convertHashtags($this->searchService->searchHashtags($search))
|
||||||
);
|
);
|
||||||
|
|
||||||
// $this->searchService->searchStreamContent($search)
|
// $this->searchService->searchStreamContent($search)
|
||||||
|
|
||||||
return SearchResult::paginated(
|
return SearchResult::paginated(
|
||||||
$this->l10n->t('Social'), $result, ($query->getCursor() ?? 0) + $query->getLimit()
|
$this->l10n->t('Social'), $result, ($query->getCursor() ?? 0) + $query->getLimit()
|
||||||
|
|
|
@ -152,7 +152,7 @@ class CacheActorService {
|
||||||
throw new InvalidResourceException();
|
throw new InvalidResourceException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($id !== $actor->getId()) {
|
if (parse_url($id, PHP_URL_HOST) !== parse_url($actor->getId(), PHP_URL_HOST)) {
|
||||||
throw new InvalidOriginException(
|
throw new InvalidOriginException(
|
||||||
'CacheActorService::getFromId - id: ' . $id . ' - actorId: ' . $actor->getId()
|
'CacheActorService::getFromId - id: ' . $id . ' - actorId: ' . $actor->getId()
|
||||||
);
|
);
|
||||||
|
|
|
@ -45,10 +45,11 @@ class SearchService {
|
||||||
use TArrayTools;
|
use TArrayTools;
|
||||||
|
|
||||||
|
|
||||||
public const SEARCH_ACCOUNTS = 1;
|
public const SEARCH_URI = 1;
|
||||||
public const SEARCH_HASHTAGS = 2;
|
public const SEARCH_ACCOUNTS = 2;
|
||||||
public const SEARCH_CONTENT = 4;
|
public const SEARCH_HASHTAGS = 4;
|
||||||
public const SEARCH_ALL = 7;
|
public const SEARCH_CONTENT = 8;
|
||||||
|
public const SEARCH_ALL = 15;
|
||||||
|
|
||||||
private CacheActorService $cacheActorService;
|
private CacheActorService $cacheActorService;
|
||||||
private HashtagService $hashtagService;
|
private HashtagService $hashtagService;
|
||||||
|
@ -77,6 +78,25 @@ class SearchService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $search
|
||||||
|
*
|
||||||
|
* @return Person[]
|
||||||
|
*/
|
||||||
|
public function searchUri(string $search): array {
|
||||||
|
$type = $this->getTypeFromSearch($search);
|
||||||
|
|
||||||
|
if ($search !== '' && $type & self::SEARCH_URI) {
|
||||||
|
try {
|
||||||
|
return [$this->cacheActorService->getFromId($search)];
|
||||||
|
} catch (Exception $e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $search
|
* @param string $search
|
||||||
*
|
*
|
||||||
|
@ -154,6 +174,10 @@ class SearchService {
|
||||||
return self::SEARCH_HASHTAGS;
|
return self::SEARCH_HASHTAGS;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
if (substr($search, 0, 4) === 'http') {
|
||||||
|
return self::SEARCH_URI;
|
||||||
|
}
|
||||||
|
|
||||||
return self::SEARCH_ALL;
|
return self::SEARCH_ALL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue