mirror of
https://github.com/vkaelin/LeagueStats.git
synced 2026-03-25 12:57:28 +00:00
feat: add CDragonController back
This commit is contained in:
parent
96352669d0
commit
5b9a29ab4b
3 changed files with 55 additions and 1 deletions
27
server-v2/app/Controllers/Http/CDragonController.ts
Normal file
27
server-v2/app/Controllers/Http/CDragonController.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import Redis from '@ioc:Adonis/Addons/Redis'
|
||||||
|
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||||
|
import RuneSerializer from 'App/Serializers/RuneSerializer'
|
||||||
|
import Jax from 'App/Services/Jax'
|
||||||
|
|
||||||
|
export default class CDragonController {
|
||||||
|
public async runes({ response }: HttpContextContract) {
|
||||||
|
const cacheUrl = 'cdragon-runes'
|
||||||
|
|
||||||
|
const requestCached = await Redis.get(cacheUrl)
|
||||||
|
if (requestCached) {
|
||||||
|
return response.json(requestCached)
|
||||||
|
}
|
||||||
|
|
||||||
|
const perks = await Jax.CDragon.perks()
|
||||||
|
const perkstyles = await Jax.CDragon.perkstyles()
|
||||||
|
|
||||||
|
const runesData = {
|
||||||
|
perks: RuneSerializer.serializePerks(perks),
|
||||||
|
perkstyles: RuneSerializer.serializeStyles(perkstyles.styles),
|
||||||
|
}
|
||||||
|
|
||||||
|
await Redis.set(cacheUrl, JSON.stringify(runesData), 'EX', 36000)
|
||||||
|
|
||||||
|
return response.json(runesData)
|
||||||
|
}
|
||||||
|
}
|
||||||
27
server-v2/app/Serializers/RuneSerializer.ts
Normal file
27
server-v2/app/Serializers/RuneSerializer.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { PerkDTO, PerkStyleDTO } from 'App/Services/Jax/src/Endpoints/CDragonEndpoint'
|
||||||
|
|
||||||
|
class RuneSerializer {
|
||||||
|
public serializePerks(perks: PerkDTO[]) {
|
||||||
|
return perks.reduce((acc, perk) => {
|
||||||
|
acc[perk.id] = {
|
||||||
|
name: perk.name,
|
||||||
|
desc: perk.longDesc,
|
||||||
|
icon: perk.iconPath,
|
||||||
|
}
|
||||||
|
return acc
|
||||||
|
}, {})
|
||||||
|
}
|
||||||
|
|
||||||
|
public serializeStyles(styles: PerkStyleDTO[]) {
|
||||||
|
return styles.reduce((acc, style) => {
|
||||||
|
acc[style.id] = {
|
||||||
|
name: style.name,
|
||||||
|
icon: style.iconPath,
|
||||||
|
slots: style.slots.filter((s) => s.type !== 'kStatMod').map((s) => s.perks),
|
||||||
|
}
|
||||||
|
return acc
|
||||||
|
}, {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new RuneSerializer()
|
||||||
|
|
@ -41,7 +41,7 @@ Route.post('/summoner/overview', 'SummonersController.overview')
|
||||||
// Route.post('/match/details', 'MatchesController.show')
|
// Route.post('/match/details', 'MatchesController.show')
|
||||||
// Route.post('/match/details/ranks', 'MatchesController.showRanks')
|
// Route.post('/match/details/ranks', 'MatchesController.showRanks')
|
||||||
|
|
||||||
// Route.get('/cdragon/runes', 'CDragonController.runes')
|
Route.get('/cdragon/runes', 'CDragonController.runes')
|
||||||
|
|
||||||
Route.get('/test', async () => {
|
Route.get('/test', async () => {
|
||||||
const ids = [
|
const ids = [
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue