diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index bffc196..6f6784f 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -116,6 +116,12 @@ jobs: env: PIDGTM_DATABASE_URL: ${{ secrets.PIDGTM_DATABASE_URL }} STARTGG_TOKEN: ${{ secrets.STARTGG_TOKEN }} + STARTGG_TOKEN_1: ${{ secrets.STARTGG_TOKEN_1 }} + STARTGG_TOKEN_2: ${{ secrets.STARTGG_TOKEN_2 }} + STARTGG_TOKEN_3: ${{ secrets.STARTGG_TOKEN_3 }} + STARTGG_TOKEN_4: ${{ secrets.STARTGG_TOKEN_4 }} + STARTGG_TOKEN_5: ${{ secrets.STARTGG_TOKEN_5 }} + STARTGG_TOKEN_6: ${{ secrets.STARTGG_TOKEN_6 }} - name: Upload Code Coverage Results uses: codecov/codecov-action@v3 diff --git a/Cargo.lock b/Cargo.lock index c1a8c11..e9fac54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2275,6 +2275,7 @@ dependencies = [ "anyhow", "as-any", "gql_client", + "rand", "serde", "tokio", ] diff --git a/backend-deployment.yml b/backend-deployment.yml index b743fbf..7053401 100644 --- a/backend-deployment.yml +++ b/backend-deployment.yml @@ -22,12 +22,42 @@ spec: - name: PIDGTM_DATABASE_URL valueFrom: secretKeyRef: - name: backend-secrets + name: backend-secrets-multiple-tokens key: PIDGTM_DATABASE_URL - name: STARTGG_TOKEN valueFrom: secretKeyRef: - name: backend-secrets + name: backend-secrets-multiple-tokens key: STARTGG_TOKEN + - name: STARTGG_TOKEN_1 + valueFrom: + secretKeyRef: + name: backend-secrets-multiple-tokens + key: STARTGG_TOKEN_1 + - name: STARTGG_TOKEN_2 + valueFrom: + secretKeyRef: + name: backend-secrets-multiple-tokens + key: STARTGG_TOKEN_2 + - name: STARTGG_TOKEN_3 + valueFrom: + secretKeyRef: + name: backend-secrets-multiple-tokens + key: STARTGG_TOKEN_3 + - name: STARTGG_TOKEN_4 + valueFrom: + secretKeyRef: + name: backend-secrets-multiple-tokens + key: STARTGG_TOKEN_4 + - name: STARTGG_TOKEN_5 + valueFrom: + secretKeyRef: + name: backend-secrets-multiple-tokens + key: STARTGG_TOKEN_5 + - name: STARTGG_TOKEN_6 + valueFrom: + secretKeyRef: + name: backend-secrets-multiple-tokens + key: STARTGG_TOKEN_6 nodeSelector: - node: rpileaf02 \ No newline at end of file + node: rpileaf02 diff --git a/startgg_api/Cargo.toml b/startgg_api/Cargo.toml index d3f1b6f..32506d3 100644 --- a/startgg_api/Cargo.toml +++ b/startgg_api/Cargo.toml @@ -12,4 +12,5 @@ anyhow = "1" gql_client = "1" serde = "1" as-any = "0.3" -tokio = { version = "1.1", features = [ "rt", "macros" ] } \ No newline at end of file +tokio = { version = "1.1", features = [ "rt", "macros" ] } +rand = "0.8" \ No newline at end of file diff --git a/startgg_api/src/lib.rs b/startgg_api/src/lib.rs index 89eb5c1..c49c039 100644 --- a/startgg_api/src/lib.rs +++ b/startgg_api/src/lib.rs @@ -199,10 +199,7 @@ pub struct StartGG { impl StartGG { pub fn connect() -> Self { let mut headers = HashMap::new(); - let bearer_token = format!( - "Bearer {}", - std::env::var("STARTGG_TOKEN").expect("could not find STARTGG_TOKEN env var") - ); + let bearer_token = format!("Bearer {}", get_random_startgg_token()); headers.insert("authorization", bearer_token.as_str()); Self { gql_client: gql_client::Client::new_with_headers(STARTGG_ENDPOINT, headers), @@ -214,6 +211,19 @@ impl StartGG { } } +// Function to randomly get a STARTGG_TOKEN between STARTGG_TOKEN_1 and STARTGG_TOKEN_6 +pub fn get_random_startgg_token() -> String { + let random_number = rand::random::() % 6 + 1; + let STARTGG_TOKEN = format!("STARTGG_TOKEN_{}", random_number); + match std::env::var(format!("STARTGG_TOKEN_{}", random_number)) { + Ok(token) => token, + Err(_) => { + eprintln!("Token not found for {}", STARTGG_TOKEN); + std::env::var("STARTGG_TOKEN").expect("STARTGG_TOKEN not found") + } + } +} + pub const SSBU_CHARACTERS: [(i32, &str); 87] = [ (1271, "Bayonetta"), (1272, "Bowser Jr."), @@ -303,3 +313,11 @@ pub const SSBU_CHARACTERS: [(i32, &str); 87] = [ (1846, "Kazuya"), (1897, "Sora"), ]; + +#[cfg(test)] +mod tests { + #[test] + fn test_get_random_startgg_token() { + dbg!(crate::get_random_startgg_token()); + } +}