decodeTracks method

Future<List<Track>> decodeTracks(
  1. List<String> encoded
)

Decode multiple tracks

Implementation

Future<List<Track>> decodeTracks(List<String> encoded) async {
  LavalinkLogger.debug('Decoding ${encoded.length} tracks', tag: 'REST');

  try {
    final uri = Uri.parse('$baseUrl/v4/decodetracks');

    final request = await _httpClient.postUrl(uri);
    _addHeaders(request);
    request.headers.set('Content-Type', 'application/json');
    request.write(jsonEncode(encoded));

    final response = await request.close();
    final responseBody = await _readResponse(response);

    if (response.statusCode != 200) {
      throw LavalinkException(
        'Failed to decode tracks: ${response.statusCode}',
        statusCode: response.statusCode,
      );
    }

    final json = jsonDecode(responseBody) as List;
    return json.map((e) => Track.fromJson(e as Map<String, dynamic>)).toList();
  } catch (e) {
    if (e is LavalinkException) rethrow;
    throw LavalinkException('Failed to decode tracks: $e', cause: e);
  }
}