git.fiddlerwoaroof.com
Browse code

chore: cache data locally

Ed Langley authored on 17/04/2020 07:59:50
Showing 3 changed files
... ...
@@ -43,9 +43,9 @@
43 43
                                           params)))))))
44 44
 
45 45
 (defun start (app)
46
-  (setf (handler app)
47
-        (clack:clackup (app app)))
48
-  app)
46
+  (prog1 app
47
+    (setf (handler app)
48
+          (clack:clackup (app app)))))
49 49
 
50 50
 (defvar *app*)
51 51
 
... ...
@@ -61,4 +61,4 @@
61 61
                            (feed-reference :techcrunch      "https://techcrunch.com/feed/")
62 62
                            (plump-cleaner  :coding-horror   "http://feeds.feedburner.com/codinghorror")
63 63
                            (feed-reference :daring-fireball "https://daringfireball.net/feeds/main")))))
64
-            *app*)))
64
+            (araneus:routes *app*))))
... ...
@@ -5,7 +5,17 @@
5 5
 
6 6
 (fw.lu:defclass+ feed-reference ()
7 7
   ((%key :initarg :key :reader feed-key)
8
-   (%url :initarg :url :reader feed-url)))
8
+   (%url :initarg :url :reader feed-url)
9
+   (%data)))
10
+
11
+(defgeneric refresh-data (feed-reference)
12
+  (:method ((feed-reference feed-reference))
13
+    (setf (slot-value feed-reference '%data)
14
+          (alimenta.pull-feed:pull-feed
15
+           (feed-url feed-reference)))))
16
+
17
+(defmethod slot-unbound (_ (instance feed-reference) (slot-name (eql '%data)))
18
+  (refresh-data instance))
9 19
 
10 20
 (fw.lu:defclass+ plump-cleaner
11 21
     ((feed-reference (key url)))
... ...
@@ -13,7 +23,7 @@
13 23
 
14 24
 (defgeneric resolve-feed-reference (reference)
15 25
   (:method ((r feed-reference))
16
-    (alimenta.pull-feed:pull-feed (feed-url r))))
26
+    (slot-value r '%data)))
17 27
 
18 28
 (defgeneric prepare-feed-item-description (reference item)
19 29
   (:method ((r feed-reference) (item alimenta:item))
... ...
@@ -21,7 +31,6 @@
21 31
   (:method ((r plump-cleaner) (item alimenta:item))
22 32
     (let ((description (alimenta:description item)))
23 33
       (when description
24
-        (format t "~&aaaaa~%")
25 34
         (plump:text
26 35
          (plump:parse
27 36
           description))))))
... ...
@@ -23,7 +23,7 @@
23 23
                (:file "utils" :depends-on ("package"))
24 24
                (:file "default-layout")
25 25
                (:file "model")
26
-               (:file "rss-render" :depends-on "model")
26
+               (:file "rss-render" :depends-on ("model"))
27 27
                (:file "ui" :depends-on ("package"))
28 28
                (:file "view" :depends-on ("package" "ui" "default-layout" "rss-render" "model"))
29 29
                (:file "main" :depends-on ("package" "utils" "view" "model"))))