Current code blindy adds any resources to the ocm disocvery, this makes
it so that different cloud federation providers can not add different
protocols for the same resourceType without the resourceType being
duplicated, something that OCM does not allow:
```
REQUIRED: resourceTypes (array) - A list of all resource types this
server supports in both the Sending Server role and the Receiving
Server role, with their access protocols. Each item in this list MUST
itself be an object containing the following fields:
name (string) - A supported resource type (file, calendar, contact, ...).
Implementations MUST offer support for at least one resource type, where
file is the commonly supported one. Each resource type is identified by
its name: the list MUST NOT contain more than one resource type object
per given name.
...
```
https://datatracker.ietf.org/doc/html/draft-ietf-ocm-open-cloud-mesh-04#name-fields
This patch changes this behaviour from this example result:
```
{
"name": "folder",
"shareTypes": [
"user"
],
"protocols": {
"webapp": {}
}
},
{
"name": "folder",
"shareTypes": [
"user"
],
"protocols": {
"webapp-receive": {
"targets": [
"blank",
"iframe"
]
}
}
```
to:
```
{
"name": "folder",
"shareTypes": [
"user"
],
"protocols": {
"webapp": {},
"webapp-receive": {
"targets": [
"blank",
"iframe"
]
}
}
```
which is the correct behaviour according to OCM.
Signed-off-by: Micke Nordin <kano@sunet.se>
The diff can be checked using: git diff --ignore-all-space --ignore-blank-lines
To see only the changes not related to blank lines.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
- Add `provider` to `jsonSerialize()` output of OCMProvider.
- Ensures discovery consumers receive provider identifier along with
endpoint, version, and resources.
Signed-off-by: Micke Nordin <kano@sunet.se>
- Call `setCapabilities()` with `capabilities` field when available.
- Prevents loss of provider capability information during discovery.
Signed-off-by: Micke Nordin <kano@sunet.se>
When the public key feature is disabled null is returned for
`publicKey`. So in this case we need to adjust the capabilities
and return type of `jsonSerialize()`.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>