comty/packages/server/services/files/file.service.js
2024-10-25 09:39:35 +00:00

60 lines
1.7 KiB
JavaScript
Executable File

import { Server } from "linebridge"
import B2 from "backblaze-b2"
import hePkg from "hyper-express/package.json"
import DbManager from "@shared-classes/DbManager"
import RedisClient from "@shared-classes/RedisClient"
import StorageClient from "@shared-classes/StorageClient"
import CacheService from "@shared-classes/CacheService"
import SharedMiddlewares from "@shared-middlewares"
import LimitsClass from "@shared-classes/Limits"
class API extends Server {
static refName = "files"
static useEngine = "hyper-express"
static routesPath = `${__dirname}/routes`
static listen_port = process.env.HTTP_LISTEN_PORT ?? 3002
middlewares = {
...SharedMiddlewares
}
contexts = {
db: new DbManager(),
cache: new CacheService(),
redis: RedisClient(),
storage: StorageClient(),
b2Storage: null,
limits: {},
}
async onInitialize() {
console.log(`Using HyperExpress v${hePkg.version}`)
global.storage = this.contexts.storage
if (process.env.B2_KEY_ID && process.env.B2_APP_KEY) {
this.contexts.b2Storage = new B2({
applicationKeyId: process.env.B2_KEY_ID,
applicationKey: process.env.B2_APP_KEY,
})
global.b2Storage = this.contexts.b2Storage
await this.contexts.b2Storage.authorize()
} else {
console.warn("B2 storage not configured on environment, skipping...")
}
await this.contexts.db.initialize()
await this.contexts.redis.initialize()
await this.contexts.storage.initialize()
this.contexts.limits = await LimitsClass.get()
}
}
Boot(API)