From 4d1b8866ac3e75aa4583240ecca06a849d0edaf3 Mon Sep 17 00:00:00 2001 From: Jim Kroon Date: Mon, 23 Sep 2024 23:28:22 +0200 Subject: [PATCH] Add smartglass api's to server component --- server/package.json | 3 ++- server/src/bin/server.ts | 5 +++++ server/src/controllers/index.ts | 4 +++- server/src/controllers/smartglass.ts | 28 ++++++++++++++++++++++++++++ server/src/controllers/users.ts | 4 ++++ server/src/index.ts | 3 ++- 6 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 server/src/controllers/smartglass.ts diff --git a/server/package.json b/server/package.json index db62c1f6..c17195b0 100644 --- a/server/package.json +++ b/server/package.json @@ -6,6 +6,7 @@ "@greenlight/logger": "workspace:^", "@greenlight/storeapi": "workspace:^", "@greenlight/xcloudapi": "workspace:^", + "@greenlight/webapi": "workspace:^", "fastify": "^5.0.0" }, "license": "MIT", @@ -13,7 +14,7 @@ "scripts": { "start": "yarn build:deps && yarn build && DEBUG='*' node dist/bin/server.js", "build": "tsc --build", - "build:deps": "yarn workspace @greenlight/logger build && yarn workspace @greenlight/authentication build && yarn workspace @greenlight/storeapi build && yarn workspace @greenlight/xcloudapi build", + "build:deps": "yarn workspace @greenlight/logger build && yarn workspace @greenlight/authentication build && yarn workspace @greenlight/storeapi build && yarn workspace @greenlight/xcloudapi build && yarn workspace @greenlight/webapi build", "clean": "rm -rf dist/ && rm -rf *.tsbuildinfo", "test": "yarn build && mocha -r ../node_modules/ts-node/register tests/**.ts tests/**/*.ts" }, diff --git a/server/src/bin/server.ts b/server/src/bin/server.ts index 331e73a2..2a598e73 100644 --- a/server/src/bin/server.ts +++ b/server/src/bin/server.ts @@ -104,6 +104,11 @@ class GreenlightServer { return retItems }) + // Smartglass API + this._apiServer.getServer().get('/smartglass/consoles', async (request, reply) => { + return await this._server.controllers.Smartglass.getConsoles() + }) + } diff --git a/server/src/controllers/index.ts b/server/src/controllers/index.ts index 4b18ef24..5d883efb 100644 --- a/server/src/controllers/index.ts +++ b/server/src/controllers/index.ts @@ -1,7 +1,9 @@ import UsersController from './users' import GamepassController from './gamepass' +import SmartglassController from './smartglass' export default { Users: UsersController, - Gamepass: GamepassController + Gamepass: GamepassController, + Smartglass: SmartglassController, } \ No newline at end of file diff --git a/server/src/controllers/smartglass.ts b/server/src/controllers/smartglass.ts new file mode 100644 index 00000000..ac63d744 --- /dev/null +++ b/server/src/controllers/smartglass.ts @@ -0,0 +1,28 @@ +import Controller from './controller' +import WebApi from '@greenlight/webapi' + +export default class SmartglassController extends Controller { + + private _webApi:WebApi|undefined + + async loadApis() { + if(this._webApi === undefined){ + const token = await this.getServer().controllers.Users.getWebtoken() + + this._webApi = new WebApi({ + token: { + Token: token.data.Token, + NotAfter: token.data.NotAfter + }, + uhs: this.getServer().controllers.Users.getUserHash() + }) + } + } + + async getConsoles() { + await this.loadApis() + + return await this._webApi?.provider.smartglass.getConsolesList() + } + +} \ No newline at end of file diff --git a/server/src/controllers/users.ts b/server/src/controllers/users.ts index 3899a349..9acb904f 100644 --- a/server/src/controllers/users.ts +++ b/server/src/controllers/users.ts @@ -48,4 +48,8 @@ export default class UsersController extends Controller { async getxCloudtoken() { return await this._auth.user.getxCloudToken() } + + getUserHash() { + return this._auth.user.getUserhash() + } } \ No newline at end of file diff --git a/server/src/index.ts b/server/src/index.ts index ac8d49a4..23682e7d 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -6,6 +6,7 @@ export default class Server { public controllers = { Users: new Controllers.Users(this), - Gamepass: new Controllers.Gamepass(this) + Gamepass: new Controllers.Gamepass(this), + Smartglass: new Controllers.Smartglass(this) } } \ No newline at end of file