Beispiel #1
0
        private DownloadTarget[] InternalGetVersionFilesInfo(FullVersionId fullVersionId)
        {
            _log.Info($"Collecting files info for version {fullVersionId}...");
            var result  = new List <DownloadTarget>(1024);
            var prefix  = fullVersionId.Prefix;
            var version = fullVersionId.Version;

            var basePath = Path.Combine(_versionsPath, prefix, version);
            var baseUrl  = $"{_storeUrl}/{prefix}/{version}";

            _log.Info($"Add {version}.jar to list");
            var dataIndex = _json.ReadFile <VersionDataIndex>(Path.Combine(basePath, "data.json"));

            var jarPath = Path.Combine(basePath, $"{version}.jar");
            var jarUrl  = $"{baseUrl}/{version}.jar";

            result.Add(new DownloadTarget(jarPath, jarUrl, dataIndex.Main.Size, dataIndex.Main.Hash));

            if (dataIndex.Files?.Index != null)
            {
                _log.Info("Add custom files to list");
                foreach (var(relativePath, info) in dataIndex.Files.Index)
                {
                    var path = Path.Combine(basePath, "files", relativePath);
                    var url  = $"{baseUrl}/files/{relativePath}";
                    result.Add(new DownloadTarget(path, url, info.Size, info.Hash));
                }
            }

            _log.Info("Add libraries to list");
            var versionIndex = _json.ReadFile <VersionIndex>(Path.Combine(basePath, $"{version}.json"));

            AppendLibsInfo(versionIndex, dataIndex, result);

            _log.Info("Add assets to list");
            var assetsIndexRelativePath = IndexTool.GetAssetIndexPath(versionIndex);
            var assetsIndexPath         = Path.Combine(_assetsPath, "indexes", assetsIndexRelativePath);
            var assetsIndex             = _json.ReadFile <AssetsIndex>(assetsIndexPath);

            AppendAssets(assetsIndex.Objects, result);

            _log.Info($"Complete! Total files: {result.Count}");
            return(result.ToArray());
        }
Beispiel #2
0
        private async Task InternalFetchVersionIndexes(FullVersionId fullVersionId)
        {
            var basePath = Path.Combine(_versionsPath, fullVersionId.Prefix, fullVersionId.Version);
            var baseUrl  = $"{_storeUrl}/{fullVersionId.Prefix}/{fullVersionId.Version}";

            var versionIndexName = $"{fullVersionId.Version}.json";

            foreach (var fileName in new[] { versionIndexName, "data.json" })
            {
                var url  = $"{baseUrl}/{fileName}";
                var path = Path.Combine(basePath, fileName);
                await DownloadFile(path, url);
            }

            var versionIndex = _json.ReadFile <VersionIndex>(Path.Combine(basePath, versionIndexName));

            var assetsIndexRelativePath = IndexTool.GetAssetIndexPath(versionIndex);
            var assetsIndexPath         = Path.Combine(_assetsPath, "indexes", assetsIndexRelativePath);
            var assetsIndexUrl          = $"{_storeUrl}/assets/indexes/{assetsIndexRelativePath}";

            await DownloadFile(assetsIndexPath, assetsIndexUrl);
        }