Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/responders/message-report-responder.js
// @flow | // @flow | ||||
import t, { type TInterface } from 'tcomb'; | import t, { type TInterface } from 'tcomb'; | ||||
import { | import { | ||||
type MessageReportCreationRequest, | type MessageReportCreationRequest, | ||||
type MessageReportCreationResult, | type MessageReportCreationResult, | ||||
} from 'lib/types/message-report-types.js'; | } from 'lib/types/message-report-types.js'; | ||||
import { rawMessageInfoValidator } from 'lib/types/message-types.js'; | import { rawMessageInfoValidator } from 'lib/types/message-types.js'; | ||||
import { tShape } from 'lib/utils/validation-utils.js'; | import { tShape } from 'lib/utils/validation-utils.js'; | ||||
import createMessageReport from '../creators/message-report-creator.js'; | import createMessageReport from '../creators/message-report-creator.js'; | ||||
import type { Viewer } from '../session/viewer.js'; | import type { Viewer } from '../session/viewer.js'; | ||||
import { validateInput } from '../utils/validation-utils.js'; | import { validateInput, validateOutput } from '../utils/validation-utils.js'; | ||||
const messageReportCreationRequestInputValidator = tShape({ | const messageReportCreationRequestInputValidator = tShape({ | ||||
messageID: t.String, | messageID: t.String, | ||||
}); | }); | ||||
export const messageReportCreationResultValidator: TInterface<MessageReportCreationResult> = | export const messageReportCreationResultValidator: TInterface<MessageReportCreationResult> = | ||||
tShape<MessageReportCreationResult>({ messageInfo: rawMessageInfoValidator }); | tShape<MessageReportCreationResult>({ messageInfo: rawMessageInfoValidator }); | ||||
async function messageReportCreationResponder( | async function messageReportCreationResponder( | ||||
viewer: Viewer, | viewer: Viewer, | ||||
input: any, | input: any, | ||||
): Promise<MessageReportCreationResult> { | ): Promise<MessageReportCreationResult> { | ||||
await validateInput( | await validateInput( | ||||
viewer, | viewer, | ||||
messageReportCreationRequestInputValidator, | messageReportCreationRequestInputValidator, | ||||
input, | input, | ||||
); | ); | ||||
const request: MessageReportCreationRequest = input; | const request: MessageReportCreationRequest = input; | ||||
const rawMessageInfos = await createMessageReport(viewer, request); | const rawMessageInfos = await createMessageReport(viewer, request); | ||||
return { messageInfo: rawMessageInfos[0] }; | const result = { messageInfo: rawMessageInfos[0] }; | ||||
return validateOutput(viewer, messageReportCreationResultValidator, result); | |||||
} | } | ||||
export { messageReportCreationResponder }; | export { messageReportCreationResponder }; |