getContent method

Future<FileResponse> getContent(
  1. String serverName,
  2. String mediaId, {
  3. bool? allowRemote,
})

serverName The server name from the mxc:// URI (the authoritory component)

mediaId The media ID from the mxc:// URI (the path component)

allowRemote Indicates to the server that it should not attempt to fetch the media if it is deemed remote. This is to prevent routing loops where the server contacts itself. Defaults to true if not provided.

Implementation

Future<FileResponse> getContent(String serverName, String mediaId,
    {bool? allowRemote}) async {
  final requestUri = Uri(
      path:
          '_matrix/media/v3/download/${Uri.encodeComponent(serverName)}/${Uri.encodeComponent(mediaId)}',
      queryParameters: {
        if (allowRemote != null) 'allow_remote': allowRemote.toString(),
      });
  final request = Request('GET', baseUri!.resolveUri(requestUri));
  request.headers['authorization'] = 'Bearer ${bearerToken!}';
  final response = await httpClient.send(request);
  final responseBody = await response.stream.toBytes();
  if (response.statusCode != 200) unexpectedResponse(response, responseBody);
  return FileResponse(
      contentType: response.headers['content-type'], data: responseBody);
}