Add error handling to general example
This commit is contained in:
8
chat.go
8
chat.go
@ -74,8 +74,8 @@ func getNewMessages(k *Keybase, c chan<- ChatAPI, execOptions []string) {
|
|||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
var jsonData ChatAPI
|
var jsonData ChatAPI
|
||||||
json.Unmarshal([]byte(scanner.Text()), &jsonData)
|
json.Unmarshal([]byte(scanner.Text()), &jsonData)
|
||||||
if len([]byte(jsonData.ErrorRaw)) > 0 {
|
if jsonData.ErrorRaw != nil {
|
||||||
var errorListen = string(jsonData.ErrorRaw)
|
var errorListen = string(*jsonData.ErrorRaw)
|
||||||
jsonData.ErrorListen = &errorListen
|
jsonData.ErrorListen = &errorListen
|
||||||
}
|
}
|
||||||
c <- jsonData
|
c <- jsonData
|
||||||
@ -155,9 +155,9 @@ func chatAPIOut(k *Keybase, c ChatAPI) (ChatAPI, error) {
|
|||||||
if err := json.Unmarshal(cmdOut, &r); err != nil {
|
if err := json.Unmarshal(cmdOut, &r); err != nil {
|
||||||
return ChatAPI{}, err
|
return ChatAPI{}, err
|
||||||
}
|
}
|
||||||
if len([]byte(r.ErrorRaw)) > 0 {
|
if r.ErrorRaw != nil {
|
||||||
var errorRead Error
|
var errorRead Error
|
||||||
json.Unmarshal([]byte(r.ErrorRaw), &errorRead)
|
json.Unmarshal([]byte(*r.ErrorRaw), &errorRead)
|
||||||
r.ErrorRead = &errorRead
|
r.ErrorRead = &errorRead
|
||||||
return r, errors.New(r.ErrorRead.Message)
|
return r, errors.New(r.ErrorRead.Message)
|
||||||
}
|
}
|
||||||
|
|||||||
5
docs.go
5
docs.go
@ -48,6 +48,11 @@ in @mkbot#test1:
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handler(m keybase.ChatAPI) {
|
func handler(m keybase.ChatAPI) {
|
||||||
|
if m.ErrorListen != nil {
|
||||||
|
fmt.Printf("Error: %s\n", *m.ErrorListen)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
msgType := m.Msg.Content.Type
|
msgType := m.Msg.Content.Type
|
||||||
msgID := m.Msg.ID
|
msgID := m.Msg.ID
|
||||||
deviceName := m.Msg.Sender.DeviceName
|
deviceName := m.Msg.Sender.DeviceName
|
||||||
|
|||||||
2
types.go
2
types.go
@ -30,7 +30,7 @@ type ChatAPI struct {
|
|||||||
Notification *notification `json:"notification,omitempty"`
|
Notification *notification `json:"notification,omitempty"`
|
||||||
Result *result `json:"result,omitempty"`
|
Result *result `json:"result,omitempty"`
|
||||||
Pagination *pagination `json:"pagination,omitempty"`
|
Pagination *pagination `json:"pagination,omitempty"`
|
||||||
ErrorRaw json.RawMessage `json:"error,omitempty"` // Raw JSON string containit any errors returned
|
ErrorRaw *json.RawMessage `json:"error,omitempty"` // Raw JSON string containing any errors returned
|
||||||
ErrorRead *Error `json:"-"` // Errors returned by any outgoing chat functions such as Read(), Edit(), etc
|
ErrorRead *Error `json:"-"` // Errors returned by any outgoing chat functions such as Read(), Edit(), etc
|
||||||
ErrorListen *string `json:"-"` // Errors returned by the api-listen command (used in the Run() function)
|
ErrorListen *string `json:"-"` // Errors returned by the api-listen command (used in the Run() function)
|
||||||
keybase Keybase // Some methods will need this, so I'm passing it but keeping it unexported
|
keybase Keybase // Some methods will need this, so I'm passing it but keeping it unexported
|
||||||
|
|||||||
Reference in New Issue
Block a user