Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/responders/entry-responders.js
Show First 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | const entryQueryInputValidator: TInterface<EntryQueryInput> = tShape({ | ||||
filters: t.maybe( | filters: t.maybe( | ||||
t.list( | t.list( | ||||
t.union([ | t.union([ | ||||
tShape({ | tShape({ | ||||
type: tString(calendarThreadFilterTypes.NOT_DELETED), | type: tString(calendarThreadFilterTypes.NOT_DELETED), | ||||
}), | }), | ||||
tShape({ | tShape({ | ||||
type: tString(calendarThreadFilterTypes.THREAD_LIST), | type: tString(calendarThreadFilterTypes.THREAD_LIST), | ||||
threadIDs: t.list(t.String), | threadIDs: t.list(tID), | ||||
}), | }), | ||||
]), | ]), | ||||
), | ), | ||||
), | ), | ||||
}); | }); | ||||
const newEntryQueryInputValidator: TInterface<CalendarQuery> = tShape({ | const newEntryQueryInputValidator: TInterface<CalendarQuery> = tShape({ | ||||
startDate: tDate, | startDate: tDate, | ||||
endDate: tDate, | endDate: tDate, | ||||
filters: t.list( | filters: t.list( | ||||
t.union([ | t.union([ | ||||
tShape({ | tShape({ | ||||
type: tString(calendarThreadFilterTypes.NOT_DELETED), | type: tString(calendarThreadFilterTypes.NOT_DELETED), | ||||
}), | }), | ||||
tShape({ | tShape({ | ||||
type: tString(calendarThreadFilterTypes.THREAD_LIST), | type: tString(calendarThreadFilterTypes.THREAD_LIST), | ||||
threadIDs: t.list(t.String), | threadIDs: t.list(tID), | ||||
}), | }), | ||||
]), | ]), | ||||
), | ), | ||||
}); | }); | ||||
function normalizeCalendarQuery(input: any): CalendarQuery { | function normalizeCalendarQuery(input: any): CalendarQuery { | ||||
if (input.filters) { | if (input.filters) { | ||||
return { | return { | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | ): Promise<FetchEntryInfosResponse> { | ||||
const response = await fetchEntryInfos(viewer, [request]); | const response = await fetchEntryInfos(viewer, [request]); | ||||
return validateOutput(viewer, fetchEntryInfosResponseValidator, { | return validateOutput(viewer, fetchEntryInfosResponseValidator, { | ||||
...response, | ...response, | ||||
userInfos: {}, | userInfos: {}, | ||||
}); | }); | ||||
} | } | ||||
const entryRevisionHistoryFetchInputValidator = tShape({ | const entryRevisionHistoryFetchInputValidator = tShape({ | ||||
id: t.String, | id: tID, | ||||
}); | }); | ||||
export const fetchEntryRevisionInfosResultValidator: TInterface<FetchEntryRevisionInfosResult> = | export const fetchEntryRevisionInfosResultValidator: TInterface<FetchEntryRevisionInfosResult> = | ||||
tShape<FetchEntryRevisionInfosResult>({ | tShape<FetchEntryRevisionInfosResult>({ | ||||
result: t.list(historyRevisionInfoValidator), | result: t.list(historyRevisionInfoValidator), | ||||
}); | }); | ||||
async function entryRevisionFetchResponder( | async function entryRevisionFetchResponder( | ||||
Show All 11 Lines | ): Promise<FetchEntryRevisionInfosResult> { | ||||
); | ); | ||||
} | } | ||||
const createEntryRequestInputValidator = tShape({ | const createEntryRequestInputValidator = tShape({ | ||||
text: t.String, | text: t.String, | ||||
sessionID: t.maybe(t.String), | sessionID: t.maybe(t.String), | ||||
timestamp: t.Number, | timestamp: t.Number, | ||||
date: tDate, | date: tDate, | ||||
threadID: t.String, | threadID: tID, | ||||
localID: t.maybe(t.String), | localID: t.maybe(t.String), | ||||
calendarQuery: t.maybe(newEntryQueryInputValidator), | calendarQuery: t.maybe(newEntryQueryInputValidator), | ||||
}); | }); | ||||
export const saveEntryResponseValidator: TInterface<SaveEntryResponse> = | export const saveEntryResponseValidator: TInterface<SaveEntryResponse> = | ||||
tShape<SaveEntryResponse>({ | tShape<SaveEntryResponse>({ | ||||
entryID: tID, | entryID: tID, | ||||
newMessageInfos: t.list(rawMessageInfoValidator), | newMessageInfos: t.list(rawMessageInfoValidator), | ||||
updatesResult: serverCreateUpdatesResponseValidator, | updatesResult: serverCreateUpdatesResponseValidator, | ||||
}); | }); | ||||
async function entryCreationResponder( | async function entryCreationResponder( | ||||
viewer: Viewer, | viewer: Viewer, | ||||
input: any, | input: any, | ||||
): Promise<SaveEntryResponse> { | ): Promise<SaveEntryResponse> { | ||||
const request: CreateEntryRequest = input; | const request: CreateEntryRequest = input; | ||||
await validateInput(viewer, createEntryRequestInputValidator, request); | await validateInput(viewer, createEntryRequestInputValidator, request); | ||||
const response = await createEntry(viewer, request); | const response = await createEntry(viewer, request); | ||||
return validateOutput(viewer, saveEntryResponseValidator, response); | return validateOutput(viewer, saveEntryResponseValidator, response); | ||||
} | } | ||||
const saveEntryRequestInputValidator = tShape({ | const saveEntryRequestInputValidator = tShape({ | ||||
entryID: t.String, | entryID: tID, | ||||
text: t.String, | text: t.String, | ||||
prevText: t.String, | prevText: t.String, | ||||
sessionID: t.maybe(t.String), | sessionID: t.maybe(t.String), | ||||
timestamp: t.Number, | timestamp: t.Number, | ||||
calendarQuery: t.maybe(newEntryQueryInputValidator), | calendarQuery: t.maybe(newEntryQueryInputValidator), | ||||
}); | }); | ||||
async function entryUpdateResponder( | async function entryUpdateResponder( | ||||
viewer: Viewer, | viewer: Viewer, | ||||
input: any, | input: any, | ||||
): Promise<SaveEntryResponse> { | ): Promise<SaveEntryResponse> { | ||||
const request: SaveEntryRequest = input; | const request: SaveEntryRequest = input; | ||||
await validateInput(viewer, saveEntryRequestInputValidator, request); | await validateInput(viewer, saveEntryRequestInputValidator, request); | ||||
const response = await updateEntry(viewer, request); | const response = await updateEntry(viewer, request); | ||||
return validateOutput(viewer, saveEntryResponseValidator, response); | return validateOutput(viewer, saveEntryResponseValidator, response); | ||||
} | } | ||||
const deleteEntryRequestInputValidator = tShape({ | const deleteEntryRequestInputValidator = tShape({ | ||||
entryID: t.String, | entryID: tID, | ||||
prevText: t.String, | prevText: t.String, | ||||
sessionID: t.maybe(t.String), | sessionID: t.maybe(t.String), | ||||
timestamp: t.Number, | timestamp: t.Number, | ||||
calendarQuery: t.maybe(newEntryQueryInputValidator), | calendarQuery: t.maybe(newEntryQueryInputValidator), | ||||
}); | }); | ||||
export const deleteEntryResponseValidator: TInterface<DeleteEntryResponse> = | export const deleteEntryResponseValidator: TInterface<DeleteEntryResponse> = | ||||
tShape<DeleteEntryResponse>({ | tShape<DeleteEntryResponse>({ | ||||
newMessageInfos: t.list(rawMessageInfoValidator), | newMessageInfos: t.list(rawMessageInfoValidator), | ||||
threadID: tID, | threadID: tID, | ||||
updatesResult: serverCreateUpdatesResponseValidator, | updatesResult: serverCreateUpdatesResponseValidator, | ||||
}); | }); | ||||
async function entryDeletionResponder( | async function entryDeletionResponder( | ||||
viewer: Viewer, | viewer: Viewer, | ||||
input: any, | input: any, | ||||
): Promise<DeleteEntryResponse> { | ): Promise<DeleteEntryResponse> { | ||||
const request: DeleteEntryRequest = input; | const request: DeleteEntryRequest = input; | ||||
await validateInput(viewer, deleteEntryRequestInputValidator, request); | await validateInput(viewer, deleteEntryRequestInputValidator, request); | ||||
const response = await deleteEntry(viewer, request); | const response = await deleteEntry(viewer, request); | ||||
return validateOutput(viewer, deleteEntryResponseValidator, response); | return validateOutput(viewer, deleteEntryResponseValidator, response); | ||||
} | } | ||||
const restoreEntryRequestInputValidator = tShape({ | const restoreEntryRequestInputValidator = tShape({ | ||||
entryID: t.String, | entryID: tID, | ||||
sessionID: t.maybe(t.String), | sessionID: t.maybe(t.String), | ||||
timestamp: t.Number, | timestamp: t.Number, | ||||
calendarQuery: t.maybe(newEntryQueryInputValidator), | calendarQuery: t.maybe(newEntryQueryInputValidator), | ||||
}); | }); | ||||
export const restoreEntryResponseValidator: TInterface<RestoreEntryResponse> = | export const restoreEntryResponseValidator: TInterface<RestoreEntryResponse> = | ||||
tShape<RestoreEntryResponse>({ | tShape<RestoreEntryResponse>({ | ||||
newMessageInfos: t.list(rawMessageInfoValidator), | newMessageInfos: t.list(rawMessageInfoValidator), | ||||
▲ Show 20 Lines • Show All 61 Lines • Show Last 20 Lines |