commit
c31a53b6a1
4 changed files with 16 additions and 4 deletions
3
api.go
3
api.go
|
@ -161,6 +161,9 @@ func (a *Api) getUpdates(limit int, timeout int, marker int64, types []string) (
|
||||||
}
|
}
|
||||||
body, err := a.client.request(http.MethodGet, "updates", values, nil)
|
body, err := a.client.request(http.MethodGet, "updates", values, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == errLongPollTimeout {
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package tamtam
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -10,6 +11,10 @@ import (
|
||||||
"github.com/neonxp/tamtam/schemes"
|
"github.com/neonxp/tamtam/schemes"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
errLongPollTimeout = errors.New("timeout")
|
||||||
|
)
|
||||||
|
|
||||||
type client struct {
|
type client struct {
|
||||||
key string
|
key string
|
||||||
version string
|
version string
|
||||||
|
@ -44,7 +49,7 @@ func (cl *client) requestReader(method, path string, query url.Values, body io.R
|
||||||
err, ok := err.(*url.Error)
|
err, ok := err.(*url.Error)
|
||||||
if ok {
|
if ok {
|
||||||
if err.Timeout() {
|
if err.Timeout() {
|
||||||
return nil, nil
|
return nil, errLongPollTimeout
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
|
||||||
"github.com/neonxp/tamtam"
|
"github.com/neonxp/tamtam"
|
||||||
|
"github.com/neonxp/tamtam/schemes"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -28,13 +29,15 @@ func main() {
|
||||||
for upd := range api.GetUpdates(ctx) {
|
for upd := range api.GetUpdates(ctx) {
|
||||||
log.Printf("Received: %#v", upd)
|
log.Printf("Received: %#v", upd)
|
||||||
switch upd := upd.(type) {
|
switch upd := upd.(type) {
|
||||||
case *tamtam.MessageCreatedUpdate:
|
case *schemes.MessageCreatedUpdate:
|
||||||
err := api.Messages.Send(
|
err := api.Messages.Send(
|
||||||
tamtam.NewMessage().
|
tamtam.NewMessage().
|
||||||
SetUser(upd.Message.Sender.UserId).
|
SetUser(upd.Message.Sender.UserId).
|
||||||
SetText(fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text)),
|
SetText(fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text)),
|
||||||
)
|
)
|
||||||
log.Printf("Answer: %#v %#v", res, err)
|
if err != nil {
|
||||||
|
log.Printf("Error: %#v", err)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
log.Printf("Unknown type: %#v", upd)
|
log.Printf("Unknown type: %#v", upd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/neonxp/tamtam"
|
"github.com/neonxp/tamtam"
|
||||||
|
"github.com/neonxp/tamtam/schemes"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -38,7 +39,7 @@ func main() {
|
||||||
upd := <-ch
|
upd := <-ch
|
||||||
log.Printf("Received: %#v", upd)
|
log.Printf("Received: %#v", upd)
|
||||||
switch upd := upd.(type) {
|
switch upd := upd.(type) {
|
||||||
case tamtam.MessageCreatedUpdate:
|
case *schemes.MessageCreatedUpdate:
|
||||||
err := api.Messages.Send(
|
err := api.Messages.Send(
|
||||||
tamtam.NewMessage().
|
tamtam.NewMessage().
|
||||||
SetUser(upd.Message.Sender.UserId).
|
SetUser(upd.Message.Sender.UserId).
|
||||||
|
|
Loading…
Reference in a new issue