123456789101112131415161718192021222324252627282930313233343536373839404142moduleHttp=Sihl_httpmoduleMessage=Sihl_messageopenLwt.Syntaxletlog_src=Logs.Src.create"sihl.middleware.message"moduleLogs=(valLogs.src_loglog_src:Logs.LOG)letkey:Message.tOpium_kernel.Hmap.key=Opium_kernel.Hmap.Key.create("message",Message.sexp_of_t);;letfindreq=Opium_kernel.Hmap.find_exnkey(Opium_kernel.Request.envreq)letfind_optreq=Opium_kernel.Hmap.findkey(Opium_kernel.Request.envreq)letsetmessagereq=letenv=Opium_kernel.Request.envreqinletenv=Opium_kernel.Hmap.addkeymessageenvin{reqwithenv};;moduleMake(MessageService:Message.Sig.SERVICE)=structletm()=letfilterhandlerreq=letsession=matchMiddleware_session.find_optreqwith|Somesession->session|None->Logs.info(funm->m"Did you forget to apply the session middleware?");Logs.err(funm->m"No session found");failwith"No session found"inlet*result=MessageService.rotatesessioninmatchresultwith|Somemessage->letreq=setmessagereqinhandlerreq|None->handlerreqinOpium_kernel.Rock.Middleware.create~name:"message"~filter;;end