public Uri GetUri(Uri host)
=> Tools.Transfer.JoinUri(host, Tools.Transfer.EncodePathIfRequired(host, RemoteFile));
static FileDownloadSpec BuildSpec(MultiMirrorFileDownloadSpec spec, Uri host) => spec.Progress == null ? new FileDownloadSpec(spec.GetUri(host), spec.LocalFile) { Verification = spec.Verification, CancellationToken = spec.CancellationToken, ExistingFile = spec.ExistingFile } : new FileDownloadSpec(spec.GetUri(host), spec.LocalFile, spec.Progress) { Verification = spec.Verification, CancellationToken = spec.CancellationToken, ExistingFile = spec.ExistingFile };