mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2024-12-20 19:06:06 +01:00
65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
const { CoverDestination } = require('../utils/constants')
|
|
const Logger = require('../Logger')
|
|
|
|
class ServerSettings {
|
|
constructor(settings) {
|
|
this.id = 'server-settings'
|
|
|
|
this.autoTagNew = false
|
|
this.newTagExpireDays = 15
|
|
this.scannerParseSubtitle = false
|
|
this.coverDestination = CoverDestination.METADATA
|
|
this.saveMetadataFile = false
|
|
this.rateLimitLoginRequests = 10
|
|
this.rateLimitLoginWindow = 10 * 60 * 1000 // 10 Minutes
|
|
this.logLevel = Logger.logLevel
|
|
|
|
if (settings) {
|
|
this.construct(settings)
|
|
}
|
|
}
|
|
|
|
construct(settings) {
|
|
this.autoTagNew = settings.autoTagNew
|
|
this.newTagExpireDays = settings.newTagExpireDays
|
|
this.scannerParseSubtitle = settings.scannerParseSubtitle
|
|
this.coverDestination = settings.coverDestination || CoverDestination.METADATA
|
|
this.saveMetadataFile = !!settings.saveMetadataFile
|
|
this.rateLimitLoginRequests = !isNaN(settings.rateLimitLoginRequests) ? Number(settings.rateLimitLoginRequests) : 10
|
|
this.rateLimitLoginWindow = !isNaN(settings.rateLimitLoginWindow) ? Number(settings.rateLimitLoginWindow) : 10 * 60 * 1000 // 10 Minutes
|
|
this.logLevel = settings.logLevel || Logger.logLevel
|
|
|
|
if (this.logLevel !== Logger.logLevel) {
|
|
Logger.setLogLevel(this.logLevel)
|
|
}
|
|
}
|
|
|
|
toJSON() {
|
|
return {
|
|
id: this.id,
|
|
autoTagNew: this.autoTagNew,
|
|
newTagExpireDays: this.newTagExpireDays,
|
|
scannerParseSubtitle: this.scannerParseSubtitle,
|
|
coverDestination: this.coverDestination,
|
|
saveMetadataFile: !!this.saveMetadataFile,
|
|
rateLimitLoginRequests: this.rateLimitLoginRequests,
|
|
rateLimitLoginWindow: this.rateLimitLoginWindow,
|
|
logLevel: this.logLevel
|
|
}
|
|
}
|
|
|
|
update(payload) {
|
|
var hasUpdates = false
|
|
for (const key in payload) {
|
|
if (this[key] !== payload[key]) {
|
|
if (key === 'logLevel') {
|
|
Logger.setLogLevel(payload[key])
|
|
}
|
|
this[key] = payload[key]
|
|
hasUpdates = true
|
|
}
|
|
}
|
|
return hasUpdates
|
|
}
|
|
}
|
|
module.exports = ServerSettings |