very WIP subscribe

This commit is contained in:
finn 2022-03-18 19:10:36 -07:00
parent 3ccb424f53
commit 25501ecdf6
3 changed files with 59 additions and 7 deletions

View file

@ -0,0 +1,52 @@
package cmd
import (
"encoding/json"
"os"
"github.com/spf13/cobra"
"gitlab.com/signald/signald-go/cmd/signaldctl/common"
"gitlab.com/signald/signald-go/cmd/signaldctl/config"
client_protocol "gitlab.com/signald/signald-go/signald/client-protocol"
v1 "gitlab.com/signald/signald-go/signald/client-protocol/v1"
)
var (
accountIdentifier string
subscribeCmd = &cobra.Command{
Use: "subscribe",
Short: "subscribe to incoming messages from signald",
Long: `subscribe to incoming messages from signald.
Currently the only output option is json`,
PreRun: func(cmd *cobra.Command, args []string) {
if accountIdentifier == "" {
accountIdentifier = config.Config.DefaultAccount
}
},
RunE: func(cmd *cobra.Command, args []string) error {
incoming := make(chan client_protocol.BasicResponse)
go common.Signald.Listen(incoming)
req := v1.SubscribeRequest{Account: accountIdentifier}
err := req.Submit(common.Signald)
if err != nil {
panic(err)
}
for msg := range incoming {
err := json.NewEncoder(os.Stdout).Encode(msg)
if err != nil {
panic(err)
}
}
return nil
},
}
)
func init() {
subscribeCmd.Flags().StringVarP(&accountIdentifier, "account", "a", "", "the signald account to use")
RootCmd.AddCommand(subscribeCmd)
}

View file

@ -5,10 +5,10 @@ import (
) )
type BasicResponse struct { type BasicResponse struct {
ID string ID string `json:"id,omitempty"`
Type string Type string `json:"type,omitempty"`
ErrorType string ErrorType string `json:"error_type,omitempty"`
Error json.RawMessage Error json.RawMessage `json:"error,omitempty"`
Data json.RawMessage Data json.RawMessage `json:"data,omitempty"`
Account string Account string `json:"account,omitempty"`
} }

View file

@ -125,7 +125,7 @@ func (s *Signald) Listen(c chan client_protocol.BasicResponse) {
subscribers <- msg subscribers <- msg
} }
if c != nil && msg.ID == "" && msg.Type != "version" { if c != nil && !(msg.ID == "" && msg.Type == "version") {
c <- msg c <- msg
} }
} }