downloadAsset method

  1. @visibleForTesting
Future<File?> downloadAsset(
  1. GithubAsset asset, {
  2. FileSystem? fileSystem,
  3. Directory? directory,
})

Download the '*.alfredworkflow' GithubAsset to the system temp and return a File

Implementation

@visibleForTesting
Future<File?> downloadAsset(
  GithubAsset asset, {
  FileSystem? fileSystem,
  Directory? directory,
}) async {
  final Response response = client != null
      ? await client!.get(asset.browserDownloadUrl)
      : await get(asset.browserDownloadUrl); // coverage:ignore-line

  if (response.statusCode < 400) {
    // coverage:ignore-start
    fileSystem ??= LocalFileSystem();
    directory ??= await fileSystem.systemTempDirectory.createTemp(
      'alfred_workflow_update',
    );
    // coverage:ignore-end
    final File file =
        await fileSystem.file('${directory.path}/${asset.name}').create();
    file.writeAsBytes(response.bodyBytes);

    return file;
  }

  return null;
}