| 1234567891011121314151617181920212223242526272829303132333435363738 |
- (in-package #:chatikbot)
- (defparameter +vk-api-url+ "https://api.vk.com/method/~A?v=5.34" "VK.com API endpoint")
- (defun %vk-api-call (method &optional args)
- (handler-case
- (bordeaux-threads:with-timeout (5)
- (let* ((params (loop for (k . v) in args
- when v
- collect (cons
- (princ-to-string k)
- (princ-to-string v))))
- (response (yason:parse
- (flex:make-flexi-stream
- (drakma:http-request (format nil +vk-api-url+ method)
- :method :post
- :parameters params
- :external-format-out :utf-8
- :force-binary t
- :want-stream t
- :decode-content t)
- :external-format :utf-8)
- :object-as :alist)))
- (when (aget "error" response)
- (error (aget "error_msg" (aget "error" response))))
- (aget "response" response)))
- (bordeaux-threads:timeout (e)
- (declare (ignore e))
- (error "Timeout"))))
- (defun vk-wall-get (&key owner-id domain offset count filter extended)
- (%vk-api-call "wall.get"
- (list (cons "owner_id" owner-id)
- (cons "domain" domain)
- (cons "offset" offset)
- (cons "count" count)
- (cons "filter" filter)
- (cons "extended" extended))))
|