Skip to content

API As Middlaware between Strikr Services and Odyssey interactive internal API

Notifications You must be signed in to change notification settings

Strikr-gg/strikr-api

Repository files navigation

Strikr - API

Strikr is a front-end for the strikr API @ strikr.gg.
The website running this application was made as a way to demonstrate what could be built using strikr as relay to the game OmegaStrikers.

About this repository

The source code for this API was previously private because I (@nodgear) signed an NDA with Odyssey Interactive after my efforts to reverse engineer the game API but the endpoints ended up being reverse engineered and published in github a while ago.

Features

  • Displays all information displayed in game and much more by tapping into unused/hidden api endpoints from Odyssey.
  • Smart Caching:
    • Not so smart...
    • If a user cache is from the "past day or before" a new snapshot of this user is created.
    • Returns the last known state of the user directly from our snapshots table instead of making unecessary requests to the game API. reducing the request time to fractions of normal.
    • Can be easily bypassed by passing a force parameter, forcing the api to renew the user snapshot using fresh game data.
  • Leaderboard cache for every region.
  • Suports japanese server (why do i even have to list this as feature? common, guys, requires 0 effort to just support all servers)
  • Capable of importing data from corestrike, another tool for the game tapping into the same api. This cronjob is disabled by default, please ask the developer of corestrike.gg for permission before running.*
  • Displays information for alternative gamemodes, including but not limited to normal games.

*: Corestrike does not expose all information strikr needs, which means it only imports ranked data into strikr ranked snapshots

Requirements

  • NodeJS 14+
  • Relational database (Recommended: PostgreSQL)

Running this application

  1. Create a new .env file in the root directory
  2. Fill the env file following the Environment Variables section
  3. Run the following commands
# pm = your nodejs package manager [npm/pnpm/yarn...]

# Push the current database schema to your db
pm prisma db push

# Generate Prisma Typings for the project
pm prisma generate

# Run API in development mode:
pm start:dev

# Build the project
pm build

# Run API in production mode
pm start:prod

Environment Variables

Env Type Description
JWT_SECRET string Random, preferably big string used as JWT encryption seed (i recommend uuidv4)
ODYSSEY_TOKEN string Omega Strikers JWT token.
ODYSSEY_REFRESH_TOKEN string Omega Strikers JWT Refresh Token.
DATABASE_URL string Prisma DB URL Schema
ODYSSEY_URL string Odyssey api url for Prometheus (OS) Game

FAQ

This code sucks!

: i cannot disagree, but i've seen worse

Why are there mentions of game caracters like playmaker?

: Omega strikers internal name is Prometheus, and like the game itself, all characters and skills have internal names different from their final names in-game.

How do i obtain the prometheus/odyssey jwt token?

: I cannot give you this information since it was not disclosed by someone else

Where's the interface?

: This is just the API code.
For the front-end check this repository: (Strikr)[https://strikr-gg/strikr].
Note: The website was originally made to showcase the API but got extremely popular. Some calculations there are made for showcasing purposes and does not reflect real life performance.

Why this api doesn't grab the token by itself?

: It is how strikr used to run and i recommend doing it instead of saving into the env
The branch containing this feature cannot be published. same as question 3.


Important

I am not affiliate/endorsed by Odyssey Interactive.
Omega Strikers and it's assets are property of Odyssey Interactive

Extra credits:

About

API As Middlaware between Strikr Services and Odyssey interactive internal API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published