make json files directly accessible
This commit is contained in:
@@ -59,19 +59,19 @@ interface Doc {
|
|||||||
// Define a service using a base URL and expected endpoints
|
// Define a service using a base URL and expected endpoints
|
||||||
export const apiSlice = createApi({
|
export const apiSlice = createApi({
|
||||||
reducerPath: 'gameApi',
|
reducerPath: 'gameApi',
|
||||||
baseQuery: fetchBaseQuery({ baseUrl: window.location.origin + "/api" }),
|
baseQuery: fetchBaseQuery({ baseUrl: window.location.origin + "/data" }),
|
||||||
endpoints: (builder) => ({
|
endpoints: (builder) => ({
|
||||||
getGameInfo: builder.query<GameInfo, {game: string}>({
|
getGameInfo: builder.query<GameInfo, {game: string}>({
|
||||||
query: ({game}) => `${game}/game`,
|
query: ({game}) => `${game}/game.json`,
|
||||||
}),
|
}),
|
||||||
loadLevel: builder.query<LevelInfo, {game: string, world: string, level: number}>({
|
loadLevel: builder.query<LevelInfo, {game: string, world: string, level: number}>({
|
||||||
query: ({game, world, level}) => `${game}/level/${world}/${level}`,
|
query: ({game, world, level}) => `${game}/level__${world}__${level}.json`,
|
||||||
}),
|
}),
|
||||||
loadInventoryOverview: builder.query<InventoryOverview, {game: string}>({
|
loadInventoryOverview: builder.query<InventoryOverview, {game: string}>({
|
||||||
query: ({game}) => `${game}/inventory`,
|
query: ({game}) => `${game}/inventory.json`,
|
||||||
}),
|
}),
|
||||||
loadDoc: builder.query<Doc, {game: string, name: string, type: "lemma"|"tactic"}>({
|
loadDoc: builder.query<Doc, {game: string, name: string, type: "lemma"|"tactic"}>({
|
||||||
query: ({game, type, name}) => `${game}/doc/${type}/${name}`,
|
query: ({game, type, name}) => `${game}/doc__${type}__${name}.json`,
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
|||||||
+7
-26
@@ -34,34 +34,15 @@ var router = express.Router();
|
|||||||
router.get('/import/status/:owner/:repo', importStatus)
|
router.get('/import/status/:owner/:repo', importStatus)
|
||||||
router.get('/import/trigger/:owner/:repo', importTrigger)
|
router.get('/import/trigger/:owner/:repo', importTrigger)
|
||||||
|
|
||||||
function loadJson(req, filename) {
|
|
||||||
const owner = req.params.owner;
|
|
||||||
const repo = req.params.repo
|
|
||||||
return JSON.parse(fs.readFileSync(path.join(getGameDir(owner,repo),".lake","gamedata",filename)))
|
|
||||||
}
|
|
||||||
|
|
||||||
router.get("/api/g/:owner/:repo/game", (req, res) => {
|
|
||||||
res.send(loadJson(req, `game.json`));
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get("/api/g/:owner/:repo/inventory", (req, res) => {
|
|
||||||
res.send(loadJson(req, `inventory.json`));
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get("/api/g/:owner/:repo/level/:world/:level", (req, res) => {
|
|
||||||
const world = req.params.world;
|
|
||||||
const level = req.params.level;
|
|
||||||
res.send(loadJson(req, `level__${world}__${level}.json`));
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get("/api/g/:owner/:repo/doc/:type/:name", (req, res) => {
|
|
||||||
const type = req.params.type;
|
|
||||||
const name = req.params.name;
|
|
||||||
res.send(loadJson(req, `doc__${type}__${name}.json`));
|
|
||||||
});
|
|
||||||
|
|
||||||
const server = app
|
const server = app
|
||||||
.use(express.static(path.join(__dirname, '../client/dist/')))
|
.use(express.static(path.join(__dirname, '../client/dist/')))
|
||||||
|
.use('/data/g/:owner/:repo/*', (req, res, next) => {
|
||||||
|
const owner = req.params.owner;
|
||||||
|
const repo = req.params.repo
|
||||||
|
const filename = req.params[0];
|
||||||
|
req.url = filename;
|
||||||
|
express.static(path.join(getGameDir(owner,repo),".lake","gamedata"))(req, res, next);
|
||||||
|
})
|
||||||
.use('/', router)
|
.use('/', router)
|
||||||
.listen(PORT, () => console.log(`Listening on ${PORT}`));
|
.listen(PORT, () => console.log(`Listening on ${PORT}`));
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ export default defineConfig({
|
|||||||
'/import': {
|
'/import': {
|
||||||
target: 'http://localhost:8080',
|
target: 'http://localhost:8080',
|
||||||
},
|
},
|
||||||
'/api': {
|
'/data': {
|
||||||
target: 'http://localhost:8080',
|
target: 'http://localhost:8080',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user