Skip to content

Instantly share code, notes, and snippets.

/foo.clj Secret

Created March 29, 2013 16:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/f50ea593ac5f13e64a4d to your computer and use it in GitHub Desktop.
Save anonymous/f50ea593ac5f13e64a4d to your computer and use it in GitHub Desktop.
Faulty compression/decompression
(ns foo
(:require [clojure.data.json :as json])
(:import java.io.InputStreamReader
java.io.StringWriter
java.io.ByteArrayInputStream
java.io.ByteArrayOutputStream
java.nio.charset.Charset
[java.util.zip GZIPInputStream GZIPOutputStream]
org.apache.commons.io.output.WriterOutputStream))
(defn decompress-json [charset byte-array]
(with-open [in (java.io.ByteArrayInputStream. byte-array)]
(-> in
(GZIPInputStream.)
(InputStreamReader. (Charset/forName charset))
(json/read :key-fn keyword))))
(defn compress-json [charset js]
(with-open [bytes-out (ByteArrayOutputStream.)
gzip-out (GZIPOutputStream. bytes-out)]
(.write gzip-out (.getBytes (json/write-str js) charset))
(.close gzip-out)
(.toByteArray bytes-out)))
(decompress-json "UTF-8" (compress-json "UTF-8" {:a 1 :b 2}))
=> java.lang.NoClassDefFoundError: clojure/data/json$read_number$fn__1469
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment