Skip to content

Instantly share code, notes, and snippets.

@philippkueng
Created April 28, 2014 16:35
Show Gist options
  • Save philippkueng/11377226 to your computer and use it in GitHub Desktop.
Save philippkueng/11377226 to your computer and use it in GitHub Desktop.
Fetch & write a binary file using Clojure and clj-http
(ns the-namespace.core
(:require [clj-http.client :as client]
[clojure.java.io :as io]))
(defn- fetch-photo!
"makes an HTTP request and fetches the binary object"
[url]
(let [req (client/get url {:as :byte-array :throw-exceptions false})]
(if (= (:status req) 200)
(:body req))))
(defn- save-photo!
"downloads and stores the photo on disk"
[photo]
(let [p (fetch-photo! (:url photo))]
(if (not (nil? p))
(with-open [w (io/output-stream (str "photos/" (:id photo) ".jpg"))]
(.write w p)))))
@trickyBytes
Copy link

Great, thanks!

@viebel
Copy link

viebel commented Jul 22, 2022

Thank you. Very useful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment