From 977796f56d888e8adfb2f2a500f4a9e80d7df55a Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Sun, 9 Feb 2025 13:00:23 +0530 Subject: [PATCH] feat: load forgeflux driver --- .env-sample | 1 + Cargo.lock | 17 ++++++++++++++++- Cargo.toml | 4 ++++ src/spider.rs | 14 +++++++++++--- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/.env-sample b/.env-sample index f8c3390..fad4012 100644 --- a/.env-sample +++ b/.env-sample @@ -3,3 +3,4 @@ export SQLITE_TMP="$(pwd)/db/db-sqlx-sqlite/tmp" export SQLITE_DATABASE_URL="sqlite://$SQLITE_TMP/admin.db" export STARCHART__CRAWLER__WAIT_BEFORE_NEXT_API_CALL=0 export FORGEJO_HOST=http://localhost:3000 +export FORGEFLUX_HOST=http://localhost:7000 diff --git a/Cargo.lock b/Cargo.lock index b445178..696493d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "actix" @@ -1147,6 +1147,20 @@ dependencies = [ "url", ] +[[package]] +name = "forgeflux" +version = "0.1.0" +dependencies = [ + "actix-rt", + "async-trait", + "forge-core", + "reqwest", + "serde", + "serde_json", + "tokio", + "url", +] + [[package]] name = "form_urlencoded" version = "1.0.1" @@ -2922,6 +2936,7 @@ dependencies = [ "derive_more", "federate-core", "forge-core", + "forgeflux", "gitea", "lazy_static", "log", diff --git a/Cargo.toml b/Cargo.toml index 169f25a..2f45e3a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ members = [ "db/db-core", "db/db-sqlx-sqlite", "forge/forge-core", + "forge/forgeflux", "forge/gitea", "federate/federate-core", "federate/publiccodeyml" @@ -76,6 +77,9 @@ path = "./db/db-sqlx-sqlite" [dependencies.gitea] path = "./forge/gitea" +[dependencies.forgeflux] +path = "./forge/forgeflux" + [dependencies.forge-core] path = "./forge/forge-core" diff --git a/src/spider.rs b/src/spider.rs index 619d4e6..92012b0 100644 --- a/src/spider.rs +++ b/src/spider.rs @@ -25,6 +25,7 @@ use url::Url; use db_core::prelude::*; use forge_core::prelude::*; +use forgeflux::ForgeFlux; use gitea::Gitea; use crate::ctx::Ctx; @@ -37,9 +38,16 @@ impl Ctx { info!("[crawl][{instance_url}] Init crawling"); let forge: Box = Box::new(Gitea::new(instance_url.clone(), self.client.clone())); - if !forge.is_forge().await { - unimplemented!("Forge type unimplemented"); - } + let forge = if forge.is_forge().await { + forge + } else { + let forgeflux = Box::new(ForgeFlux::new(instance_url.clone(), self.client.clone())); + if forgeflux.is_forge().await { + forgeflux + } else { + unimplemented!("Forge type unimplemented"); + } + }; let mut page = 1; let url = forge.get_url();