123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106(* Ocsigen
* http://www.ocsigen.org
* Module eliommod_sessexpl.ml
* Copyright (C) 2007 Vincent Balat
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, with linking exception;
* either version 2.1 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*)(*****************************************************************************)(*****************************************************************************)(** Internal functions used by Eliom: *)(** Exploration of cookies *)(*****************************************************************************)(*****************************************************************************)openLwt(*****************************************************************************)(* Iterators on cookies *)(** Iterator on service cookies *)letiter_service_cookiesf=letsitedata=Eliom_request_info.find_sitedata"Eliommod_sessexpl.iter_service_cookies"inEliom_common.SessionCookies.fold(funkvthr->thr>>=fun()->f(k,v)>>=Lwt.pause)sitedata.Eliom_common.session_servicesreturn_unit(** Iterator on data cookies *)letiter_data_cookiesf=letsitedata=Eliom_request_info.find_sitedata"Eliommod_sessexpl.iter_data_cookies"inEliom_common.SessionCookies.fold(funkvthr->thr>>=fun()->f(k,v)>>=Lwt.pause)sitedata.Eliom_common.session_datareturn_unit(** Iterator on persistent cookies *)letiter_persistent_cookiesf=Eliommod_cookies.Persistent_cookies.Cookies.iter(funkv->f(k,v)>>=Lwt.pause)(** Iterator on service cookies *)letfold_service_cookiesfbeg=letsitedata=Eliom_request_info.find_sitedata"Eliommod_sessexpl.fold_service_cookies"inEliom_common.SessionCookies.fold(funkvthr->thr>>=funres1->f(k,v)res1>>=funres->Lwt.pause()>>=fun()->returnres)sitedata.Eliom_common.session_services(returnbeg)(** Iterator on data cookies *)letfold_data_cookiesfbeg=letsitedata=Eliom_request_info.find_sitedata"Eliommod_sessexpl.fold_data_cookies"inEliom_common.SessionCookies.fold(funkvthr->thr>>=funres1->f(k,v)res1>>=funres->Lwt.pause()>>=fun()->returnres)sitedata.Eliom_common.session_data(returnbeg)(** Iterator on persistent cookies *)letfold_persistent_cookiesfbeg=Eliommod_cookies.Persistent_cookies.Cookies.fold(funkvbeg->f(k,v)beg>>=funres->Lwt.pause()>>=fun()->returnres)beg(*****************************************************************************)(* Exploration *)letnumber_of_service_cookies()=Eliom_common.SessionCookies.length(Eliom_request_info.get_sitedata()).Eliom_common.session_servicesletnumber_of_data_cookies()=Eliom_common.SessionCookies.length(Eliom_request_info.get_sitedata()).Eliom_common.session_dataletnumber_of_tables()=List.length!Eliommod_datasess.counttableelementsletnumber_of_table_elements()=List.map(funf->f())!Eliommod_datasess.counttableelementsletnumber_of_persistent_cookies()=Eliommod_cookies.Persistent_cookies.Cookies.length()