rewrite from gritea to "dumb" implementation
This commit is contained in:
parent
e0435daafd
commit
761f33273e
|
@ -1,2 +1,3 @@
|
||||||
TG_KEY=
|
TG_KEY=
|
||||||
GITEA_KEY=
|
GITEA_KEY=
|
||||||
|
GITEA_URL=https://git.blek.codes
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,3 +5,9 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
dotenvy_macro = "0.15.7"
|
dotenvy_macro = "0.15.7"
|
||||||
|
femme = "2.2.1"
|
||||||
|
log = "0.4.19"
|
||||||
|
reqwest = "0.11.18"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0.104"
|
||||||
|
tokio = { version = "1.29.1", features = [ "full" ] }
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
use crate::{GITEA_KEY, gitea::{User, Repo}};
|
||||||
|
|
||||||
|
macro_rules! gitea_api {
|
||||||
|
($path: expr) => {
|
||||||
|
format!("{}{}?token={}", dotenvy_macro::dotenv!("GITEA_URL", "Gitea url is not set!"), $path, GITEA_KEY)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_user() -> User {
|
||||||
|
let user = reqwest::get(gitea_api!("/api/v1/user")).await.unwrap();
|
||||||
|
|
||||||
|
if user.status() != 200 {
|
||||||
|
panic!("Request failed with code {}", user.status());
|
||||||
|
}
|
||||||
|
|
||||||
|
let user = user.bytes().await.unwrap();
|
||||||
|
let user = String::from_utf8(user.to_vec()).unwrap();
|
||||||
|
serde_json::from_str::<User>(user.as_str()).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_org_repos(org: String) -> Vec<Repo> {
|
||||||
|
let repos = reqwest::get(gitea_api!(format!("/api/v1/orgs/{org}/repos"))).await.unwrap();
|
||||||
|
|
||||||
|
if repos.status() != 200 {
|
||||||
|
panic!("Request failed with code {}", repos.status());
|
||||||
|
}
|
||||||
|
|
||||||
|
let repos = repos.bytes().await.unwrap();
|
||||||
|
let repos = String::from_utf8(repos.to_vec()).unwrap();
|
||||||
|
|
||||||
|
serde_json::from_str::<Vec<Repo>>(repos.as_str()).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn filter_repos(repos: Vec<Repo>) -> Vec<Repo> {
|
||||||
|
repos.iter().filter_map(|x| { if (!x.archived) && x.has_pull_requests { Some(x) } else { None } }).collect::<Vec<Repo>>()
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
use serde::{Serialize, Deserialize};
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
|
pub struct User {
|
||||||
|
pub id: i64,
|
||||||
|
pub login: String,
|
||||||
|
pub full_name: String
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
|
pub struct Repo {
|
||||||
|
pub id: i64,
|
||||||
|
pub owner: User,
|
||||||
|
pub name: String,
|
||||||
|
pub full_name: String,
|
||||||
|
pub private: bool,
|
||||||
|
pub archived: bool,
|
||||||
|
pub has_pull_requests: bool,
|
||||||
|
pub has_issues: bool
|
||||||
|
}
|
25
src/main.rs
25
src/main.rs
|
@ -1,8 +1,31 @@
|
||||||
#![forbid(unsafe_code)]
|
#![forbid(unsafe_code)]
|
||||||
|
|
||||||
|
use std::process::exit;
|
||||||
|
use log;
|
||||||
|
|
||||||
|
mod gitea;
|
||||||
|
mod api;
|
||||||
|
|
||||||
const TG_KEY: &str = dotenvy_macro::dotenv!("TG_KEY", "Telegram key is not set!");
|
const TG_KEY: &str = dotenvy_macro::dotenv!("TG_KEY", "Telegram key is not set!");
|
||||||
const GITEA_KEY: &str = dotenvy_macro::dotenv!("GITEA_KEY", "Gitea key is not set!");
|
const GITEA_KEY: &str = dotenvy_macro::dotenv!("GITEA_KEY", "Gitea key is not set!");
|
||||||
|
const GITEA_URL: &str = dotenvy_macro::dotenv!("GITEA_URL", "Gitea url is not set!");
|
||||||
|
|
||||||
fn main() {
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
|
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
femme::with_level(log::LevelFilter::Debug);
|
||||||
|
|
||||||
|
#[cfg(not(debug_assertions))] {
|
||||||
|
femme::with_level(log::LevelFilter::Info);
|
||||||
|
log::info!("Running in production");
|
||||||
|
}
|
||||||
|
|
||||||
|
let user = api::get_user().await;
|
||||||
|
|
||||||
|
log::info!("Logged into gitea as user \"{}\"", user.full_name);
|
||||||
|
|
||||||
|
let repos = api::get_org_repos("Tochka".into()).await;
|
||||||
|
|
||||||
|
log::info!("Found {} repositories", repos.len());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue