package whatsapp

import (
	"fmt"

	"github.com/pkg/errors"
)

var (
	ErrAlreadyConnected          = errors.New("already connected")
	ErrAlreadyLoggedIn           = errors.New("already logged in")
	ErrInvalidSession            = errors.New("invalid session")
	ErrLoginInProgress           = errors.New("login or restore already running")
	ErrNotConnected              = errors.New("not connected")
	ErrInvalidWsData             = errors.New("received invalid data")
	ErrInvalidWsState            = errors.New("can't handle binary data when not logged in")
	ErrConnectionTimeout         = errors.New("connection timed out")
	ErrMissingMessageTag         = errors.New("no messageTag specified or to short")
	ErrInvalidHmac               = errors.New("invalid hmac")
	ErrInvalidServerResponse     = errors.New("invalid response received from server")
	ErrServerRespondedWith404    = errors.New("server responded with status 404")
	ErrInvalidWebsocket          = errors.New("invalid websocket")
	ErrMessageTypeNotImplemented = errors.New("message type not implemented")
	ErrOptionsNotProvided        = errors.New("new conn options not provided")
)

type ErrConnectionFailed struct {
	Err error
}

func (e *ErrConnectionFailed) Error() string {
	return fmt.Sprintf("connection to WhatsApp servers failed: %v", e.Err)
}

type ErrConnectionClosed struct {
	Code int
	Text string
}

func (e *ErrConnectionClosed) Error() string {
	return fmt.Sprintf("server closed connection,code: %d,text: %s", e.Code, e.Text)
}