The high-performance core of the Rocket PSStore ecosystem.
RocketPSStore.FdroidParser is a modern, strongly-typed .NET library specifically engineered to handle massive F-Droid index-v2.json repositories. Designed for speed and memory efficiency, it brings "Rocket-class" repository management to the C# and .NET ecosystem.
- ⚡ Zero-Footprint Streaming: Processes the 30MB+ F-Droid index entry-by-entry. No more
OutOfMemoryExceptionon mobile devices. - 📦 Native GZIP Support: Automatic decompression handling using modern
HttpClientprotocols. - 🌍 Intelligent Localization: Built-in logic to prioritize your preferred language (e.g.,
en-US) with smart fallbacks. - 🔗 Async-First: Fully utilizes
IAsyncEnumerablefor non-blocking UI updates. - 🛡️ Battle-Tested: Integrated unit tests ensure data integrity across all .NET 8+ runtimes.
Install via the NuGet Package Manager:
dotnet add package RocketPSStore.FdroidParserProcessing a repository index is as simple as a few lines of code. The parser streams data directly from the source, allowing you to stop whenever you find what you need.
using RocketPSStore.FdroidParser;
// Initialize the Rocket Client
using var client = new FdroidClient();
const string repoUrl = "[https://f-droid.org/repo/index-v2.json](https://f-droid.org/repo/index-v2.json)";
// Stream apps one by one to keep memory usage low
await foreach (var app in client.StreamAppsAsync(repoUrl))
{
Console.WriteLine($"Found App: {app.DisplayName}");
// Efficiently exit the stream early
if (app.PackageName == "org.fdroid.fdroid")
{
Console.WriteLine("Found the official F-Droid app!");
break;
}
}We welcome contributions to the Rocket engine! Whether it's fixing a bug or suggesting a new feature, your help makes the Rocket fly higher.
- Clone the repository.
- Build the project:
dotnet build --configuration Release
- Run the test suite:
dotnet test
- High-performance GZIP streaming.
- Initial NuGet Release.
- .NET MAUI Integration Samples.
- Multi-repository support (v3 index format).
This project is licensed under the LGPL-2.1 License - see the LICENSE file for details.