Skip to content

Commit ec84127

Browse files
authored
fix build (#764)
The build fails due to downloading an image from wikipedia without setting a user agent. Solve this by switching to babashka.http-client which sets a user agent.
1 parent b0fd445 commit ec84127

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

deps.edn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
:deps {org.clojure/clojure {:mvn/version "1.11.1"}
33
org.clojure/java.classpath {:mvn/version "1.0.0"}
44
babashka/fs {:mvn/version "0.5.22"}
5+
org.babashka/http-client {:mvn/version "0.4.23"}
56
borkdude/edamame {:mvn/version "1.4.28"}
67
weavejester/dependency {:mvn/version "0.2.1"}
78
com.nextjournal/beholder {:mvn/version "1.0.3"}

notebooks/viewers/table.clj

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
;; # Tables 🔢
22
(ns ^:nextjournal.clerk/no-cache viewers.table
3-
(:require [clojure.data.csv :as csv]
3+
(:require [babashka.http-client :as http]
4+
[clojure.data.csv :as csv]
45
[clojure.java.io :as io]
56
[clojure.string :as str]
7+
[honey.sql :as sql]
68
[next.jdbc :as jdbc]
79
[nextjournal.clerk :as clerk]
8-
[nextjournal.clerk.viewer :as v]
9-
[honey.sql :as sql]))
10+
[nextjournal.clerk.viewer :as v]))
1011

1112
;; ## Empty table
1213

@@ -60,8 +61,11 @@
6061
(-> (mapv (fn [char] (clojure.string/join "" (repeat 20 char)))
6162
(map char (range 97 127))))]})
6263

64+
(defn read-image [url]
65+
(javax.imageio.ImageIO/read (:body (http/get url {:as :stream}))))
66+
6367
;; ## Table with images
64-
(clerk/table [[1 2] [3 (javax.imageio.ImageIO/read (java.net.URL. "https://nextjournal.com/data/QmeyvaR3Q5XSwe14ZS6D5WBQGg1zaBaeG3SeyyuUURE2pq?filename=thermos.gif&content-type=image/gif"))]])
68+
(clerk/table [[1 2] [3 (read-image "https://nextjournal.com/data/QmeyvaR3Q5XSwe14ZS6D5WBQGg1zaBaeG3SeyyuUURE2pq?filename=thermos.gif&content-type=image/gif")]])
6569

6670
;; ## Table within tables
6771
(clerk/table [[1 2] [3 (clerk/table [[1 2] [3 4]])]])
@@ -76,8 +80,8 @@
7680
(clerk/with-viewers (clerk/add-viewers [(assoc v/image-viewer :render-fn '(fn [blob] [:img {:width "30px" :height "30px" :src (nextjournal.clerk.viewer/url-for blob)}]))])
7781
(clerk/table
7882
{:rows (map (juxt identity dec) (range 1 100))
79-
:head [(javax.imageio.ImageIO/read (java.net.URL. "https://upload.wikimedia.org/wikipedia/commons/1/17/Plus_img_364976.png"))
80-
(javax.imageio.ImageIO/read (java.net.URL. "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/OCR-A_char_Hyphen-Minus.svg/543px-OCR-A_char_Hyphen-Minus.svg.png"))]}))
83+
:head [(read-image "https://upload.wikimedia.org/wikipedia/commons/1/17/Plus_img_364976.png")
84+
(read-image "https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/OCR-A_char_Hyphen-Minus.svg/543px-OCR-A_char_Hyphen-Minus.svg.png")]}))
8185

8286
;; ## Custom Table Viewers
8387
;; override single table components

src/nextjournal/clerk/builder.clj

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns nextjournal.clerk.builder
22
"Clerk's Static App Builder."
33
(:require [babashka.fs :as fs]
4+
[babashka.http-client :as http]
45
[babashka.process :refer [sh]]
56
[clojure.java.browse :as browse]
67
[clojure.java.io :as io]
@@ -169,12 +170,7 @@
169170
:paths (vec (keys path->doc)))))
170171

171172
(defn download-text-file [url]
172-
(let [client (java.net.http.HttpClient/newHttpClient)
173-
request (-> (java.net.http.HttpRequest/newBuilder)
174-
(.uri (java.net.URI/create url))
175-
(.build))
176-
response (.send client request (java.net.http.HttpResponse$BodyHandlers/ofString))]
177-
(.body response)))
173+
(:body (http/get url)))
178174

179175
(defn- node-ssr!
180176
[{:keys [viewer-js state]

src/nextjournal/clerk/viewer.cljc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns nextjournal.clerk.viewer
22
(:refer-clojure :exclude [var?])
3-
(:require [clojure.datafy :as datafy]
3+
(:require #?(:clj [babashka.http-client :as http])
4+
[clojure.datafy :as datafy]
45
[clojure.pprint :as pprint]
56
[clojure.set :as set]
67
[clojure.string :as str]
@@ -616,7 +617,11 @@
616617
(defn read-image [image-or-url]
617618
(ImageIO/read
618619
(if (string? image-or-url)
619-
(URL. (cond->> image-or-url (not (.getScheme (URI. image-or-url))) (str "file:")))
620+
(let [scheme (.getScheme (URI. image-or-url))
621+
http? (when scheme (str/starts-with? scheme "http"))]
622+
(if http?
623+
(:body (http/get image-or-url {:as :stream}))
624+
(URL. (cond->> image-or-url (not scheme) (str "file:")))))
620625
image-or-url))))
621626

622627
#?(:clj

0 commit comments

Comments
 (0)