(import httprequest :as r) (import spork/json :as json) (def url "https://hachyderm.io/api/v1/bookmarks") (def auth "") (defn get-link [response rel] "Gets the link with the specified relation from the response. e.g. (get-link response \"next\")" # Get the links from the headers (def links (string/split "," ((response :headers) "Link"))) # Find the link with the specified relation (def link (find |(not= (string/find rel $) nil) links)) # Extract the url from the link string (as an array of 1 element) (def url (peg/match ~(sequence (any " ") "<" (capture (some (if-not ">" 1))) ">") link)) (if url (in url 0) nil)) (defn download-bookmarks [] "Downloads the bookmarks and saves them to a file." (def response (r/get url {"Authorization" (string "Bearer " auth)} {})) (def next-link (get-link response "next")) (def prev-link (get-link response "prev")) (pp next-link) (pp prev-link) (def bookmarks (json/decode (response :body))) (def fout (file/open "./response.json" :w)) (file/write fout (json/encode bookmarks))) (defn write-markdown [item] (def id (item "id")) (def fout (file/open (string "./" id ".md") :w)) (file/write fout (item "content")) (file/close fout)) (defn write-files [] "Writes the bookmarks to files." (def fin (file/open "./response.json" :r)) (print (file/read fin :all)) (def bookmarks (json/decode (file/read fin :all))) (each item bookmarks (write-markdown item))) (defn main [& args] (download-bookmarks) # (write-files) (print "ok"))