refactor to data-source
This commit is contained in:
22
mobs.lisp
22
mobs.lisp
@@ -1,5 +1,7 @@
|
||||
(in-package :lispostory)
|
||||
|
||||
(define-data-source mob)
|
||||
|
||||
(defparameter *maplestory-mobs-url* "https://maplestory.io/api/gms/83/mob")
|
||||
|
||||
(defun get-maplestory-mobs ()
|
||||
@@ -8,8 +10,6 @@
|
||||
(defparameter *chronostory-mob-url-format* "https://chronostory.onrender.com/api/mob-info?mobId=~a")
|
||||
(defparameter *chronostory-mob-drop-url-format* "https://chronostory.onrender.com/api/mob-drops?mobId=~a")
|
||||
|
||||
(defparameter *chronostory-mobs* (make-array 0))
|
||||
|
||||
(defun chronostory-mob-url (mob-id)
|
||||
(format nil *chronostory-mob-url-format* mob-id))
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
(uiop:println (concatenate 'string "Retrieved id " (write-to-string mob-id))))
|
||||
data))
|
||||
|
||||
(defun refresh-mob-data ()
|
||||
(defmethod refresh ((ds mob-data-source))
|
||||
(let* ((maple-mobs (get-maplestory-mobs))
|
||||
(_ (uiop:println "Retrieved maplestory mobs. Getting chronostory mobs..."))
|
||||
(chrono-mobs
|
||||
@@ -36,16 +36,10 @@
|
||||
(chrono-mobs-str (shasht:write-json chrono-mobs nil)))
|
||||
(declare (ignore _))
|
||||
(uiop:println "Retrieved chronostory mobs. Writing out to json file...")
|
||||
(setf *chronostory-mobs* chrono-mobs)
|
||||
(write-string-into-file chrono-mobs-str "mobs.json" :if-exists :overwrite :if-does-not-exist :create)
|
||||
(setf (cache ds) chrono-mobs)
|
||||
(write-string-into-file chrono-mobs-str (file-path ds) :if-exists :overwrite :if-does-not-exist :create)
|
||||
(uiop:println "Done!")))
|
||||
|
||||
(defun reload-mob-data ()
|
||||
(let ((mob-data (shasht:read-json (uiop:read-file-string "mobs.json"))))
|
||||
(setf *chronostory-mobs* mob-data)
|
||||
mob-data))
|
||||
|
||||
(defun load-mob-data ()
|
||||
(if (/= (length *chronostory-mobs*) 0)
|
||||
*chronostory-mobs*
|
||||
(reload-mob-data)))
|
||||
(comment
|
||||
(defvar mobs (make-mob-data-source))
|
||||
(reload mobs))
|
||||
|
||||
Reference in New Issue
Block a user