feat!: start implementing repo listing & auth middleware

This commit is contained in:
2026-01-15 00:20:14 -08:00
parent 92d409f812
commit 6f2f64fd73
18 changed files with 1982 additions and 21 deletions

View File

@@ -0,0 +1,35 @@
use actix_web::{HttpRequest, HttpResponse, web};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::{AppState, account::AccountRepository, error::Result};
#[derive(Serialize, Deserialize)]
struct Repository {
name: String,
full_name: String,
description: String,
language: String,
stars: usize,
updated_at: DateTime<Utc>,
private: bool,
}
pub async fn get_repos(
app_state: web::Data<AppState>,
path: web::Path<String>,
) -> Result<HttpResponse> {
let user_id = path.into_inner();
let query = AccountRepository::new(&app_state.pool);
let token = query.get_access_token(&user_id).await?;
let response = app_state
.reqwest_client
.get("https://api.github.com/user/repos")
.bearer_auth(token)
.send()
.await?;
response.error_for_status_ref()?;
Ok(HttpResponse::Ok().json(response.json::<Vec<Repository>>().await?))
}