From 95509826afd235d4ee3a13409f1d635e878a7cc7 Mon Sep 17 00:00:00 2001 From: ImSoZRious Date: Thu, 3 Aug 2023 16:12:23 +0700 Subject: [PATCH] add config --- config/config.example.toml | 2 ++ src/config.rs | 2 ++ src/service/estamp.rs | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/config/config.example.toml b/config/config.example.toml index 1d3a782..90778f6 100644 --- a/config/config.example.toml +++ b/config/config.example.toml @@ -4,6 +4,8 @@ debug = true max_file_size = 10 phase = "register" event_day = 1 +e_stamp_count = 4 +redeem_full = false [service] backend = "localhost:3001" diff --git a/src/config.rs b/src/config.rs index ef2b030..cadd036 100644 --- a/src/config.rs +++ b/src/config.rs @@ -11,6 +11,8 @@ pub struct AppConfig { pub max_file_size: i32, pub event_day: i32, pub phase: String, + pub e_stamp_count: usize, + pub redeem_full: bool, } #[derive(serde::Deserialize, Clone)] diff --git a/src/service/estamp.rs b/src/service/estamp.rs index b27d0ea..e908a68 100644 --- a/src/service/estamp.rs +++ b/src/service/estamp.rs @@ -1,3 +1,4 @@ +use axum::http::StatusCode; use rpkm66_rust_proto::rpkm66::{ checkin::event::v1::event_service_client::EventServiceClient, checkin::user::v1::{user_service_client::UserServiceClient, GetUserEventByEventIdRequest}, @@ -8,22 +9,25 @@ use rpkm66_rust_proto::rpkm66::{ }; use tonic::{transport::Channel, Code}; -use crate::{error::Error, handler::user, Result}; +use crate::{error::Error, Result}; #[derive(Clone)] pub struct Service { event_client: EventServiceClient, user_client: UserServiceClient, + config: crate::config::AppConfig, } impl Service { pub fn new( event_client: EventServiceClient, user_client: UserServiceClient, + config: crate::config::AppConfig, ) -> Self { Service { event_client, user_client, + config, } } @@ -72,12 +76,19 @@ impl Service { } pub async fn redeem_item(&self, user_id: String) -> Result { + if self.config.redeem_full { + return Err(Error::WithMessage( + StatusCode::TOO_MANY_REQUESTS, + "Item run out".to_string(), + )); + } + let has_redeem = self.has_redeem_item(user_id.clone()).await?; if !has_redeem { let stamps = self.get_user_estamp(user_id.clone()).await?; - if stamps.len() != 4 { + if stamps.len() != self.config.e_stamp_count { return Err(Error::Forbidden); }