Skip to content

Commit cf657da

Browse files
committed
ocm controller
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
1 parent 19e7704 commit cf657da

File tree

23 files changed

+1005
-195
lines changed

23 files changed

+1005
-195
lines changed

apps/cloud_federation_api/appinfo/routes.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
77
*
88
* @author Joas Schilling <coding@schilljs.com>
9+
* @author Maxence Lange <maxence@artificial-owl.com>
910
*
1011
* @license GNU AGPL version 3 or any later version
1112
*
@@ -27,15 +28,22 @@
2728
'routes' => [
2829
[
2930
'name' => 'RequestHandler#addShare',
30-
'url' => '/ocm/shares',
31+
'url' => '/shares',
3132
'verb' => 'POST',
32-
'root' => '',
33+
'root' => '/ocm',
3334
],
3435
[
3536
'name' => 'RequestHandler#receiveNotification',
36-
'url' => '/ocm/notifications',
37+
'url' => '/notifications',
3738
'verb' => 'POST',
38-
'root' => '',
39+
'root' => '/ocm',
3940
],
41+
// 1.1.0
42+
// [
43+
// 'name' => 'RequestHandler#inviteAccepted',
44+
// 'url' => '/invite-accepted',
45+
// 'verb' => 'POST',
46+
// 'root' => '/ocm',
47+
// ]
4048
],
4149
];

apps/cloud_federation_api/lib/Capabilities.php

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<?php
2+
3+
declare(strict_types=1);
4+
25
/**
36
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
47
*
58
* @author Bjoern Schiessle <bjoern@schiessle.org>
69
* @author Kate Döen <kate.doeen@nextcloud.com>
10+
* @author Maxence Lange <maxence@artificial-owl.com>
711
*
812
* @license GNU AGPL version 3 or any later version
913
*
@@ -23,16 +27,20 @@
2327
*/
2428
namespace OCA\CloudFederationAPI;
2529

30+
use OC\OCM\Model\OCMProvider;
31+
use OC\OCM\Model\OCMResource;
2632
use OCP\Capabilities\ICapability;
2733
use OCP\IURLGenerator;
34+
use OCP\OCM\IOCMDiscoveryService;
2835

2936
class Capabilities implements ICapability {
3037

31-
/** @var IURLGenerator */
32-
private $urlGenerator;
38+
public const API_VERSION = '1.0-proposal1';
3339

34-
public function __construct(IURLGenerator $urlGenerator) {
35-
$this->urlGenerator = $urlGenerator;
40+
public function __construct(
41+
private IURLGenerator $urlGenerator,
42+
private IOCMDiscoveryService $discoveryService
43+
) {
3644
}
3745

3846
/**
@@ -55,23 +63,19 @@ public function __construct(IURLGenerator $urlGenerator) {
5563
*/
5664
public function getCapabilities() {
5765
$url = $this->urlGenerator->linkToRouteAbsolute('cloud_federation_api.requesthandlercontroller.addShare');
58-
$capabilities = ['ocm' =>
59-
[
60-
'enabled' => true,
61-
'apiVersion' => '1.0-proposal1',
62-
'endPoint' => substr($url, 0, strrpos($url, '/')),
63-
'resourceTypes' => [
64-
[
65-
'name' => 'file',
66-
'shareTypes' => ['user', 'group'],
67-
'protocols' => [
68-
'webdav' => '/public.php/webdav/',
69-
]
70-
],
71-
]
72-
]
73-
];
7466

75-
return $capabilities;
67+
$provider = new OCMProvider();
68+
$provider->setEnabled(true);
69+
$provider->setApiVersion(self::API_VERSION);
70+
$provider->setEndPoint(substr($url, 0, strrpos($url, '/')));
71+
72+
$resource = new OCMResource();
73+
$resource->setName('file')
74+
->setShareTypes(['user', 'group'])
75+
->setProtocols(['webdav' => '/public.php/webdav/']);
76+
77+
$provider->setResourceTypes([$resource]);
78+
79+
return ['ocm' => $provider];
7680
}
7781
}

apps/cloud_federation_api/lib/Controller/RequestHandlerController.php

Lines changed: 25 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
use OCP\AppFramework\Controller;
3131
use OCP\AppFramework\Http;
3232
use OCP\AppFramework\Http\JSONResponse;
33+
use OCP\AppFramework\Http\Response;
3334
use OCP\Federation\Exceptions\ActionNotSupportedException;
3435
use OCP\Federation\Exceptions\AuthenticationFailedException;
3536
use OCP\Federation\Exceptions\BadRequestException;
@@ -56,51 +57,20 @@
5657
*/
5758
class RequestHandlerController extends Controller {
5859

59-
/** @var LoggerInterface */
60-
private $logger;
6160

62-
/** @var IUserManager */
63-
private $userManager;
64-
65-
/** @var IGroupManager */
66-
private $groupManager;
67-
68-
/** @var IURLGenerator */
69-
private $urlGenerator;
70-
71-
/** @var ICloudFederationProviderManager */
72-
private $cloudFederationProviderManager;
73-
74-
/** @var Config */
75-
private $config;
76-
77-
/** @var ICloudFederationFactory */
78-
private $factory;
79-
80-
/** @var ICloudIdManager */
81-
private $cloudIdManager;
82-
83-
public function __construct($appName,
84-
IRequest $request,
85-
LoggerInterface $logger,
86-
IUserManager $userManager,
87-
IGroupManager $groupManager,
88-
IURLGenerator $urlGenerator,
89-
ICloudFederationProviderManager $cloudFederationProviderManager,
90-
Config $config,
91-
ICloudFederationFactory $factory,
92-
ICloudIdManager $cloudIdManager
61+
public function __construct(
62+
string $appName,
63+
IRequest $request,
64+
private LoggerInterface $logger,
65+
private IUserManager $userManager,
66+
private IGroupManager $groupManager,
67+
private IURLGenerator $urlGenerator,
68+
private ICloudFederationProviderManager $cloudFederationProviderManager,
69+
private Config $config,
70+
private ICloudFederationFactory $factory,
71+
private ICloudIdManager $cloudIdManager
9372
) {
9473
parent::__construct($appName, $request);
95-
96-
$this->logger = $logger;
97-
$this->userManager = $userManager;
98-
$this->groupManager = $groupManager;
99-
$this->urlGenerator = $urlGenerator;
100-
$this->cloudFederationProviderManager = $cloudFederationProviderManager;
101-
$this->config = $config;
102-
$this->factory = $factory;
103-
$this->cloudIdManager = $cloudIdManager;
10474
}
10575

10676
/**
@@ -314,6 +284,19 @@ public function receiveNotification($notificationType, $resourceType, $providerI
314284
return new JSONResponse($result,Http::STATUS_CREATED);
315285
}
316286

287+
288+
// OCM 1.1.0
289+
// /**
290+
// *
291+
// * @NoCSRFRequired
292+
// * @PublicPage
293+
// * @BruteForceProtection(action=federatedShareInvite)
294+
// */
295+
// public function inviteAccepted(): Response {
296+
// return new Response([]);
297+
// }
298+
299+
317300
/**
318301
* map login name to internal LDAP UID if a LDAP backend is in use
319302
*

apps/files_sharing/lib/Controller/ExternalSharesController.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,14 @@ public function testRemote($remote) {
134134
}
135135

136136
if (
137-
$this->testUrl('https://' . $remote . '/ocs-provider/') ||
138-
$this->testUrl('https://' . $remote . '/ocs-provider/index.php') ||
137+
$this->testUrl('https://' . $remote . '/ocm-provider/') ||
138+
$this->testUrl('https://' . $remote . '/ocm-provider/index.php') ||
139139
$this->testUrl('https://' . $remote . '/status.php', true)
140140
) {
141141
return new DataResponse('https');
142142
} elseif (
143-
$this->testUrl('http://' . $remote . '/ocs-provider/') ||
144-
$this->testUrl('http://' . $remote . '/ocs-provider/index.php') ||
143+
$this->testUrl('http://' . $remote . '/ocm-provider/') ||
144+
$this->testUrl('http://' . $remote . '/ocm-provider/index.php') ||
145145
$this->testUrl('http://' . $remote . '/status.php', true)
146146
) {
147147
return new DataResponse('http');

0 commit comments

Comments
 (0)