feat(api): add cdragon/runes endpoint

This commit is contained in:
Valentin Kaelin 2020-12-17 22:46:53 +01:00
parent 3dcee325a4
commit 01f7437461
3 changed files with 51 additions and 0 deletions

View 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)
}
}

View 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()

View file

@ -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')