Source

OCaml-WebFramework / cgi-bin / env.ml

(*
** env.ml for OCaml-WebFramework
** 
** Copyright (C) 2012 Pierre Surply
** <pierre.surply@gmail.com>
**
** This file is part of OCaml-WebFramework.
**
**    OCaml-WebFramework is free software: you can redistribute it and/or modify
**    it under the terms of the GNU General Public License as published by
**    the Free Software Foundation, either version 3 of the License, or
**    (at your option) any later version.
**
**    OCaml-WebFramework 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 General Public License for more details.
**
**    You should have received a copy of the GNU General Public License
**    along with OCaml-WebFramework.  If not, see <http://www.gnu.org/licenses/>.
** 
** Started on  Sun Sep 16 13:57:47 2012 Pierre Surply
Last update Thu Oct 11 15:34:01 2012 pierre surply
*)

let get_env str =
  try
    Sys.getenv str
  with Not_found -> ""

let url =
  let req_method = get_env "REQUEST_METHOD" in
  match req_method with
    | "GET" | "HEAD" -> get_env "QUERY_STRING"
    | _ -> ""

let url_arg =
  let regexsl = Str.regexp "%2F" in
  let url = Str.global_replace regexsl "/" url in
  let regex = Str.regexp "\\([^/]*\\)/" in
  let rec build_url_arg s start =
    if (try Str.search_forward regex s start
      with Not_found -> -1) > -1 then
      begin
	let start = Str.match_end () in
	let arg = Str.matched_group 1 s in
	arg::build_url_arg s start
      end
    else []
  in
  build_url_arg url 0

let get_url_arg n =
  let rec r_get n = function
    | [] -> ""
    | h::t ->
      if n = 0 then h
      else r_get (n-1) t
  in
  r_get n url_arg
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.