renamed jwt_middleware to auth_middleware, await shared Tracker

struct creation, fix passkeys length
This commit is contained in:
FrenchGithubUser
2025-10-14 17:40:12 +02:00
parent 117b6ae0cb
commit af124c9a77
59 changed files with 72 additions and 64 deletions

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{web::Data, HttpResponse};
use actix_web_lab::extract::Query;
use arcadia_common::error::Result;

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Query},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,5 +1,5 @@
use crate::{
handlers::scrapers::ExternalDBData, middlewares::jwt_middleware::Authdata,
handlers::scrapers::ExternalDBData, middlewares::auth_middleware::Authdata,
services::external_db_service::check_if_existing_title_group_with_link_exists, Arcadia,
};
use actix_web::{

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,5 +1,5 @@
use crate::{
middlewares::jwt_middleware::Authdata, services::email_service::EmailService, Arcadia,
middlewares::auth_middleware::Authdata, services::email_service::EmailService, Arcadia,
};
use actix_web::{
web::{Data, Json},

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -3,7 +3,7 @@ use actix_web::{
HttpResponse,
};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::Result;
use arcadia_storage::{
models::torrent::{TorrentSearch, TorrentSearchResults},

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Path},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{web::Data, HttpResponse};
use arcadia_common::error::Result;
use arcadia_storage::models::staff_pm::StaffPmOverview;

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Path},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Query},
HttpResponse,

View File

@@ -1,6 +1,6 @@
use crate::{
handlers::subscriptions::create_subscription::AddSubscriptionQuery,
middlewares::jwt_middleware::Authdata, Arcadia,
middlewares::auth_middleware::Authdata, Arcadia,
};
use actix_web::{
web::{Data, Query},

View File

@@ -9,7 +9,7 @@ use arcadia_storage::{
use futures::future::join_all;
use crate::{
handlers::external_db::get_tmdb_data::get_tmdb_rating, middlewares::jwt_middleware::Authdata,
handlers::external_db::get_tmdb_data::get_tmdb_rating, middlewares::auth_middleware::Authdata,
Arcadia,
};
use arcadia_common::error::Result;

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -10,7 +10,7 @@ use arcadia_storage::{
redis::RedisPoolInterface,
};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::{Error, Result};
#[utoipa::path(

View File

@@ -8,7 +8,7 @@ use arcadia_storage::{
use serde::Deserialize;
use utoipa::IntoParams;
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::Result;
#[derive(Debug, Deserialize, IntoParams)]

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -10,7 +10,7 @@ use arcadia_storage::{
redis::RedisPoolInterface,
};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::{Error, Result};
#[utoipa::path(

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,7 +1,7 @@
use actix_multipart::form::MultipartForm;
use actix_web::{web::Data, HttpResponse};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::Result;
use arcadia_storage::{
models::torrent::{Torrent, UploadedTorrent},

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -4,7 +4,7 @@ use actix_web::{
};
use serde_json::json;
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::{Error, Result};
use arcadia_storage::{
models::{torrent::TorrentToDelete, user::UserClass},

View File

@@ -9,7 +9,7 @@ use arcadia_storage::redis::RedisPoolInterface;
use serde::Deserialize;
use utoipa::{IntoParams, ToSchema};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::Result;
#[derive(Debug, Deserialize, IntoParams, ToSchema)]

View File

@@ -3,7 +3,7 @@ use actix_web::{
HttpResponse,
};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::{Error, Result};
use arcadia_storage::{
models::{

View File

@@ -1,6 +1,6 @@
use actix_web::{web::Data, HttpResponse};
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::error::{Error, Result};
use arcadia_storage::{
models::{torrent::TorrentMinimal, user::UserClass},

View File

@@ -3,7 +3,7 @@ use arcadia_storage::redis::RedisPoolInterface;
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use arcadia_common::{error::Result, services::torrent_service::get_announce_url};
#[derive(Debug, Serialize, Deserialize, ToSchema)]

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Query},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{web::Data, HttpResponse};
use arcadia_common::error::Result;
use arcadia_storage::{

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{web::Data, HttpResponse};
use arcadia_common::error::{Error, Result};
use arcadia_storage::{

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Query},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{web::Data, HttpResponse};
use arcadia_common::error::Result;
use arcadia_storage::{models::conversation::ConversationsOverview, redis::RedisPoolInterface};

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -1,4 +1,4 @@
use crate::{middlewares::jwt_middleware::Authdata, Arcadia};
use crate::{middlewares::auth_middleware::Authdata, Arcadia};
use actix_web::{
web::{Data, Json},
HttpResponse,

View File

@@ -130,6 +130,7 @@ fn validate_tracker_api_key<R: RedisPoolInterface + 'static>(
req: ServiceRequest,
api_key: &str,
) -> std::result::Result<ServiceRequest, (actix_web::Error, ServiceRequest)> {
println!("tracker req");
let arc = req.app_data::<Data<Arcadia<R>>>().expect("app data set");
if arc.env.tracker.api_key != api_key {

View File

@@ -1 +1 @@
pub mod jwt_middleware;
pub mod auth_middleware;

View File

@@ -26,7 +26,7 @@ use crate::handlers::tracker::config as TrackerConfig;
use crate::handlers::user_applications::config as UserApplicationsConfig;
use crate::handlers::users::config as UsersConfig;
use crate::handlers::wiki::config as WikiConfig;
use crate::middlewares::jwt_middleware::authenticate_user;
use crate::middlewares::auth_middleware::authenticate_user;
pub fn init<R: RedisPoolInterface + 'static>(cfg: &mut web::ServiceConfig) {
cfg.service(scope("/announce").configure(AnnouncesConfig::<R>));

View File

@@ -48,7 +48,7 @@ CREATE TABLE users (
UNIQUE(passkey)
);
INSERT INTO users (username, email, password_hash, registered_from_ip, settings, passkey)
VALUES ('creator', 'none@domain.com', 'none', '127.0.0.1', '{}'::jsonb, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
VALUES ('creator', 'none@domain.com', 'none', '127.0.0.1', '{}'::jsonb, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
CREATE TABLE api_keys (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),

View File

@@ -27,11 +27,11 @@ INSERT INTO public._sqlx_migrations VALUES (20250312215600, 'initdb', '2025-09-1
-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: arcadia
--
INSERT INTO public.users VALUES (1, 'creator', NULL, 'none@domain.com', 'none', '127.0.0.1', '2025-09-17 12:42:13.702455+00', '', 0, 0, 1, 1, 0, 0, '2025-09-17 12:42:13.702455+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '{}', 'aa', false, false, '');
INSERT INTO public.users VALUES (5, 'waterbottle', 'https://i.pinimg.com/736x/a6/27/12/a6271204df8d387c3e614986c106f549.jpg', 'user2@example.com', 'hashedpassword2', '192.168.1.2', '2025-03-30 16:24:57.388152+00', '', 0, 0, 1, 1, 0, 0, '2025-03-30 16:24:57.388152+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', 'fqmslfjqmlsfj', false, false, '''''');
INSERT INTO public.users VALUES (3, 'coolguy', 'https://i.pinimg.com/474x/c1/5a/6c/c15a6c91515e22f6ea8b766f89c12f0c.jpg', 'user3@example.com', 'hashedpassword3', '192.168.1.3', '2025-03-30 16:24:57.388152+00', '', 0, 0, 1, 1, 0, 0, '2025-03-30 16:24:57.388152+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', 'qnsvmqfmlqsdm', false, false, '''''');
INSERT INTO public.users VALUES (2, 'picolo', 'https://img.freepik.com/premium-vector/random-people-line-art-vector_567805-63.jpg', 'user1@example.com', '$argon2id$v=19$m=19456,t=2,p=1$s4XJtCUk9IrGgNsTfP6Ofw$ktoGbBEoFaVgdiTn19Gh9h45LjFiv7AUEL5KHhzm4d0', '192.168.1.1', '2025-03-30 16:24:57.388152+00', '', 10000, 0, 1, 1, 0, 0, '2025-09-17 09:27:11.336576+00', 'staff', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 999999410, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', 'qmofqmlskdfnnns', false, false, '''''');
INSERT INTO public.users VALUES (4, 'test', NULL, 'test@test.tsttt', '$argon2id$v=19$m=19456,t=2,p=1$yaA+WqA4OfSyAqR3iXhDng$/Ngv7VeJvVNHli9rBgQG0d/O2W+qoI2yHhQxZSxxW2M', '127.0.0.1', '2025-04-10 19:15:51.036818+00', '', 979900000000, 0, 1, 1, 0, 0, '2025-09-17 09:15:44.322914+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99999000, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', 'mqnmnqmlngqsklf', false, false, '''''');
INSERT INTO public.users VALUES (1, 'creator', NULL, 'none@domain.com', 'none', '127.0.0.1', '2025-09-17 12:42:13.702455+00', '', 0, 0, 1, 1, 0, 0, '2025-09-17 12:42:13.702455+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '{}', '111111111111111111111111111111111', false, false, '');
INSERT INTO public.users VALUES (5, 'waterbottle', 'https://i.pinimg.com/736x/a6/27/12/a6271204df8d387c3e614986c106f549.jpg', 'user2@example.com', 'hashedpassword2', '192.168.1.2', '2025-03-30 16:24:57.388152+00', '', 0, 0, 1, 1, 0, 0, '2025-03-30 16:24:57.388152+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', '22222222222222222222222222222222', false, false, '''''');
INSERT INTO public.users VALUES (3, 'coolguy', 'https://i.pinimg.com/474x/c1/5a/6c/c15a6c91515e22f6ea8b766f89c12f0c.jpg', 'user3@example.com', 'hashedpassword3', '192.168.1.3', '2025-03-30 16:24:57.388152+00', '', 0, 0, 1, 1, 0, 0, '2025-03-30 16:24:57.388152+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', '33333333333333333333333333333333', false, false, '''''');
INSERT INTO public.users VALUES (2, 'picolo', 'https://img.freepik.com/premium-vector/random-people-line-art-vector_567805-63.jpg', 'user1@example.com', '$argon2id$v=19$m=19456,t=2,p=1$s4XJtCUk9IrGgNsTfP6Ofw$ktoGbBEoFaVgdiTn19Gh9h45LjFiv7AUEL5KHhzm4d0', '192.168.1.1', '2025-03-30 16:24:57.388152+00', '', 10000, 0, 1, 1, 0, 0, '2025-09-17 09:27:11.336576+00', 'staff', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 999999410, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', '44444444444444444444444444444444', false, false, '''''');
INSERT INTO public.users VALUES (4, 'test', NULL, 'test@test.tsttt', '$argon2id$v=19$m=19456,t=2,p=1$yaA+WqA4OfSyAqR3iXhDng$/Ngv7VeJvVNHli9rBgQG0d/O2W+qoI2yHhQxZSxxW2M', '127.0.0.1', '2025-04-10 19:15:51.036818+00', '', 979900000000, 0, 1, 1, 0, 0, '2025-09-17 09:15:44.322914+00', 'newbie', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99999000, 0, '{"site_appearance": {"item_detail_layout": "sidebar_right"}}', '55555555555555555555555555555555', false, false, '''''');
--
@@ -1626,4 +1626,3 @@ SELECT pg_catalog.setval('public.wiki_articles_id_seq', 1, true);
--
-- PostgreSQL database dump complete
--

View File

@@ -42,7 +42,7 @@ impl ConnectionPool {
// TODO: check if the passkey already exists
let passkey: String = rng
.sample_iter(&Alphanumeric)
.take(33)
.take(32)
.map(char::from)
.collect();

View File

@@ -6,7 +6,7 @@ use std::{fmt::Display, str::FromStr};
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq)]
pub struct Passkey(pub [u8; 32]);
#[derive(Clone, Deserialize, Serialize)]
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct User {
pub id: u32,
pub passkey: Passkey,

View File

@@ -16,7 +16,7 @@ thiserror = "2.0.12"
actix-web-httpauth = "0.8.2"
futures = "0.3"
serde = { version = "1.0", features = ["derive"] }
strum = "0.27"
strum = { version = "0.27", features = ["derive", "std"] }
log = "0.4"
serde_bencode = "0.2.4"
indexmap = { version = "2.11.0", default-features = false, features = ["std", "serde"] }

View File

@@ -1,11 +1,12 @@
use std::ops::{Deref, DerefMut};
use indexmap::IndexMap;
use reqwest::Client;
use serde::Serialize;
pub use arcadia_shared::tracker::models::user::{Passkey, User};
#[derive(Serialize)]
#[derive(Debug, Serialize)]
pub struct Map(IndexMap<u32, User>);
impl Map {
@@ -14,7 +15,14 @@ impl Map {
std::env::var("ARCADIA_API_BASE_URL").expect("env var ARCADIA_API_BASE_URL not set");
let url = format!("{}/api/tracker/users", base_url);
let resp = reqwest::get(url).await.expect("failed to fetch users");
let client = Client::new();
let api_key = std::env::var("API_KEY").expect("env var API_KEY not set");
let resp = client
.get(url)
.header("api_key", api_key)
.send()
.await
.expect("failed to fetch users");
let bytes = resp
.bytes()
.await

View File

@@ -19,7 +19,7 @@ async fn main() -> std::io::Result<()> {
let server_url = format!("127.0.0.1:{web_server_port}").to_string();
println!("Server running at http://{server_url}");
let arc = Data::new(Tracker::new(env));
let arc = Data::new(Tracker::new(env).await);
let server = HttpServer::new(move || {
App::new()
.wrap(middleware::Logger::default())