aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2016-03-14 12:53:19 +0100
committerAdrian Kummerlaender2016-03-14 12:53:19 +0100
commite55f0c649d245e69a61a5e28f100d0214c258ce6 (patch)
tree937e61929fc3b225bb0f5978865ffd05f0fbd07a
parent0a1405024fe97212af8d66f608103370e7442ee4 (diff)
downloadTelebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.tar
Telebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.tar.gz
Telebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.tar.bz2
Telebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.tar.lz
Telebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.tar.xz
Telebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.tar.zst
Telebot-e55f0c649d245e69a61a5e28f100d0214c258ce6.zip
Implement distinction between required and optional API parameters
-rw-r--r--telebot.scm154
1 files changed, 88 insertions, 66 deletions
diff --git a/telebot.scm b/telebot.scm
index 0db37c6..5c38fd3 100644
--- a/telebot.scm
+++ b/telebot.scm
@@ -38,68 +38,82 @@
;;; plain API wrappers, returning deserialized JSON
(define-syntax wrap-api-method
- (syntax-rules ()
- ((wrap-api-method method(parameters ...))
- (define (method
- token
- #!key parameters ...)
- (with-input-from-request
- (get-query-url token (symbol->string 'method))
- (clean-query-parameters
- (map (lambda (l) (cons (first l) (second l)))
- (zip '(parameters ...)
- (list parameters ...))))
- read-json)))))
-
- (wrap-api-method getMe())
-
- (wrap-api-method getUpdates(offset limit timeout))
-
- (wrap-api-method sendMessage(chat_id
- text
- parse_mode
- disable_web_page_preview
- disable_notification
- reply_to_message_id
- reply_markup))
-
- (wrap-api-method forwardMessage(chat_id
- from_chat_id
- message_id
- disable_notification))
-
- (wrap-api-method sendPhoto(chat_id
- photo
- caption
+ (syntax-rules (required optional)
+ ((wrap-api-method method
+ (required required_params ...)
+ (optional optional_params ...))
+ (define (method token
+ #!key required_params ...
+ optional_params ...)
+ (if (any (lambda (x) (equal? #f x))
+ (list required_params ...))
+ (abort 'required-parameter-missing)
+ (with-input-from-request
+ (get-query-url token (symbol->string 'method))
+ (clean-query-parameters
+ (map (lambda (l) (cons (first l) (second l)))
+ (zip '(required_params ... optional_params ...)
+ (list required_params ... optional_params ...))))
+ read-json))))))
+
+ (wrap-api-method getMe (required) (optional))
+
+ (wrap-api-method getUpdates
+ (required)
+ (optional offset limit timeout))
+
+ (wrap-api-method sendMessage
+ (required chat_id
+ text)
+ (optional parse_mode
+ disable_web_page_preview
+ disable_notification
+ reply_to_message_id
+ reply_markup))
+
+ (wrap-api-method forwardMessage
+ (required chat_id
+ from_chat_id
+ message_id)
+ (optional disable_notification))
+
+ (wrap-api-method sendPhoto
+ (required chat_id
+ photo)
+ (optional caption
disable_notification
reply_to_message_id
reply_markup))
- (wrap-api-method sendAudio(chat_id
- audio
- duration
+ (wrap-api-method sendAudio
+ (required chat_id
+ audio)
+ (optional duration
performer
title
disable_notification
reply_to_message_id
reply_markup))
- (wrap-api-method sendDocument(chat_id
- document
- caption
- disable_notification
- reply_to_message_id
- reply_markup))
-
- (wrap-api-method sendSticker(chat_id
- sticker
- disable_notification
- reply_to_message_id
- reply_markup))
-
- (wrap-api-method sendVideo(chat_id
- video
- duration
+ (wrap-api-method sendDocument
+ (required chat_id
+ document)
+ (optional caption
+ disable_notification
+ reply_to_message_id
+ reply_markup))
+
+ (wrap-api-method sendSticker
+ (required chat_id
+ sticker)
+ (optional disable_notification
+ reply_to_message_id
+ reply_markup))
+
+ (wrap-api-method sendVideo
+ (required chat_id
+ video)
+ (optional duration
width
height
caption
@@ -107,27 +121,35 @@
reply_to_message_id
reply_markup))
- (wrap-api-method sendVoice(chat_id
- voice
- duration
+ (wrap-api-method sendVoice
+ (required chat_id
+ voice)
+ (optional duration
disable_notification
reply_to_message_id
reply_markup))
- (wrap-api-method sendLocation(chat_id
- latitude
- longitude
- disable_notification
- reply_to_message_id
- reply_markup))
+ (wrap-api-method sendLocation
+ (required chat_id
+ latitude
+ longitude)
+ (optional disable_notification
+ reply_to_message_id
+ reply_markup))
- (wrap-api-method sendChatAction(chat_id action))
+ (wrap-api-method sendChatAction
+ (required chat_id
+ action)
+ (optional))
- (wrap-api-method getUserProfilePhotos(user_id
- offset
- limit))
+ (wrap-api-method getUserProfilePhotos
+ (required user_id)
+ (optional offset
+ limit))
- (wrap-api-method getFile(file_id))
+ (wrap-api-method getFile
+ (required file_id)
+ (optional))
;;; framework