mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Refactoring. Chante translate-text-event to translate-event and call it earlier.
This commit is contained in:
parent
f3e40bdc36
commit
11e3dfac69
@ -9,17 +9,48 @@
|
||||
(handle-text-event [_ _event-id])
|
||||
)
|
||||
|
||||
(describe "process-tag"
|
||||
(it "handles tags with many arguments"
|
||||
(should= [:e 1 2 3 4] (process-tag ["e" 1 2 3 4]))
|
||||
(should= [:e 1 2] (process-tag ["e" 1 2]))
|
||||
))
|
||||
|
||||
(describe "translate-event"
|
||||
(it "translates from strings to clojure values"
|
||||
(let [id (rand-int 1000000)
|
||||
pubkey (rand-int 1000000)
|
||||
sig (rand-int 1000000)
|
||||
created_at (rand-int 10000)
|
||||
content "the content"
|
||||
tags [["e" 1 2 3] ["p" 4 5 6 7]]
|
||||
event {"id" (hexify id)
|
||||
"pubkey" (hexify pubkey)
|
||||
"created_at" created_at
|
||||
"kind" 1
|
||||
"tags" tags
|
||||
"content" content
|
||||
"sig" (->> sig (num->bytes 64) bytes->hex-string)}]
|
||||
(should= {:id id
|
||||
:pubkey pubkey
|
||||
:created-at created_at
|
||||
:kind 1
|
||||
:tags [[:e 1 2 3] [:p 4 5 6 7]]
|
||||
:content content
|
||||
:sig sig}
|
||||
(translate-event event)))
|
||||
))
|
||||
|
||||
(declare now event state)
|
||||
(describe "Processing Text events (Kind 1)"
|
||||
(with now (int (/ (System/currentTimeMillis) 1000)))
|
||||
(with event {"id" "deadbeef"
|
||||
"pubkey" "f00d"
|
||||
"created_at" @now
|
||||
"kind" 1
|
||||
"tags" [["p" "0001" "someurl"]
|
||||
["e" "0002" "anotherurl"]]
|
||||
"content" "the content"
|
||||
"sig" "dddddd"})
|
||||
(with event {:id 0xdeadbeef
|
||||
:pubkey 0xf00d
|
||||
:created-at @now
|
||||
:kind 1
|
||||
:tags [[:p "0001" "someurl"]
|
||||
[:e "0002" "anotherurl"]]
|
||||
:content "the content"
|
||||
:sig 0xdddddd})
|
||||
(with state
|
||||
{:text-event-map {}
|
||||
:chronological-text-events (make-chronological-text-events)
|
||||
@ -48,7 +79,7 @@
|
||||
(let [state (assoc-in @state
|
||||
[:text-event-map 2]
|
||||
{:id 2})
|
||||
state (process-references state (translate-text-event @event))
|
||||
state (process-references state @event)
|
||||
text-event-map (get-in state [:text-event-map])
|
||||
article (get text-event-map 2)]
|
||||
(should= [0xdeadbeef] (:references article)))
|
||||
@ -138,23 +169,23 @@
|
||||
(hex-string->bytes sig)))))
|
||||
|
||||
(it "composes an original message with a subject."
|
||||
(let [private-key (num->bytes 64 314159)
|
||||
event-state {:keys {:private-key (bytes->hex-string private-key)}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message text"
|
||||
subject "subject"
|
||||
event (compose-text-event event-state subject text)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
(should= (bytes->hex-string public-key) pubkey)
|
||||
(should (<= 0 (- now created_at) 1)) ;within one second.
|
||||
(should= 1 kind)
|
||||
(should= [[:subject "subject"]] tags)
|
||||
(should= text content)
|
||||
(should (do-verify (hex-string->bytes id)
|
||||
public-key
|
||||
(hex-string->bytes sig)))))
|
||||
(let [private-key (num->bytes 64 314159)
|
||||
event-state {:keys {:private-key (bytes->hex-string private-key)}}
|
||||
public-key (get-pub-key private-key)
|
||||
text "message text"
|
||||
subject "subject"
|
||||
event (compose-text-event event-state subject text)
|
||||
{:keys [pubkey created_at kind tags content id sig]} (second event)
|
||||
now (quot (System/currentTimeMillis) 1000)]
|
||||
(should= "EVENT" (first event))
|
||||
(should= (bytes->hex-string public-key) pubkey)
|
||||
(should (<= 0 (- now created_at) 1)) ;within one second.
|
||||
(should= 1 kind)
|
||||
(should= [[:subject "subject"]] tags)
|
||||
(should= text content)
|
||||
(should (do-verify (hex-string->bytes id)
|
||||
public-key
|
||||
(hex-string->bytes sig)))))
|
||||
|
||||
(it "composes a reply to a root article."
|
||||
(let [private-key (num->bytes 64 42)
|
||||
@ -288,13 +319,13 @@
|
||||
(should= [1 4] mentions)))
|
||||
|
||||
(it "finds the root and reply when only a reply is marked."
|
||||
(let [event {:tags [[:e (hexify 1)]
|
||||
[:e (hexify 2) "" "reply"]
|
||||
[:e (hexify 4) "" "wow"]]}
|
||||
[root mentions referent] (get-references event)]
|
||||
(should= 2 root)
|
||||
(should= 2 referent)
|
||||
(should= [1 4] mentions)))
|
||||
(let [event {:tags [[:e (hexify 1)]
|
||||
[:e (hexify 2) "" "reply"]
|
||||
[:e (hexify 4) "" "wow"]]}
|
||||
[root mentions referent] (get-references event)]
|
||||
(should= 2 root)
|
||||
(should= 2 referent)
|
||||
(should= [1 4] mentions)))
|
||||
)
|
||||
|
||||
(describe "json"
|
||||
|
@ -91,10 +91,13 @@
|
||||
(defn to-json [o]
|
||||
(json/write-str o :escape-slash false :escape-unicode false))
|
||||
|
||||
(declare translate-event)
|
||||
|
||||
(defn process-event [{:keys [nicknames] :as event-state} event url]
|
||||
(let [_name-of (fn [pubkey] (get nicknames pubkey pubkey))
|
||||
[_name _subscription-id inner-event :as _decoded-msg] event
|
||||
{:strs [id pubkey _created_at kind _tags _content sig]} inner-event
|
||||
inner-event (translate-event inner-event)
|
||||
{:keys [id pubkey _created-at kind _tags _content sig]} inner-event
|
||||
;valid? (ecc/do-verify (util/hex-string->bytes id)
|
||||
; (util/hex-string->bytes pubkey)
|
||||
; (util/hex-string->bytes sig))
|
||||
@ -118,7 +121,7 @@
|
||||
(do #_(prn "unknown event: " url event)
|
||||
event-state)))))
|
||||
|
||||
(defn process-name-event [event-state {:strs [_id pubkey _created_at _kind _tags content _sig] :as event}]
|
||||
(defn process-name-event [event-state {:keys [_id pubkey _created-at _kind _tags content _sig] :as event}]
|
||||
(try
|
||||
(let [pubkey (hex-string->num pubkey)
|
||||
name (get (json/read-str content) "name" "tilt")]
|
||||
@ -130,8 +133,10 @@
|
||||
(prn event)
|
||||
event-state)))
|
||||
|
||||
(defn process-tag [[type arg1 arg2]]
|
||||
[(keyword type) arg1 arg2])
|
||||
(defn process-tag [tag]
|
||||
(let [tag-type (first tag)
|
||||
tag-args (rest tag)]
|
||||
(concat [(keyword tag-type)] tag-args)))
|
||||
|
||||
(defn process-tags [tags]
|
||||
(map process-tag tags))
|
||||
@ -188,13 +193,14 @@
|
||||
(concat referent-path [:references])
|
||||
conj (:id event)))))))
|
||||
|
||||
(defn translate-text-event [event]
|
||||
(defn translate-event [event]
|
||||
(let [id (hex-string->num (get event "id"))
|
||||
pubkey (hex-string->num (get event "pubkey"))
|
||||
sig (hex-string->num (get event "sig"))]
|
||||
{:id id
|
||||
:pubkey pubkey
|
||||
:created-at (get event "created_at")
|
||||
:kind (get event "kind")
|
||||
:content (get event "content")
|
||||
:sig sig
|
||||
:tags (process-tags (get event "tags"))}))
|
||||
@ -211,7 +217,7 @@
|
||||
(process-references event)))))
|
||||
|
||||
(defn process-text-event [event-state event url]
|
||||
(let [event (translate-text-event event)
|
||||
(let [_ (prn `process-text-event event)
|
||||
id (:id event)
|
||||
dup? (contains? (:text-event-map event-state) id)
|
||||
ui-handler (:event-handler event-state)
|
||||
|
Loading…
Reference in New Issue
Block a user