Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (import titanium ())
- (import http http)
- (import lua/coroutine coroutine)
- (import json json)
- (define POST_HEADERS
- (struct :Content-Type "application/json; charset=UTF-8"
- :Content-Encoding "identity"))
- (define baseAPI "http://misoshiki-bot-misoshiki.44fs.preview.openshiftapps.com/")
- (defun new-request (endpoint data headers callback)
- (struct :endpoint (.. baseAPI endpoint) :data data :headers headers :callback callback :running false :processed false))
- (defun new-queue ()
- '())
- (defun get (q e c)
- (push-cdr! q (new-request e nil nil c)))
- (defun post (q e d c)
- (push-cdr! q (new-request e d POST_HEADERS c)))
- (defun new-request-thread (queue)
- (Thread (lambda ()
- (while true
- (coroutine/yield)
- (for-each req queue
- (when (! (.> req :running)) (
- (print! "Started request")
- (.<! req :running true)
- (http/request (.. baseAPI (.> req :endpoint)) (.> req :data) (.> req :headers)))))))))
- (defun new-response-thread (queue)
- (Thread (lambda ()
- (while true
- (let* [(evt (coroutine/yield "http_success")) (url (nth evt 2)) (handle (nth evt 3))]
- (print! "HEY")
- (let [(req (car (filter (lambda (x) ( (and (= false (.> x :processed)) (= url (.> x :endpoint))) )) queue)))]
- (.<! req :processed true)
- ((.> req :callback) (json/parse "content")))
- )))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement