package spotlib

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file uRL.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open Base

let encode s =
  let len = String.length s in
  let b = Buffer.create & len * 2 in
  for i = 0 to len - 1 do
    match String.unsafe_get s i with
    | 'a'..'z' | 'A'..'Z' | '0'..'9' | '-' | '.' | '_' | '~' as c -> Buffer.add_char b c
    | c -> Buffer.add_string b & Printf.sprintf "%%%02x" (Char.code c)
  done;
  Buffer.contents b

let make_query kvs =
  String.concat "&" 
  & List.map (fun (k,v) ->
      let b = Buffer.create 100 in
      Buffer.add_string b & encode k; 
      Buffer.add_char b '=';
      Buffer.add_string b & encode v;
      Buffer.contents b) kvs