123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346# 1 "src/lib/eliom_request_info.server.ml"(* Ocsigen
* http://www.ocsigen.org
* Copyright (C) 2010 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.
*)openOcsigen_extensions(*****************************************************************************)letfind_sitedatafun_name=matchEliom_common.get_sp_option()with|Somesp->sp.Eliom_common.sp_sitedata|None->(matchEliom_common.global_register_allowed()with|Someget_current_sitedata->get_current_sitedata()|_->raise(Eliom_common.Eliom_site_information_not_availablefun_name))(*****************************************************************************)letget_http_method()=letsp=Eliom_common.get_sp()inOcsigen_request.methsp.Eliom_common.sp_request.request_infoletget_user_agent()=letsp=Eliom_common.get_sp()inmatchOcsigen_request.headersp.Eliom_common.sp_request.request_infoOcsigen_header.Name.user_agentwith|Someua->ua|None->""letget_full_url_spsp=Uri.to_string(Ocsigen_request.urisp.Eliom_common.sp_request.request_info)letget_full_url()=letsp=Eliom_common.get_sp()inget_full_url_spspletget_remote_ip()=letsp=Eliom_common.get_sp()inOcsigen_request.remote_ipsp.Eliom_common.sp_request.request_infoletget_get_params()=letsp=Eliom_common.get_sp()inOcsigen_request.get_paramssp.Eliom_common.sp_request.request_infoletget_all_current_get_params_spsp=sp.Eliom_common.sp_si.Eliom_common.si_all_get_paramsletget_all_current_get_params()=letsp=Eliom_common.get_sp()inget_all_current_get_params_spspletget_post_params_spsp=Ocsigen_request.post_paramssp.Eliom_common.sp_request.request_infosp.Eliom_common.sp_request.request_config.uploaddirsp.Eliom_common.sp_request.request_config.maxuploadfilesizeletget_post_params()=letsp=Eliom_common.get_sp()inget_post_params_spspletget_files_spsp=Ocsigen_request.filessp.Eliom_common.sp_request.request_infosp.Eliom_common.sp_request.request_config.uploaddirsp.Eliom_common.sp_request.request_config.maxuploadfilesizeletget_all_files()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_all_file_paramsletget_all_post_params()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_all_post_paramsletget_ignored_get_params()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_ignored_get_paramsletget_ignored_post_params()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_ignored_post_paramsletget_original_full_path_string_spsp=Ocsigen_request.original_full_path_stringsp.Eliom_common.sp_request.request_infoletget_original_full_path_string()=letsp=Eliom_common.get_sp()inget_original_full_path_string_spspletget_original_full_path_spsp=Ocsigen_request.original_full_pathsp.Eliom_common.sp_request.request_infoletget_original_full_path()=letsp=Eliom_common.get_sp()inget_original_full_path_spspletget_current_sub_path()=letsp=Eliom_common.get_sp()inOcsigen_request.sub_pathsp.Eliom_common.sp_request.request_infoletget_current_sub_path_string()=letsp=Eliom_common.get_sp()inOcsigen_request.sub_path_stringsp.Eliom_common.sp_request.request_infoletget_header_hostname()=letsp=Eliom_common.get_sp()inOcsigen_request.hostsp.Eliom_common.sp_request.request_infoletget_timeofday_spsp=Ocsigen_request.timeofdaysp.Eliom_common.sp_request.request_infoletget_timeofday()=letsp=Eliom_common.get_sp()inget_timeofday_spspletget_hostname_spsp=Ocsigen_extensions.get_hostnamesp.Eliom_common.sp_requestletget_hostname()=letsp=Eliom_common.get_sp()inget_hostname_spspletget_server_port_spsp=Ocsigen_extensions.get_portsp.Eliom_common.sp_requestletget_server_port()=letsp=Eliom_common.get_sp()inget_server_port_spspletget_ssl_spsp=Ocsigen_request.sslsp.Eliom_common.sp_request.request_infoletget_ssl()=letsp=Eliom_common.get_sp()inget_ssl_spspletget_accept_language_spsp=Ocsigen_header.Accept_language.parse(Ocsigen_request.header_multisp.Eliom_common.sp_request.request_infoOcsigen_header.Name.accept_language)letget_accept_language()=letsp=Eliom_common.get_sp()inget_accept_language_spspletget_other_get_params()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_other_get_paramsletget_nl_get_params()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_nl_get_paramsletget_persistent_nl_get_params()=letsp=Eliom_common.get_sp()inLazy.forcesp.Eliom_common.sp_si.Eliom_common.si_persistent_nl_get_paramsletget_nl_post_params()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_nl_post_paramsletget_other_get_params_spsp=sp.Eliom_common.sp_si.Eliom_common.si_other_get_paramsletget_nl_get_params_spsp=sp.Eliom_common.sp_si.Eliom_common.si_nl_get_paramsletget_persistent_nl_get_params_spsp=Lazy.forcesp.Eliom_common.sp_si.Eliom_common.si_persistent_nl_get_paramsletget_nl_post_params_spsp=sp.Eliom_common.sp_si.Eliom_common.si_nl_post_paramsletget_suffix_spsp=sp.Eliom_common.sp_suffixletget_suffix()=letsp=Eliom_common.get_sp()inget_suffix_spspletget_state_name()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_full_state_nameletget_request_cache_spsp=Ocsigen_request.request_cachesp.Eliom_common.sp_request.request_infoletget_request_cache()=letsp=Eliom_common.get_sp()inget_request_cache_spspletget_link_too_old()=letsp=Eliom_common.get_sp()intryPolytables.get~table:(Ocsigen_request.request_cachesp.Eliom_common.sp_request.request_info)~key:Eliom_common.eliom_link_too_oldwithNot_found->falseletget_expired_service_sessions()=letsp=Eliom_common.get_sp()intryPolytables.get~table:(Ocsigen_request.request_cachesp.Eliom_common.sp_request.request_info)~key:Eliom_common.eliom_service_session_expiredwithNot_found->[],[]letget_cookies?(cookie_level=`Session)()=letsp=Eliom_common.get_sp()inmatchcookie_levelwith|`Session->Ocsigen_request.cookiessp.Eliom_common.sp_request.request_info|`Client_process->sp.Eliom_common.sp_si.Eliom_common.si_tab_cookiesletget_data_cookies()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_data_session_cookiesletget_persistent_cookies()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_persistent_session_cookiesletget_previous_extension_error_code()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_si.Eliom_common.si_previous_extension_errorletget_sisp=sp.Eliom_common.sp_siletget_user_cookies()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_user_cookiesletget_user_tab_cookies()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_user_tab_cookies(****)letget_sp_client_appl_name()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_client_appl_nameletget_sp_client_process_info_spsp=sp.Eliom_common.sp_client_process_infoletget_sp_client_process_info()=letsp=Eliom_common.get_sp()inget_sp_client_process_info_spspletexpecting_process_page()=letsp=Eliom_common.get_sp()inLazy.forcesp.Eliom_common.sp_si.Eliom_common.si_expect_process_dataletget_csp_original_full_path()=letcpi=get_sp_client_process_info()incpi.Eliom_common.cpi_original_full_pathletget_csp_hostname()=letcpi=get_sp_client_process_info()incpi.Eliom_common.cpi_hostnameletget_csp_server_port()=letcpi=get_sp_client_process_info()incpi.Eliom_common.cpi_server_portletget_csp_ssl()=letcpi=get_sp_client_process_info()incpi.Eliom_common.cpi_sslletget_csp_original_full_path_spsp=letcpi=get_sp_client_process_info_spspincpi.Eliom_common.cpi_original_full_pathletget_csp_hostname_spsp=letcpi=get_sp_client_process_info_spspincpi.Eliom_common.cpi_hostnameletget_csp_server_port_spsp=letcpi=get_sp_client_process_info_spspincpi.Eliom_common.cpi_server_portletget_csp_ssl_spsp=letcpi=get_sp_client_process_info_spspincpi.Eliom_common.cpi_ssl(* *)letget_site_dir()=letsitedata=find_sitedata"Eliom_request_info.get_site_dir"inEliom_common.get_site_dirsitedataletget_site_dir_option()=trySome(get_site_dir())with|Eliom_common.Cannot_call_this_function_before_app_is_linked_to_a_site|Eliom_common.Eliom_site_information_not_available_->Noneletget_site_dir_spsp=Eliom_common.get_site_dirsp.Eliom_common.sp_sitedataletin_request_handler()=Lwt.getEliom_common.sp_key<>Noneletget_request()=letsp=Eliom_common.get_sp()insp.Eliom_common.sp_requestletget_request_spsp=sp.Eliom_common.sp_requestletget_ri_spsp=sp.Eliom_common.sp_request.Ocsigen_extensions.request_infoletget_ri()=letsp=Eliom_common.get_sp()inget_ri_spspletget_tmp_filenamefi=fi.Ocsigen_extensions.tmp_filenameletget_filesizefi=fi.Ocsigen_extensions.filesizeletget_original_filenamefi=fi.Ocsigen_extensions.raw_original_filenameletget_file_content_typefi=fi.file_content_typeletget_sitedata()=find_sitedata"get_sitedata"letget_sitedata_sp~sp=sp.Eliom_common.sp_sitedata(***)(*VVV ici ? pour des raisons de typage... *)letset_site_handlersitedatahandler=sitedata.Eliom_common.exn_handler<-handlertyperaw_post_data=((string*string)*(string*string)list)option*Cohttp_lwt.Body.tletraw_post_datasp=letri=get_ri_spspinLwt.return(Ocsigen_request.content_typeri,Ocsigen_request.bodyri)