metrics token

This commit is contained in:
boufni95 2023-12-21 20:51:45 +01:00
parent f65b24247f
commit a3bd0211f1
7 changed files with 3445 additions and 3405 deletions

View file

@ -16,6 +16,7 @@ export type ServerOptions = {
GuestAuthGuard: (authorizationHeader?: string) => Promise<Types.GuestContext>
UserAuthGuard: (authorizationHeader?: string) => Promise<Types.UserContext>
AdminAuthGuard: (authorizationHeader?: string) => Promise<Types.AdminContext>
MetricsAuthGuard: (authorizationHeader?: string) => Promise<Types.MetricsContext>
AppAuthGuard: (authorizationHeader?: string) => Promise<Types.AppContext>
}
declare module 'express-serve-static-core' { interface Request { startTime?: bigint, bodySize?: number } }
@ -105,7 +106,7 @@ export default (methods: Types.ServerMethods, opts: ServerOptions) => {
let authCtx: Types.AuthContext = {}
try {
if (!methods.GetUsageMetrics) throw new Error('method: GetUsageMetrics is not implemented')
const authContext = await opts.AdminAuthGuard(req.headers['authorization'])
const authContext = await opts.MetricsAuthGuard(req.headers['authorization'])
authCtx = authContext
stats.guard = process.hrtime.bigint()
stats.validate = stats.guard
@ -124,7 +125,7 @@ export default (methods: Types.ServerMethods, opts: ServerOptions) => {
let authCtx: Types.AuthContext = {}
try {
if (!methods.GetAppsMetrics) throw new Error('method: GetAppsMetrics is not implemented')
const authContext = await opts.AdminAuthGuard(req.headers['authorization'])
const authContext = await opts.MetricsAuthGuard(req.headers['authorization'])
authCtx = authContext
stats.guard = process.hrtime.bigint()
const request = req.body
@ -146,7 +147,7 @@ export default (methods: Types.ServerMethods, opts: ServerOptions) => {
let authCtx: Types.AuthContext = {}
try {
if (!methods.GetLndMetrics) throw new Error('method: GetLndMetrics is not implemented')
const authContext = await opts.AdminAuthGuard(req.headers['authorization'])
const authContext = await opts.MetricsAuthGuard(req.headers['authorization'])
authCtx = authContext
stats.guard = process.hrtime.bigint()
const request = req.body

View file

@ -8,6 +8,7 @@ export type ClientParams = {
retrieveGuestAuth: () => Promise<string | null>
retrieveUserAuth: () => Promise<string | null>
retrieveAdminAuth: () => Promise<string | null>
retrieveMetricsAuth: () => Promise<string | null>
retrieveAppAuth: () => Promise<string | null>
encryptCallback: (plain: any) => Promise<any>
decryptCallback: (encrypted: any) => Promise<any>
@ -58,8 +59,8 @@ export default (params: ClientParams) => ({
return { status: 'ERROR', reason: 'invalid response' }
},
GetUsageMetrics: async (): Promise<ResultError | ({ status: 'OK' }& Types.UsageMetrics)> => {
const auth = await params.retrieveAdminAuth()
if (auth === null) throw new Error('retrieveAdminAuth() returned null')
const auth = await params.retrieveMetricsAuth()
if (auth === null) throw new Error('retrieveMetricsAuth() returned null')
let finalRoute = '/api/admin/metrics/usage'
const { data } = await axios.post(params.baseUrl + finalRoute, {}, { headers: { 'authorization': auth } })
if (data.status === 'ERROR' && typeof data.reason === 'string') return data
@ -72,8 +73,8 @@ export default (params: ClientParams) => ({
return { status: 'ERROR', reason: 'invalid response' }
},
GetAppsMetrics: async (request: Types.AppsMetricsRequest): Promise<ResultError | ({ status: 'OK' }& Types.AppsMetrics)> => {
const auth = await params.retrieveAdminAuth()
if (auth === null) throw new Error('retrieveAdminAuth() returned null')
const auth = await params.retrieveMetricsAuth()
if (auth === null) throw new Error('retrieveMetricsAuth() returned null')
let finalRoute = '/api/admin/metrics/apps'
const { data } = await axios.post(params.baseUrl + finalRoute, request, { headers: { 'authorization': auth } })
if (data.status === 'ERROR' && typeof data.reason === 'string') return data
@ -86,8 +87,8 @@ export default (params: ClientParams) => ({
return { status: 'ERROR', reason: 'invalid response' }
},
GetLndMetrics: async (request: Types.LndMetricsRequest): Promise<ResultError | ({ status: 'OK' }& Types.LndMetrics)> => {
const auth = await params.retrieveAdminAuth()
if (auth === null) throw new Error('retrieveAdminAuth() returned null')
const auth = await params.retrieveMetricsAuth()
if (auth === null) throw new Error('retrieveMetricsAuth() returned null')
let finalRoute = '/api/admin/metrics/lnd'
const { data } = await axios.post(params.baseUrl + finalRoute, request, { headers: { 'authorization': auth } })
if (data.status === 'ERROR' && typeof data.reason === 'string') return data

File diff suppressed because it is too large Load diff