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