summaryrefslogtreecommitdiff
path: root/compojure-3.2/src/compojure/encodings.clj
diff options
context:
space:
mode:
Diffstat (limited to 'compojure-3.2/src/compojure/encodings.clj')
-rwxr-xr-xcompojure-3.2/src/compojure/encodings.clj64
1 files changed, 64 insertions, 0 deletions
diff --git a/compojure-3.2/src/compojure/encodings.clj b/compojure-3.2/src/compojure/encodings.clj
new file mode 100755
index 0000000..6587d48
--- /dev/null
+++ b/compojure-3.2/src/compojure/encodings.clj
@@ -0,0 +1,64 @@
+;; Copyright (c) James Reeves. All rights reserved.
+;; The use and distribution terms for this software are covered by the Eclipse
+;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which
+;; can be found in the file epl-v10.html at the root of this distribution. By
+;; using this software in any fashion, you are agreeing to be bound by the
+;; terms of this license. You must not remove this notice, or any other, from
+;; this software.
+
+(ns compojure.encodings
+ "Functions for encoding data."
+ (:use compojure.str-utils
+ clojure.contrib.duck-streams)
+ (:import [java.net URLEncoder URLDecoder]
+ [org.apache.commons.codec.binary Base64 Hex]))
+
+(defn urlencode
+ "Encode a urlencoded string using the default encoding."
+ [s]
+ (URLEncoder/encode (str* s) *default-encoding*))
+
+(defn urldecode
+ "Decode a urlencoded string using the default encoding."
+ [s]
+ (URLDecoder/decode s *default-encoding*))
+
+(defn base64-encode-bytes
+ "Encode an array of bytes into a base64 encoded string."
+ [unencoded]
+ (String. (Base64/encodeBase64 unencoded)))
+
+(defn base64-encode
+ [unencoded]
+ "Encode a string using base64."
+ (base64-encode-bytes (.getBytes unencoded)))
+
+(defn base64-decode-bytes
+ "Decode a string using base64 into an array of bytes."
+ [encoded]
+ (Base64/decodeBase64 (.getBytes encoded)))
+
+(defn base64-decode
+ "Decode a string using base64."
+ [encoded]
+ (String. (base64-decode-bytes encoded)))
+
+(defn marshal
+ "Serialize a Clojure object in a base64-encoded string."
+ [data]
+ (base64-encode (pr-str data)))
+
+(defn unmarshal
+ "Unserialize a Clojure object from a base64-encoded string."
+ [marshaled]
+ (read-string (base64-decode marshaled)))
+
+(defn decode-hex
+ "Converts a string of hex into it's corresponding byte array."
+ [s]
+ (Hex/decodeHex (.toCharArray s)))
+
+(defn encode-hex
+ "Converts a byte array into it's corresponding hex String."
+ [array]
+ (String. (Hex/encodeHex array)))