mirror of
https://github.com/vkaelin/LeagueStats.git
synced 2026-03-25 12:57:28 +00:00
feat(api): add cdragon/runes endpoint
This commit is contained in:
parent
3dcee325a4
commit
01f7437461
3 changed files with 51 additions and 0 deletions
27
server/app/Controllers/Http/CDragonController.ts
Normal file
27
server/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 Jax from 'App/Services/Jax'
|
||||||
|
import RuneTransformer from 'App/Transformers/RuneTransformer'
|
||||||
|
|
||||||
|
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: RuneTransformer.transformPerks(perks),
|
||||||
|
perkstyles: RuneTransformer.transformStyles(perkstyles.styles),
|
||||||
|
}
|
||||||
|
|
||||||
|
await Redis.set(cacheUrl, JSON.stringify(runesData), 'EX', 36000)
|
||||||
|
|
||||||
|
return response.json(runesData)
|
||||||
|
}
|
||||||
|
}
|
||||||
22
server/app/Transformers/RuneTransformer.ts
Normal file
22
server/app/Transformers/RuneTransformer.ts
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
import { PerkDTO, PerkStyleDTO } from 'App/Services/Jax/src/Endpoints/CDragonEndpoint'
|
||||||
|
|
||||||
|
class RuneTransformer {
|
||||||
|
public transformPerks (perks: PerkDTO[]) {
|
||||||
|
return perks.map((perk) => ({
|
||||||
|
id: perk.id,
|
||||||
|
name: perk.name,
|
||||||
|
desc: perk.longDesc,
|
||||||
|
icon: perk.iconPath,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
public transformStyles (styles: PerkStyleDTO[]) {
|
||||||
|
return styles.map(style => ({
|
||||||
|
id: style.id,
|
||||||
|
name: style.name,
|
||||||
|
icon: style.iconPath,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new RuneTransformer()
|
||||||
|
|
@ -22,6 +22,8 @@ import Route from '@ioc:Adonis/Core/Route'
|
||||||
|
|
||||||
Route.get('/', async () => ({ hi: 'Hello World from LeagueStats API', uptime: process.uptime() }))
|
Route.get('/', async () => ({ hi: 'Hello World from LeagueStats API', uptime: process.uptime() }))
|
||||||
|
|
||||||
|
Route.get('/cdragon/runes', 'CDragonController.runes')
|
||||||
|
|
||||||
Route.post('/summoner/basic', 'SummonersController.basic')
|
Route.post('/summoner/basic', 'SummonersController.basic')
|
||||||
Route.post('/summoner/overview', 'SummonersController.overview')
|
Route.post('/summoner/overview', 'SummonersController.overview')
|
||||||
Route.post('/summoner/champions', 'SummonersController.champions')
|
Route.post('/summoner/champions', 'SummonersController.champions')
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue