using System;
using System.IO;
using System.IO.Compression;
using System.Text.Json;
namespace OpenTap.Package
{
internal class PackageQueryException : Exception
{
public PackageQueryException(string message) : base(message)
{
}
}
///
/// This class takes care of making the right package query queries to the repository server.
///
static class PackageDependencyQuery
{
static readonly TraceSource log = Log.CreateSource("GraphQL");
///
/// Only used by unit tests
///
///
///
///
public static PackageDependencyGraph LoadGraph(Stream stream, bool compressed)
{
if(compressed)
stream = new GZipStream(stream, CompressionMode.Decompress, leaveOpen: true);
var graph = new PackageDependencyGraph();
var doc = JsonDocument.Parse(stream);
var packages = doc.RootElement.GetProperty("packages");
graph.LoadFromJson(packages);
if (compressed)
stream.Dispose();
return graph;
}
}
}