$getRoomByShareToken_Request method
- @experimental
Returns the token of the room associated to the file of the given share token.
This is the counterpart of self::getRoomByFileId() for share tokens instead of file ids, although both return the same room token if the given file id and share token refer to the same file. If there is no room associated to the file id of the given share token a new room is created; the new room is a public room associated with a "file" object with the file id of the given share token. Unlike normal rooms in which the owner is the user that created the room these are special rooms without owner (although self joined users with direct access to the file become persistent participants automatically when they join until they explicitly leave or no longer have access to the file). In any case, to create or even get the token of the room, the file must be publicly shared (like a link share, for example); an error is returned otherwise. Besides the token of the room this also returns the current user ID and display name, if any; this is needed by the Talk sidebar to know the actual current user, as the public share page uses the incognito mode and thus logged-in users as seen as guests.
Returns a DynamiteRequest
backing the getRoomByShareToken operation.
Throws a DynamiteApiException
if the API call does not return an expected status code.
Parameters:
apiVersion
Defaults to"v1"
.shareToken
Token of the file share.oCSAPIRequest
Required to be true for the API request to pass. Defaults totrue
.
Status codes:
- 200: Room token and user info returned
- 400: Rooms not allowed for shares
- 404: Share not found
See:
- getRoomByShareToken for a method executing this request and parsing the response.
- $getRoomByShareToken_Serializer for a converter to parse the
Response
from an executed this request.
Implementation
@_i2.experimental
_i3.Request $getRoomByShareToken_Request({
required String shareToken,
FilesIntegrationGetRoomByShareTokenApiVersion? apiVersion,
bool? oCSAPIRequest,
}) {
final _parameters = <String, Object?>{};
final $shareToken = _$jsonSerializers.serialize(shareToken, specifiedType: const FullType(String));
_i4.checkString(
$shareToken,
'shareToken',
pattern: RegExp(r'^.+$'),
);
_parameters['shareToken'] = $shareToken;
var $apiVersion = _$jsonSerializers.serialize(
apiVersion,
specifiedType: const FullType(FilesIntegrationGetRoomByShareTokenApiVersion),
);
$apiVersion ??= 'v1';
_parameters['apiVersion'] = $apiVersion;
final _path =
_i5.UriTemplate('/ocs/v2.php/apps/spreed/api/{apiVersion}/publicshare/{shareToken}').expand(_parameters);
final _uri = Uri.parse('${_rootClient.baseURL}$_path');
final _request = _i3.Request('get', _uri);
_request.headers['Accept'] = 'application/json';
// coverage:ignore-start
final authentication = _rootClient.authentications?.firstWhereOrNull(
(auth) => switch (auth) {
_i1.DynamiteHttpBearerAuthentication() || _i1.DynamiteHttpBasicAuthentication() => true,
_ => false,
},
);
if (authentication != null) {
_request.headers.addAll(
authentication.headers,
);
}
// coverage:ignore-end
var $oCSAPIRequest = _$jsonSerializers.serialize(oCSAPIRequest, specifiedType: const FullType(bool));
$oCSAPIRequest ??= true;
_request.headers['OCS-APIRequest'] = const _i4.HeaderEncoder().convert($oCSAPIRequest);
return _request;
}