diff options
author | Adrian Kummerlaender | 2016-03-14 12:53:19 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2016-03-14 12:53:19 +0100 |
commit | e55f0c649d245e69a61a5e28f100d0214c258ce6 (patch) | |
tree | 937e61929fc3b225bb0f5978865ffd05f0fbd07a | |
parent | 0a1405024fe97212af8d66f608103370e7442ee4 (diff) | |
download | Telebot-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.scm | 154 |
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 |