add (untested) function to set webhook with certificate

bot-api-6.1
Syfaro 2015-09-07 11:44:29 -05:00
parent 87a279827e
commit ca40caaa47
2 changed files with 40 additions and 7 deletions

View File

@ -237,3 +237,17 @@ func NewWebhook(link string) WebhookConfig {
Clear: false,
}
}
// NewWebhookWithCert creates a new webhook with a selfsigned certificate.
//
// link is the url you wish to get webhooks,
// file contains a string to a file, or a FileReader or FileBytes.
func NewWebhookWithCert(link string, file interface{}) WebhookConfig {
u, _ := url.Parse(link)
return WebhookConfig{
URL: u,
Clear: false,
Certificate: file,
}
}

View File

@ -159,8 +159,9 @@ type UpdateConfig struct {
// WebhookConfig contains information about a SetWebhook request.
type WebhookConfig struct {
Clear bool
URL *url.URL
Clear bool
URL *url.URL
Certificate interface{}
}
// FileBytes contains information about a set of bytes to upload as a File.
@ -973,11 +974,29 @@ func (bot *BotAPI) GetUpdates(config UpdateConfig) ([]Update, error) {
// If this is set, GetUpdates will not get any data!
//
// Requires Url OR to set Clear to true.
func (bot *BotAPI) SetWebhook(config WebhookConfig) (APIResponse, error){
v := url.Values{}
if !config.Clear {
v.Add("url", config.URL.String())
func (bot *BotAPI) SetWebhook(config WebhookConfig) (APIResponse, error) {
if config.Certificate == nil {
v := url.Values{}
if !config.Clear {
v.Add("url", config.URL.String())
}
return bot.MakeRequest("setWebhook", v)
}
return bot.MakeRequest("setWebhook", v)
params := make(map[string]string)
resp, err := bot.UploadFile("setWebhook", params, "certificate", config.Certificate)
if err != nil {
return APIResponse{}, err
}
var apiResp APIResponse
json.Unmarshal(resp.Result, &apiResp)
if bot.Debug {
log.Printf("sendVideo resp: %+v\n", apiResp)
}
return apiResp, nil
}