github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/service/logsend.go (about) 1 // Copyright 2017 Keybase, Inc. All rights reserved. Use of 2 // this source code is governed by the included BSD license. 3 4 package service 5 6 import ( 7 "errors" 8 "time" 9 10 "github.com/keybase/client/go/libkb" 11 keybase1 "github.com/keybase/client/go/protocol/keybase1" 12 "github.com/keybase/go-framed-msgpack-rpc/rpc" 13 "golang.org/x/net/context" 14 ) 15 16 type LogsendHandler struct { 17 *BaseHandler 18 libkb.Contextified 19 } 20 21 func NewLogsendHandler(xp rpc.Transporter, g *libkb.GlobalContext) *LogsendHandler { 22 return &LogsendHandler{ 23 BaseHandler: NewBaseHandler(g, xp), 24 Contextified: libkb.NewContextified(g), 25 } 26 } 27 28 func (h *LogsendHandler) PrepareLogsend(ctx context.Context) error { 29 connMgr := h.G().ConnectionManager 30 if connMgr == nil { 31 return errors.New("no connection manager available") 32 } 33 xp := connMgr.LookupByClientType(keybase1.ClientType_GUI_MAIN) 34 if xp == nil { 35 return errors.New("GUI main process wasn't found") 36 } 37 38 cli := keybase1.LogsendClient{Cli: rpc.NewClient(xp, libkb.NewContextifiedErrorUnwrapper(h.G()), nil)} 39 var cancel func() 40 ctx, cancel = context.WithTimeout(ctx, 10*time.Second) 41 defer cancel() 42 return cli.PrepareLogsend(ctx) 43 }