Advertisement
Freack100

Untitled

Mar 1st, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.38 KB | None | 0 0
  1. (import titanium ())
  2. (import http http)
  3. (import lua/coroutine coroutine)
  4. (import json json)
  5.  
  6. (define POST_HEADERS
  7.   (struct :Content-Type "application/json; charset=UTF-8"
  8.           :Content-Encoding "identity"))
  9. (define baseAPI "http://misoshiki-bot-misoshiki.44fs.preview.openshiftapps.com/")
  10.  
  11. (defun new-request (endpoint data headers callback)
  12.   (struct :endpoint (.. baseAPI endpoint) :data data :headers headers :callback callback :running false :processed false))
  13.  
  14. (defun new-queue ()
  15.   '())
  16.  
  17. (defun get (q e c)
  18.   (push-cdr! q (new-request e nil nil c)))
  19.  
  20. (defun post (q e d c)
  21.   (push-cdr! q (new-request e d POST_HEADERS c)))
  22.  
  23. (defun new-request-thread (queue)
  24.   (Thread (lambda ()
  25.     (while true
  26.       (coroutine/yield)
  27.       (for-each req queue
  28.         (when (! (.> req :running)) (
  29.           (print! "Started request")
  30.           (.<! req :running true)
  31.           (http/request (.. baseAPI (.> req :endpoint)) (.> req :data) (.> req :headers)))))))))
  32.  
  33. (defun new-response-thread (queue)
  34.   (Thread (lambda ()
  35.     (while true
  36.       (let* [(evt (coroutine/yield "http_success")) (url (nth evt 2)) (handle (nth evt 3))]
  37.           (print! "HEY")
  38.           (let [(req (car (filter (lambda (x) ( (and (= false (.> x :processed)) (= url (.> x :endpoint))) )) queue)))]
  39.             (.<! req :processed true)
  40.             ((.> req :callback) (json/parse "content")))
  41.     )))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement