fetchAllVimeoVideoLinks method

Future<VimeoResponse<List<VimeoVideoLinkDto>>> fetchAllVimeoVideoLinks({
  1. required String? videoId,
})

Get vimeo video links, resolutions and other information object by calling https://player.vimeo.com/video/[videoId]/config api.

vimeoId - the identifier value of vimeo video url.

Throw VimeoApiException when error occurred.

Implementation

Future<VimeoResponse<List<VimeoVideoLinkDto>>> fetchAllVimeoVideoLinks({
  required String? videoId,
}) async {
  try {
    final vimeoLink = 'https://player.vimeo.com/video/${videoId!}/config';
    final response = await _dio.get(vimeoLink);
    if (response.statusCode == 200) {
      final config = VimeoConfigDto.fromJson(response.data);
      return VimeoResponse.data(config.request.files.videoLinks);
    } else if (response.statusCode == 403) {
      var jsonData = jsonDecode(response.data) as dynamic;
      throw VimeoApiException(
        code: response.statusCode,
        message: jsonData['message'],
      );
    } else {
      throw VimeoApiException(
        code: response.statusCode,
        message: response.statusMessage,
      );
    }
  } on DioError catch (e) {
    Logger.e('VimeoRemoteService', e);
    if (e.isNoConnectionError) {
      throw VimeoApiException(
        code: e.response?.statusCode,
        message: 'No internet connection.',
      );
    } else if (e.error != null) {
      Logger.e(
        'VimeoRemoteService',
        'errorResponse = ${e.response?.data}',
      );
      var errorResponse = e.response != null
          ? VimeoErrorResponseDto.fromJson(e.response?.data)
          : const VimeoErrorResponseDto(message: 'Unknown Error!');
      throw VimeoApiException(
        code: e.response?.statusCode,
        message: errorResponse.message,
      );
    } else {
      rethrow;
    }
  }
}