blob: ae33f4ad7565dc09a0cccbab86425931908cdcec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
(declaim (optimize (speed 0) (safety 3) (debug 3)))
(in-package :org-ckons-http)
(defmacro with-cookie-jar (&body body)
`(let ((cookie-jar (make-instance 'drakma:cookie-jar)))
,@body))
(defun drakma-request (url
cookie-jar
&key
(method :get)
(content-type "application/x-www-form-urlencoded")
(parameters nil)
(content nil)
(user-agent :firefox)
(redirect t)
(auto-referer t)
(additional-headers nil)
(connection-timeout 20)
(proxy nil)
(proxy-basic-authorization nil)
(basic-authorization nil))
(drakma:http-request url
:cookie-jar cookie-jar
:method method
:content-type content-type
:parameters parameters
:content content
:user-agent user-agent
:redirect redirect
:auto-referer auto-referer
:connection-timeout connection-timeout
:additional-headers additional-headers
:proxy proxy
:proxy-basic-authorization proxy-basic-authorization
:basic-authorization basic-authorization
:close t))
(defun escape-url (url)
(let ((escaped-url url))
(setf escaped-url (ppcre:regex-replace-all "%" escaped-url "%25"))
(setf escaped-url (ppcre:regex-replace-all "\\?" escaped-url "%3F"))
(setf escaped-url (ppcre:regex-replace-all "#" escaped-url "%23"))
(setf escaped-url (ppcre:regex-replace-all "/" escaped-url "%2F"))
(setf escaped-url (ppcre:regex-replace-all "'" escaped-url "%27"))
(setf escaped-url (ppcre:regex-replace-all " " escaped-url "%20"))
(setf escaped-url (ppcre:regex-replace-all "\\(" escaped-url "%28"))
(setf escaped-url (ppcre:regex-replace-all "\\)" escaped-url "%29"))
(setf escaped-url (ppcre:regex-replace-all ":" escaped-url "%3A"))
escaped-url))
(defun unescape-url (url)
(let ((unescaped-url url))
(setf unescaped-url (ppcre:regex-replace-all "%25" unescaped-url "%"))
(setf unescaped-url (ppcre:regex-replace-all "%3F" unescaped-url "?"))
(setf unescaped-url (ppcre:regex-replace-all "%23" unescaped-url "#"))
(setf unescaped-url (ppcre:regex-replace-all "%2F" unescaped-url "/"))
(setf unescaped-url (ppcre:regex-replace-all "%27" unescaped-url "'"))
(setf unescaped-url (ppcre:regex-replace-all "%20" unescaped-url " "))
(setf unescaped-url (ppcre:regex-replace-all "%28" unescaped-url "("))
(setf unescaped-url (ppcre:regex-replace-all "%29" unescaped-url ")"))
(setf unescaped-url (ppcre:regex-replace-all "%3A" unescaped-url ":"))
unescaped-url))
(defun newlines-to-backslash-n (body)
(cl-ppcre:regex-replace-all #\Newline body "\\\\n"))
|