Created foundation for api commands
This commit is contained in:
68
api/api.go
Normal file
68
api/api.go
Normal file
@ -0,0 +1,68 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
type Keybase struct {
|
||||
path string
|
||||
}
|
||||
|
||||
type keybase interface {
|
||||
LoggedIn() bool
|
||||
Username() string
|
||||
Version() string
|
||||
}
|
||||
|
||||
type status struct {
|
||||
Username string `json:"Username"`
|
||||
LoggedIn bool `json:"LoggedIn"`
|
||||
}
|
||||
|
||||
// New() returns a new instance of Keybase object. Optionally, you can pass a string containing the path to the Keybase executable as the first argument.
|
||||
func New(path ...string) Keybase {
|
||||
if len(path) < 1 {
|
||||
return Keybase{path: "/usr/bin/keybase"}
|
||||
}
|
||||
return Keybase{path: path[0]}
|
||||
}
|
||||
|
||||
// Username() returns the username of the currently logged-in Keybase user.
|
||||
func (k Keybase) Username() string {
|
||||
cmd := exec.Command(k.path, "status", "-j")
|
||||
cmdOut, err := cmd.Output()
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
var s status
|
||||
json.Unmarshal(cmdOut, &s)
|
||||
|
||||
return s.Username
|
||||
}
|
||||
|
||||
// LoggedIn() returns true if Keybase is currently logged in, otherwise return false.
|
||||
func (k Keybase) LoggedIn() bool {
|
||||
cmd := exec.Command(k.path, "status", "-j")
|
||||
cmdOut, err := cmd.Output()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
var s status
|
||||
json.Unmarshal(cmdOut, &s)
|
||||
|
||||
return s.LoggedIn
|
||||
}
|
||||
|
||||
// Version() returns the version string of the client.
|
||||
func (k Keybase) Version() string {
|
||||
cmd := exec.Command(k.path, "version", "-S", "-f", "s")
|
||||
cmdOut, err := cmd.Output()
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
return string(cmdOut)
|
||||
}
|
||||
Reference in New Issue
Block a user