diff options
Diffstat (limited to 'compojure-3.2/src/compojure/encodings.clj')
| -rwxr-xr-x | compojure-3.2/src/compojure/encodings.clj | 64 |
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))) |
