execute method

void execute()

Implementation

void execute() async {
  if (isNullOrEmpty(url)) return;

  // load assets from the remote
  Assets assets = Assets();
  await assets.load(url);

  for (Asset asset in assets.list) {
    if (asset.type == "file" && !abort) {
      var uri = URI.parse(asset.uri);
      if (uri != null && uri.pageExtension != null) {
        // file exists?
        var filepath = uri.asFilePath();
        bool exists = (filepath != null && Platform.fileExists(filepath));

        // check the age
        bool downloadRequired = true;
        if (exists) {
          var file = Platform.getFile(filepath);
          if (file != null) {
            var modified = await file.lastModified();
            var epoch = modified.millisecondsSinceEpoch;
            if (epoch >= (asset.epoch ?? 0)) downloadRequired = false;
            if (downloadRequired) {
              Log().debug('File on disk is out of date [${asset.name}]',
                  caller: "Mirror");
            }
          }
        }

        // get the asset from the server
        if (downloadRequired && filepath != null && !abort) {
          await _copyAssetFromServer(asset, filepath);
        }
      }
    }
  }

  Log().debug('Inventory Check Complete', caller: "Mirror");
}