@@ -3,6 +3,7 @@ import express, { Express, NextFunction, Request, Response } from "express"
33import log4js from "log4js"
44import config from "../data/config.json"
55import client from "../main"
6+ import { parseDuration } from "./Utils"
67
78const Logger = log4js . getLogger ( "WebManager" )
89
@@ -19,46 +20,56 @@ export default class WebManager {
1920 this . app . use ( bodyParser . json ( ) )
2021 this . app . use ( ( req : Req < unknown > , res : Res , next : NextFunction ) => {
2122 if ( req . headers . authorization === config . web ) {
22- Logger . info ( "Wrong authorization used!" )
2323 next ( )
2424 return
2525 }
26+ Logger . error ( "Wrong authorization used!" )
2627
2728 res . sendStatus ( 403 )
2829 } )
2930
3031 this . app . get ( "/reminders/:user/get" , this . getReminder )
3132 this . app . post ( "/reminders/:user/create" , this . addReminder )
3233 this . app . post ( "/reminders/:user/delete" , this . deleteReminder )
34+ this . app . post ( "/testmessage/:user" , this . testMessage )
3335
3436 this . app . listen ( config . webPort )
3537 }
3638
3739 getReminder ( req : Req < { user : string } > , res : Res ) : void {
40+ const userid = req . params . user
41+
42+ Logger . info ( `Getting reminders for ${ userid } from remote` )
3843 res . send ( client . reminderManager . getReminders ( req . params . user ) )
3944 }
4045
41- addReminder ( req : Req < { user : string } , { subject ?: string , duration ?: number , timestamp ?: number } > , res : Res ) : void {
46+ addReminder ( req : Req < { user : string } , { name ?: string , duration ?: string } > , res : Res ) : void {
4247 const { reminderManager } = client
4348 const userid = req . params . user
44- const subject = req . body . subject
45- const duration = req . body . duration
46- const timestamp = req . body . timestamp
49+ const name = req . body . name
50+ const time = req . body . duration
4751
48- if ( subject == undefined || duration == undefined || timestamp == undefined ) {
52+ if ( name == undefined || time == undefined || name . length > 128 ) {
4953 res . sendStatus ( 400 )
5054 return
5155 }
5256
53- Logger . info ( `Adding reminder for ${ userid } from remote` )
5457 const reminders = reminderManager . getReminders ( userid )
58+ const duration = parseDuration ( time )
5559
5660 let id = 1
5761 while ( reminders . some ( r => r . id == id ) || reminderManager . getReminderById ( userid , id ) )
5862 id ++
5963
60- reminderManager . addReminder ( id , subject , userid , duration , timestamp )
61- res . sendStatus ( 200 )
64+ if ( id > 25 || duration <= 0 ) {
65+ res . sendStatus ( 400 )
66+ return
67+ }
68+
69+ Logger . info ( `Adding reminder for ${ userid } from remote` )
70+
71+ const r = reminderManager . addReminder ( id , name , userid , duration , Date . now ( ) + duration )
72+ res . send ( r )
6273 }
6374
6475 deleteReminder ( req : Req < { user : string } , { id ?: number , timestamp ?: number } > , res : Res ) : void {
@@ -79,9 +90,17 @@ export default class WebManager {
7990 res . sendStatus ( 404 )
8091 return
8192 }
93+
8294 Logger . info ( `Deleting reminder for ${ userid } from remote` )
8395
8496 reminderManager . deleteReminder ( userid , id , timestamp )
8597 res . sendStatus ( 200 )
8698 }
99+
100+ async testMessage ( req : Req < { user : string } > , res : Res ) : Promise < void > {
101+ const userid = req . params . user
102+ const user = await client . users . fetch ( userid )
103+ await user . send ( "This is a test" )
104+ res . sendStatus ( 200 )
105+ }
87106}
0 commit comments