Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/912/head
Maxence Lange 2020-06-18 18:40:57 -01:00
rodzic 745810e2b0
commit 1ebb155fcf
14 zmienionych plików z 38 dodań i 22 usunięć

Wyświetl plik

@ -60,7 +60,7 @@ return [
['name' => 'ActivityPub#displayPost', 'url' => '/@{username}/{token}', 'verb' => 'GET'], ['name' => 'ActivityPub#displayPost', 'url' => '/@{username}/{token}', 'verb' => 'GET'],
['name' => 'OStatus#subscribe', 'url' => '/ostatus/follow/{uri}', 'verb' => 'GET'], ['name' => 'OStatus#subscribe', 'url' => '/ostatus/follow/', 'verb' => 'GET'],
['name' => 'OStatus#followRemote', 'url' => '/api/v1/ostatus/followRemote/{local}', 'verb' => 'GET'], ['name' => 'OStatus#followRemote', 'url' => '/api/v1/ostatus/followRemote/{local}', 'verb' => 'GET'],
['name' => 'OStatus#getLink', 'url' => '/api/v1/ostatus/link/{local}/{account}', 'verb' => 'GET'], ['name' => 'OStatus#getLink', 'url' => '/api/v1/ostatus/link/{local}/{account}', 'verb' => 'GET'],

Wyświetl plik

@ -35,6 +35,7 @@ use daita\MySmallPhpTools\Traits\Nextcloud\TNCDataResponse;
use daita\MySmallPhpTools\Traits\TArrayTools; use daita\MySmallPhpTools\Traits\TArrayTools;
use Exception; use Exception;
use OCA\Social\AppInfo\Application; use OCA\Social\AppInfo\Application;
use OCA\Social\Exceptions\InvalidResourceException;
use OCA\Social\Exceptions\RetrieveAccountFormatException; use OCA\Social\Exceptions\RetrieveAccountFormatException;
use OCA\Social\Service\AccountService; use OCA\Social\Service\AccountService;
use OCA\Social\Service\CacheActorService; use OCA\Social\Service\CacheActorService;
@ -104,16 +105,21 @@ class OStatusController extends Controller {
* @return Response * @return Response
*/ */
public function subscribe(string $uri): Response { public function subscribe(string $uri): Response {
try {
try { try {
$actor = $this->cacheActorService->getFromAccount($uri); $actor = $this->cacheActorService->getFromAccount($uri);
} catch (InvalidResourceException $e) {
$actor = $this->cacheActorService->getFromId($uri);
}
$user = $this->userSession->getUser(); $user = $this->userSession->getUser();
if ($user === null) { if ($user === null) {
throw new Exception('Failed to retrieve current user'); throw new Exception('Failed to retrieve current user');
} }
return new TemplateResponse('social', 'ostatus', [ return new TemplateResponse(
'social', 'ostatus', [
'serverData' => [ 'serverData' => [
'account' => $actor->getAccount(), 'account' => $actor->getAccount(),
'currentUser' => [ 'currentUser' => [
@ -121,7 +127,8 @@ class OStatusController extends Controller {
'displayName' => $user->getDisplayName(), 'displayName' => $user->getDisplayName(),
] ]
] ]
], 'guest'); ], 'guest'
);
} catch (Exception $e) { } catch (Exception $e) {
return $this->fail($e); return $this->fail($e);
} }
@ -134,18 +141,21 @@ class OStatusController extends Controller {
* @PublicPage * @PublicPage
* *
* @param string $local * @param string $local
*
* @return Response * @return Response
*/ */
public function followRemote(string $local): Response { public function followRemote(string $local): Response {
try { try {
$following = $this->accountService->getActor($local); $following = $this->accountService->getActor($local);
return new TemplateResponse('social', 'ostatus', [ return new TemplateResponse(
'social', 'ostatus', [
'serverData' => [ 'serverData' => [
'local' => $local, 'local' => $local,
'account' => $following->getAccount() 'account' => $following->getAccount()
] ]
], 'guest'); ], 'guest'
);
} catch (Exception $e) { } catch (Exception $e) {
return $this->fail($e); return $this->fail($e);
} }

Wyświetl plik

@ -158,7 +158,7 @@ class ActionsRequestBuilder extends CoreRequestBuilder {
* *
* @return ACore * @return ACore
*/ */
protected function parseActionsSelectSql($data): ACore { public function parseActionsSelectSql($data): ACore {
$item = new ACore(); $item = new ACore();
$item->importFromDatabase($data); $item->importFromDatabase($data);

Wyświetl plik

@ -107,7 +107,7 @@ class ActorsRequestBuilder extends CoreRequestBuilder {
* @return Person * @return Person
* @throws SocialAppConfigException * @throws SocialAppConfigException
*/ */
protected function parseActorsSelectSql($data): Person { public function parseActorsSelectSql($data): Person {
$root = $this->configService->getSocialUrl(); $root = $this->configService->getSocialUrl();
$actor = new Person(); $actor = new Person();

Wyświetl plik

@ -105,7 +105,7 @@ class CacheDocumentsRequestBuilder extends CoreRequestBuilder {
* *
* @return Document * @return Document
*/ */
protected function parseCacheDocumentsSelectSql(array $data): Document { public function parseCacheDocumentsSelectSql(array $data): Document {
$document = new Document(); $document = new Document();
$document->importFromDatabase($data); $document->importFromDatabase($data);

Wyświetl plik

@ -913,7 +913,7 @@ class CoreRequestBuilder {
* @return Person * @return Person
* @throws InvalidResourceException * @throws InvalidResourceException
*/ */
protected function parseCacheActorsLeftJoin(array $data): Person { public function parseCacheActorsLeftJoin(array $data): Person {
$new = []; $new = [];
foreach ($data as $k => $v) { foreach ($data as $k => $v) {

Wyświetl plik

@ -128,7 +128,7 @@ class FollowsRequestBuilder extends CoreRequestBuilder {
* *
* @return Follow * @return Follow
*/ */
protected function parseFollowsSelectSql($data): Follow { public function parseFollowsSelectSql($data): Follow {
$follow = new Follow(); $follow = new Follow();
$follow->importFromDatabase($data); $follow->importFromDatabase($data);

Wyświetl plik

@ -108,7 +108,7 @@ class HashtagsRequestBuilder extends CoreRequestBuilder {
* *
* @return array * @return array
*/ */
protected function parseHashtagsSelectSql($data): array { public function parseHashtagsSelectSql($data): array {
return [ return [
'hashtag' => $this->get('hashtag', $data, ''), 'hashtag' => $this->get('hashtag', $data, ''),
'trend' => $this->getArray('trend', $data, []) 'trend' => $this->getArray('trend', $data, [])

Wyświetl plik

@ -105,7 +105,7 @@ class RequestQueueRequestBuilder extends CoreRequestBuilder {
* *
* @return RequestQueue * @return RequestQueue
*/ */
protected function parseRequestQueueSelectSql($data): RequestQueue { public function parseRequestQueueSelectSql($data): RequestQueue {
$queue = new RequestQueue(); $queue = new RequestQueue();
$queue->importFromDatabase($data); $queue->importFromDatabase($data);

Wyświetl plik

@ -108,7 +108,7 @@ class StreamActionsRequestBuilder extends CoreRequestBuilder {
* *
* @return StreamAction * @return StreamAction
*/ */
protected function parseStreamActionsSelectSql($data): StreamAction { public function parseStreamActionsSelectSql($data): StreamAction {
$action = new StreamAction(); $action = new StreamAction();
$action->importFromDatabase($data); $action->importFromDatabase($data);

Wyświetl plik

@ -104,7 +104,7 @@ class StreamQueueRequestBuilder extends CoreRequestBuilder {
* *
* @return StreamQueue * @return StreamQueue
*/ */
protected function parseStreamQueueSelectSql($data): StreamQueue { public function parseStreamQueueSelectSql($data): StreamQueue {
$queue = new StreamQueue(); $queue = new StreamQueue();
$queue->importFromDatabase($data); $queue->importFromDatabase($data);

Wyświetl plik

@ -236,6 +236,13 @@ class CacheDocumentService {
throw new CacheDocumentDoesNotExistException(); throw new CacheDocumentDoesNotExistException();
} }
// right now, we do not handle cache for local avatar, we need to change this
// so the current avatar is cached, or a new avatar is uploaded
if ($path === 'avatar') {
throw new CacheContentException();
}
$pos = strrpos($path, '/'); $pos = strrpos($path, '/');
$dir = substr($path, 0, $pos); $dir = substr($path, 0, $pos);
$filename = substr($path, $pos + 1); $filename = substr($path, $pos + 1);

Wyświetl plik

@ -129,9 +129,7 @@ $finger = [
[ [
'rel' => 'http://ostatus.org/schema/1.0/subscribe', 'rel' => 'http://ostatus.org/schema/1.0/subscribe',
'template' => urldecode( 'template' => urldecode(
$href = $urlGenerator->linkToRouteAbsolute( $href = $urlGenerator->linkToRouteAbsolute('social.OStatus.subscribe') . '?uri={uri}'
'social.OStatus.subscribe', ['uri' => '{uri}']
)
) )
] ]
] ]

Wyświetl plik

@ -23,6 +23,7 @@
script('social', 'ostatus'); script('social', 'ostatus');
style('social', 'style'); style('social', 'style');
?> ?>
<span id="serverData" data-server="<?php p(json_encode($_['serverData']));?>"></span> <span id="serverData" data-server="<?php p(json_encode($_['serverData']));?>"></span>
<div id="vue-content"></div> <div id="vue-content"></div>