expand the context

This commit is contained in:
Michael Jerger 2023-06-16 17:38:51 +02:00
parent 0f940aaaef
commit 50ff2f4617
3 changed files with 45 additions and 9 deletions

View file

@ -1,11 +1,14 @@
(ns activity-pub-poc.json-ld (ns dda.activity-pub-poc.json-ld
(:require (:require
[hato.client :as http] [hato.client :as http]
[clojure.string :as str]
[clojure.inspector :as ins] [clojure.inspector :as ins]
)) ))
(def team-url "https://social.meissa-gmbh.de/users/team") (def team-url "https://social.meissa-gmbh.de/users/team")
(def context-cache (atom {}))
(defn json-get [url] (defn json-get [url]
(:body (:body
(http/get url (http/get url
@ -13,4 +16,38 @@
:http-client {:redirect-policy :normal} :http-client {:redirect-policy :normal}
:as :json-string-keys}))) :as :json-string-keys})))
(ins/inspect-tree (json-get team-url)) (defn fetch-context [url]
(if-let [ctx (get @context-cache url)]
ctx
(get
(swap! context-cache
(fn [cache]
(assoc cache url (get (json-get url) "@context"))))
url)))
(defn expand-context
([new-context]
(expand-context {} new-context))
([current-context new-context]
(cond
(string? new-context)
(expand-context current-context (fetch-context new-context))
(sequential? new-context)
(reduce expand-context current-context new-context)
(map? new-context)
(into current-context
(map
(fn [[k v]]
(let [id (if (map? v) (get v "@id" v) v)
[prefix suffix] (str/split id #":")]
(if-let [base (get (merge current-context new-context) prefix)]
[k (assoc (if (map? v) v {})
"@id" (str (if (map? base) (get base "@id") base)
suffix))]
[k (if (map? v) v {"@id" v})]))))
new-context))))
(expand-context (get (json-get team-url) "@context"))

View file

@ -1,7 +0,0 @@
(ns activity-pub-poc.core-test
(:require [clojure.test :refer :all]
[activity-pub-poc.core :refer :all]))
(deftest a-test
(testing "FIXME, I fail."
(is (= 0 1))))

View file

@ -0,0 +1,6 @@
(ns dda.activity-pub-poc.json-ld-test
(:require [clojure.test :refer :all]
[dda.activity-pub-poc.json-ld :as sut]))
(deftest get-property-type-from-ld-resource
(is (= 0 1)))