summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/weepinbell/microformats/searcher.clj14
-rw-r--r--src/weepinbell/webserver/retriever.clj13
2 files changed, 18 insertions, 9 deletions
diff --git a/src/weepinbell/microformats/searcher.clj b/src/weepinbell/microformats/searcher.clj
index 50ebd01..e156eb9 100644
--- a/src/weepinbell/microformats/searcher.clj
+++ b/src/weepinbell/microformats/searcher.clj
@@ -51,13 +51,16 @@
(has-key? data :type) [data]
:else nil))
-(defn use-prop [property data]
+(defn use-prop-all [property data]
(cond
(not (map? data)) nil
- (has-key? data :properties) (first-value (get-key (get-key data :properties) property))
- (has-key? data property) (first-value (get-key data property))
+ (has-key? data :properties) (get-key (get-key data :properties) property)
+ (has-key? data property) (get-key data property)
:else nil))
+(defn use-prop [property data]
+ (first-value (use-prop-all property data)))
+
(defn find-type [mftype items]
(concat (filter #(some #{mftype} (type-vector %)) items)
(mapcat #(find-type mftype (:children %)) items)))
@@ -80,8 +83,9 @@
(defn search-mftype [target h-entry]
(or
- (->> [:like-of :repost-of :in-reply-to]
- (filter #(url= (use-prop % h-entry) target))
+ (->> [:like-of :repost-of :in-reply-to :rsvp]
+ (filter #(some (fn [x] (url= x target))
+ (use-prop-all % h-entry)))
first)
:mention))
diff --git a/src/weepinbell/webserver/retriever.clj b/src/weepinbell/webserver/retriever.clj
index e335bc9..3761e3a 100644
--- a/src/weepinbell/webserver/retriever.clj
+++ b/src/weepinbell/webserver/retriever.clj
@@ -23,18 +23,23 @@
;; query list of webmentions
+(defn mftype= [& types]
+ (apply = (map keyword types)))
(defn filter-by-mftype
[mftype data]
(if (nil? mftype) data
(->> data
(map (fn [item]
[(get-in item [:webmention :target])
- (get item :microformats)]))
- (filter (fn [[target mf]]
- (->> mf mfsr/use-items
+ item]))
+ (filter (fn [[target item]]
+ (->> item
+ :microformats
+ mfsr/use-items
mfsr/find-h-entry
(mfsr/search-mftype target)
- (= mftype)))))))
+ (mftype= mftype))))
+ (map last))))
(defn query-list
"Get a list of webmentions by certain filters."