From 710a813a5742b9c9becfcc17b43881658b4219a5 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Thu, 12 Oct 2017 14:49:05 +0500 Subject: [PATCH] :hankey: Added experimental SetWebhook method --- set_webhook.go | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/set_webhook.go b/set_webhook.go index 1c9e91e..d864f6b 100644 --- a/set_webhook.go +++ b/set_webhook.go @@ -1,6 +1,12 @@ package telegram -import json "github.com/pquerna/ffjson/ffjson" +import ( + "bytes" + "io/ioutil" + + json "github.com/pquerna/ffjson/ffjson" + http "github.com/valyala/fasthttp" +) type SetWebhookParameters struct { // HTTPS url to send updates to. Use an empty string to remove webhook @@ -40,12 +46,33 @@ type SetWebhookParameters struct { // recommend using a secret path in the URL, e.g. https://www.example.com/. // Since nobody else knows your bot‘s token, you can be pretty sure it’s us. func (bot *Bot) SetWebhook(params *SetWebhookParameters) (bool, error) { + var args http.Args + + if params.Certificate != nil { + cert := *params.Certificate + switch f := cert.(type) { + case string: + body, err := ioutil.ReadFile(f) + if err != nil { + return false, err + } + + // args.AddBytesV("certificate", body) + cert = body + case []byte: + // args.AddBytesV("certificate", bytes.NewBuffer(f).Bytes()) + cert = bytes.NewBuffer(f).Bytes() + } + // params.Certificate = nil + params.Certificate = &cert + } + dst, err := json.Marshal(*params) if err != nil { return false, err } - resp, err := bot.request(dst, "setWebhook", nil) + resp, err := bot.request(dst, "setWebhook", &args) if err != nil { return false, err }