diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/weepinbell/microformats/searcher.clj | 14 | ||||
| -rw-r--r-- | src/weepinbell/webserver/retriever.clj | 13 |
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." |
