namespace _espe.api { /** */ export async function session_from_stuff( stuff : {headers : Record;} ) : Promise<{key : string; value : lib_plankton.session.type_session}> { const key : string = (stuff.headers["X-Session-Key"] || stuff.headers["X-Session-Key".toLowerCase()]); const value : lib_plankton.session.type_session = await lib_plankton.session.get(key); return {"key": key, "value": value}; } /** */ /* export function restriction_disjunction( left : lib_plankton.rest.type_restriction, right : lib_plankton.rest.type_restriction ) : lib_plankton.rest.type_restriction { return ( (stuff) => Promise.any( [ left(stuff), right(stuff), ] ) ); } */ /** */ export const restriction_none : lib_plankton.rest.type_restriction = ( (stuff) => Promise.resolve(true) ); /** */ export const restriction_logged_in : lib_plankton.rest.type_restriction = ( (stuff) => ( session_from_stuff(stuff) .then(() => Promise.resolve(true)) .catch(() => Promise.resolve(false)) ) ); /** */ export function restriction_verification( extract_data : ((stuff) => any), extract_verification : ((stuff) => string) ) : lib_plankton.rest.type_restriction { return ( (stuff) => _espe.helpers.verification_check( extract_data(stuff), extract_verification(stuff) ) ); } }