github.com/status-im/status-go@v1.1.0/services/wallet/keycard_pairings.go (about) 1 package wallet 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 ) 9 10 type KeycardPairings struct { 11 pairingsFile string 12 } 13 14 type KeycardPairing struct { 15 Key string `json:"key"` 16 Index int `json:"index"` 17 } 18 19 func NewKeycardPairings() *KeycardPairings { 20 return &KeycardPairings{} 21 } 22 23 func (kp *KeycardPairings) SetKeycardPairingsFile(filePath string) { 24 kp.pairingsFile = filePath 25 } 26 27 func (kp *KeycardPairings) GetPairingsJSONFileContent() ([]byte, error) { 28 _, err := os.Stat(kp.pairingsFile) 29 if os.IsNotExist(err) { 30 return []byte{}, nil 31 } 32 33 return ioutil.ReadFile(kp.pairingsFile) 34 } 35 36 func (kp *KeycardPairings) SetPairingsJSONFileContent(content []byte) error { 37 if len(content) == 0 { 38 // Nothing to write 39 return nil 40 } 41 _, err := os.Stat(kp.pairingsFile) 42 if os.IsNotExist(err) { 43 dir, _ := filepath.Split(kp.pairingsFile) 44 err = os.MkdirAll(dir, 0700) 45 if err != nil { 46 return err 47 } 48 } 49 50 return ioutil.WriteFile(kp.pairingsFile, content, 0600) 51 } 52 53 func (kp *KeycardPairings) GetPairings() (map[string]KeycardPairing, error) { 54 content, err := kp.GetPairingsJSONFileContent() 55 if err != nil { 56 return nil, err 57 } 58 59 if len(content) == 0 { 60 return nil, os.ErrNotExist 61 } 62 63 pairings := make(map[string]KeycardPairing) 64 err = json.Unmarshal(content, &pairings) 65 if err != nil { 66 return nil, err 67 } 68 69 return pairings, nil 70 }