Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/responders/keys-responders.js
// @flow | // @flow | ||||
import t, { type TUnion } from 'tcomb'; | import t, { type TUnion } from 'tcomb'; | ||||
import type { GetSessionPublicKeysArgs } from 'lib/types/request-types.js'; | import type { GetSessionPublicKeysArgs } from 'lib/types/request-types.js'; | ||||
import { | import { | ||||
type SessionPublicKeys, | type SessionPublicKeys, | ||||
sessionPublicKeysValidator, | sessionPublicKeysValidator, | ||||
} from 'lib/types/session-types.js'; | } from 'lib/types/session-types.js'; | ||||
import { tShape, tNull } from 'lib/utils/validation-utils.js'; | import { tShape, tNull } from 'lib/utils/validation-utils.js'; | ||||
import { fetchSessionPublicKeys } from '../fetchers/key-fetchers.js'; | import { fetchSessionPublicKeys } from '../fetchers/key-fetchers.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 getSessionPublicKeysInputValidator = tShape({ | const getSessionPublicKeysInputValidator = tShape({ | ||||
session: t.String, | session: t.String, | ||||
}); | }); | ||||
type GetSessionPublicKeysResponse = SessionPublicKeys | null; | type GetSessionPublicKeysResponse = SessionPublicKeys | null; | ||||
export const getSessionPublicKeysResponseValidator: TUnion<GetSessionPublicKeysResponse> = | export const getSessionPublicKeysResponseValidator: TUnion<GetSessionPublicKeysResponse> = | ||||
t.union([sessionPublicKeysValidator, tNull]); | t.union([sessionPublicKeysValidator, tNull]); | ||||
async function getSessionPublicKeysResponder( | async function getSessionPublicKeysResponder( | ||||
viewer: Viewer, | viewer: Viewer, | ||||
input: any, | input: any, | ||||
): Promise<GetSessionPublicKeysResponse> { | ): Promise<GetSessionPublicKeysResponse> { | ||||
if (!viewer.loggedIn) { | if (!viewer.loggedIn) { | ||||
return null; | return null; | ||||
} | } | ||||
const request: GetSessionPublicKeysArgs = input; | const request: GetSessionPublicKeysArgs = input; | ||||
await validateInput(viewer, getSessionPublicKeysInputValidator, request); | await validateInput(viewer, getSessionPublicKeysInputValidator, request); | ||||
return await fetchSessionPublicKeys(request.session); | const response = await fetchSessionPublicKeys(request.session); | ||||
return validateOutput( | |||||
viewer, | |||||
getSessionPublicKeysResponseValidator, | |||||
response, | |||||
); | |||||
} | } | ||||
export { getSessionPublicKeysResponder }; | export { getSessionPublicKeysResponder }; |