namespace _zeitbild.api { /** */ export function register_calendar_get( rest_subject : lib_plankton.rest_caldav.type_rest ) : void { register< null, { name : string; access : { default_level : string; attributed : Array< { user_id : int; level : string; } > }; resource_id : int; } >( rest_subject, lib_plankton.http.enum_method.get, "/calendar/:calendar_id", { "description": "liest die Daten eines Kalenders aus", "output_schema": () => ({ "nullable": true, // TODO }), "restriction": restriction_logged_in, "execution": async (stuff) => { const session : {key : string; value : lib_plankton.session.type_session;} = await session_from_stuff(stuff); const user_id : _zeitbild.type_user_id = await _zeitbild.service.user.identify(session.value.name); const calendar_id : _zeitbild.type_calendar_id = parseInt(stuff.path_parameters["calendar_id"]); const calendar_object : _zeitbild.type_calendar_object = await _zeitbild.service.calendar.get( calendar_id, user_id ); const result = { "name": calendar_object.name, "access": { "public": calendar_object.access.public, "default_level": _zeitbild.api.access_level_encode(calendar_object.access.default_level), "attributed": lib_plankton.call.convey( calendar_object.access.attributed, [ lib_plankton.map.dump, (pairs : Array<{key : _zeitbild.type_user_id; value : _zeitbild.enum_access_level;}>) => ( pairs .map( (pair : {key : _zeitbild.type_user_id; value : _zeitbild.enum_access_level;}) => ({ "user_id": pair.key, "level": _zeitbild.api.access_level_encode(pair.value) }) ) ) ] ), }, "resource_id": calendar_object.resource_id, }; return Promise.resolve( { "status_code": 200, "data": result, } ); } } ); } }