$getRoomByShareToken_Request method

  1. @experimental
Request $getRoomByShareToken_Request({
  1. required String shareToken,
  2. FilesIntegrationGetRoomByShareTokenApiVersion? apiVersion,
  3. bool? oCSAPIRequest,
})

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 to true.

Status codes:

  • 200: Room token and user info returned
  • 400: Rooms not allowed for shares
  • 404: Share not found

See:

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;
}