feat: load forgeflux driver
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful

This commit is contained in:
Aravinth Manivannan 2025-02-09 13:00:23 +05:30
parent a9e482272e
commit 977796f56d
Signed by: realaravinth
GPG key ID: F8F50389936984FF
4 changed files with 32 additions and 4 deletions

View file

@ -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

17
Cargo.lock generated
View file

@ -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",

View file

@ -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"

View file

@ -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<dyn SCForge> =
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();