checking in, tests left
This commit is contained in:
parent
25f9c3c1c9
commit
6c64681bc8
4
TODO
4
TODO
@ -2,8 +2,6 @@
|
|||||||
-- compat with kwalletmanager
|
-- compat with kwalletmanager
|
||||||
--- Will require conversion to different struct model.
|
--- Will require conversion to different struct model.
|
||||||
|
|
||||||
- Write* and Create*/New* methods
|
- walletCheck on all items' operations?
|
||||||
-- return relevant entry as native item
|
|
||||||
-- confirm i'm checking the result code for all of them.
|
|
||||||
|
|
||||||
- TESTS
|
- TESTS
|
||||||
|
@ -38,6 +38,30 @@ func NewBlob(f *Folder, keyName string, recursion *RecurseOpts) (blob *Blob, err
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete will delete this Blob from its parent Folder. You may want to run Folder.UpdateBlobs to update the existing map of Blob items.
|
||||||
|
func (b *Blob) Delete() (err error) {
|
||||||
|
|
||||||
|
if err = b.folder.RemoveEntry(b.Name); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
b = nil
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue will replace this Blob's Blob.Value.
|
||||||
|
func (b *Blob) SetValue(newValue []byte) (err error) {
|
||||||
|
|
||||||
|
if _, err = b.folder.WriteBlob(b.Name, newValue); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
b.Value = newValue
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Update fetches a Blob's Blob.Value.
|
// Update fetches a Blob's Blob.Value.
|
||||||
func (b *Blob) Update() (err error) {
|
func (b *Blob) Update() (err error) {
|
||||||
|
|
||||||
|
177
folder_funcs.go
177
folder_funcs.go
@ -44,6 +44,21 @@ func NewFolder(w *Wallet, name string, recursion *RecurseOpts) (folder *Folder,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Delete will delete this Folder, and all its WalletItems, from the parent Wallet.
|
||||||
|
You may want to run Wallet.Update upon completion to update the Wallet.Folders cache if you're using it.
|
||||||
|
*/
|
||||||
|
func (f *Folder) Delete() (err error) {
|
||||||
|
|
||||||
|
if err = f.wallet.RemoveFolder(f.Name); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
f = nil
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// HasEntry specifies if a Folder has an entry (WalletItem item) by the give entryName.
|
// HasEntry specifies if a Folder has an entry (WalletItem item) by the give entryName.
|
||||||
func (f *Folder) HasEntry(entryName string) (hasEntry bool, err error) {
|
func (f *Folder) HasEntry(entryName string) (hasEntry bool, err error) {
|
||||||
|
|
||||||
@ -153,73 +168,6 @@ func (f *Folder) Update() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdatePasswords updates (populates) a Folder's Folder.Passwords.
|
|
||||||
func (f *Folder) UpdatePasswords() (err error) {
|
|
||||||
|
|
||||||
var mapKeys []string
|
|
||||||
var variant dbus.Variant
|
|
||||||
var errs []error = make([]error, 0)
|
|
||||||
|
|
||||||
if !f.isInit {
|
|
||||||
err = ErrNotInitialized
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = f.Dbus.Call(
|
|
||||||
DbusWMPasswordList, 0, f.wallet.handle, f.Name, f.wallet.wm.AppID,
|
|
||||||
).Store(&variant); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
mapKeys = bytemapKeys(variant)
|
|
||||||
|
|
||||||
f.Passwords = make(map[string]*Password, len(mapKeys))
|
|
||||||
|
|
||||||
for _, k := range mapKeys {
|
|
||||||
if f.Passwords[k], err = NewPassword(f, k, f.Recurse); err != nil {
|
|
||||||
errs = append(errs, err)
|
|
||||||
err = nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if errs != nil && len(errs) > 0 {
|
|
||||||
err = NewErrors(errs...)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateMaps updates (populates) a Folder's Folder.Maps.
|
|
||||||
func (f *Folder) UpdateMaps() (err error) {
|
|
||||||
|
|
||||||
var mapKeys []string
|
|
||||||
var variant dbus.Variant
|
|
||||||
var errs []error = make([]error, 0)
|
|
||||||
|
|
||||||
if err = f.Dbus.Call(
|
|
||||||
DbusWMMapList, 0, f.wallet.handle, f.Name, f.wallet.wm.AppID,
|
|
||||||
).Store(&variant); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
mapKeys = bytemapKeys(variant)
|
|
||||||
|
|
||||||
f.Maps = make(map[string]*Map, len(mapKeys))
|
|
||||||
|
|
||||||
for _, k := range mapKeys {
|
|
||||||
if f.Maps[k], err = NewMap(f, k, f.Recurse); err != nil {
|
|
||||||
errs = append(errs, err)
|
|
||||||
err = nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if errs != nil && len(errs) > 0 {
|
|
||||||
err = NewErrors(errs...)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateBlobs updates (populates) a Folder's Folder.BinaryData.
|
// UpdateBlobs updates (populates) a Folder's Folder.BinaryData.
|
||||||
func (f *Folder) UpdateBlobs() (err error) {
|
func (f *Folder) UpdateBlobs() (err error) {
|
||||||
|
|
||||||
@ -256,6 +204,76 @@ func (f *Folder) UpdateBlobs() (err error) {
|
|||||||
if f.BinaryData[k], err = NewBlob(f, k, f.Recurse); err != nil {
|
if f.BinaryData[k], err = NewBlob(f, k, f.Recurse); err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
err = nil
|
err = nil
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if errs != nil && len(errs) > 0 {
|
||||||
|
err = NewErrors(errs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMaps updates (populates) a Folder's Folder.Maps.
|
||||||
|
func (f *Folder) UpdateMaps() (err error) {
|
||||||
|
|
||||||
|
var mapKeys []string
|
||||||
|
var variant dbus.Variant
|
||||||
|
var errs []error = make([]error, 0)
|
||||||
|
|
||||||
|
if err = f.Dbus.Call(
|
||||||
|
DbusWMMapList, 0, f.wallet.handle, f.Name, f.wallet.wm.AppID,
|
||||||
|
).Store(&variant); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
mapKeys = bytemapKeys(variant)
|
||||||
|
|
||||||
|
f.Maps = make(map[string]*Map, len(mapKeys))
|
||||||
|
|
||||||
|
for _, k := range mapKeys {
|
||||||
|
if f.Maps[k], err = NewMap(f, k, f.Recurse); err != nil {
|
||||||
|
errs = append(errs, err)
|
||||||
|
err = nil
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if errs != nil && len(errs) > 0 {
|
||||||
|
err = NewErrors(errs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePasswords updates (populates) a Folder's Folder.Passwords.
|
||||||
|
func (f *Folder) UpdatePasswords() (err error) {
|
||||||
|
|
||||||
|
var mapKeys []string
|
||||||
|
var variant dbus.Variant
|
||||||
|
var errs []error = make([]error, 0)
|
||||||
|
|
||||||
|
if !f.isInit {
|
||||||
|
err = ErrNotInitialized
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = f.Dbus.Call(
|
||||||
|
DbusWMPasswordList, 0, f.wallet.handle, f.Name, f.wallet.wm.AppID,
|
||||||
|
).Store(&variant); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
mapKeys = bytemapKeys(variant)
|
||||||
|
|
||||||
|
f.Passwords = make(map[string]*Password, len(mapKeys))
|
||||||
|
|
||||||
|
for _, k := range mapKeys {
|
||||||
|
if f.Passwords[k], err = NewPassword(f, k, f.Recurse); err != nil {
|
||||||
|
errs = append(errs, err)
|
||||||
|
err = nil
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,6 +320,7 @@ func (f *Folder) UpdateUnknowns() (err error) {
|
|||||||
if f.Unknown[k], err = NewUnknownItem(f, k, f.Recurse); err != nil {
|
if f.Unknown[k], err = NewUnknownItem(f, k, f.Recurse); err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
err = nil
|
err = nil
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,12 +332,16 @@ func (f *Folder) UpdateUnknowns() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WriteBlob adds or replaces a Blob to/in a Folder.
|
// WriteBlob adds or replaces a Blob to/in a Folder.
|
||||||
func (f *Folder) WriteBlob(entryName string, entryValue []byte) (err error) {
|
func (f *Folder) WriteBlob(entryName string, entryValue []byte) (b *Blob, err error) {
|
||||||
|
|
||||||
if err = f.WriteEntry(entryName, KwalletdEnumTypeStream, entryValue); err != nil {
|
if err = f.WriteEntry(entryName, KwalletdEnumTypeStream, entryValue); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if b, err = NewBlob(f, entryName, f.Recurse); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,7 +371,7 @@ func (f *Folder) WriteEntry(entryName string, entryType kwalletdEnumType, entryV
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WriteMap adds or replaces a Map to/in a Folder.
|
// WriteMap adds or replaces a Map to/in a Folder.
|
||||||
func (f *Folder) WriteMap(entryName string, entryValue map[string]string) (err error) {
|
func (f *Folder) WriteMap(entryName string, entryValue map[string]string) (m *Map, err error) {
|
||||||
|
|
||||||
var rslt int32
|
var rslt int32
|
||||||
var b []byte
|
var b []byte
|
||||||
@ -365,11 +388,15 @@ func (f *Folder) WriteMap(entryName string, entryValue map[string]string) (err e
|
|||||||
|
|
||||||
err = resultCheck(rslt)
|
err = resultCheck(rslt)
|
||||||
|
|
||||||
|
if m, err = NewMap(f, entryName, f.Recurse); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// WritePassword adds or replaces a Password to/in a Folder.
|
// WritePassword adds or replaces a Password to/in a Folder.
|
||||||
func (f *Folder) WritePassword(entryName, entryValue string) (err error) {
|
func (f *Folder) WritePassword(entryName, entryValue string) (p *Password, err error) {
|
||||||
|
|
||||||
var rslt int32
|
var rslt int32
|
||||||
|
|
||||||
@ -381,16 +408,24 @@ func (f *Folder) WritePassword(entryName, entryValue string) (err error) {
|
|||||||
|
|
||||||
err = resultCheck(rslt)
|
err = resultCheck(rslt)
|
||||||
|
|
||||||
|
if p, err = NewPassword(f, entryName, f.Recurse); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteUnknown adds or replaces an UnknownItem to/in a Folder.
|
// WriteUnknown adds or replaces an UnknownItem to/in a Folder.
|
||||||
func (f *Folder) WriteUnknown(entryName string, entryValue []byte) (err error) {
|
func (f *Folder) WriteUnknown(entryName string, entryValue []byte) (u *UnknownItem, err error) {
|
||||||
|
|
||||||
if err = f.WriteEntry(entryName, KwalletdEnumTypeUnknown, entryValue); err != nil {
|
if err = f.WriteEntry(entryName, KwalletdEnumTypeUnknown, entryValue); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if u, err = NewUnknownItem(f, entryName, f.Recurse); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
map_funcs.go
24
map_funcs.go
@ -34,6 +34,30 @@ func NewMap(f *Folder, keyName string, recursion *RecurseOpts) (m *Map, err erro
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete will delete this Map from its parent Folder. You may want to run Folder.UpdateMaps to update the existing map of Map items.
|
||||||
|
func (m *Map) Delete() (err error) {
|
||||||
|
|
||||||
|
if err = m.folder.RemoveEntry(m.Name); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
m = nil
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue will replace this Map's Map.Value.
|
||||||
|
func (m *Map) SetValue(newValue map[string]string) (err error) {
|
||||||
|
|
||||||
|
if _, err = m.folder.WriteMap(m.Name, newValue); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
m.Value = newValue
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Update fetches a Map's Map.Value.
|
// Update fetches a Map's Map.Value.
|
||||||
func (m *Map) Update() (err error) {
|
func (m *Map) Update() (err error) {
|
||||||
|
|
||||||
|
@ -34,6 +34,30 @@ func NewPassword(f *Folder, keyName string, recursion *RecurseOpts) (password *P
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete will delete this Password from its parent Folder. You may want to run Folder.UpdatePasswords to update the existing map of Password items.
|
||||||
|
func (p *Password) Delete() (err error) {
|
||||||
|
|
||||||
|
if err = p.folder.RemoveEntry(p.Name); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
p = nil
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue will replace this Password's Password.Value.
|
||||||
|
func (p *Password) SetValue(newValue string) (err error) {
|
||||||
|
|
||||||
|
if _, err = p.folder.WritePassword(p.Name, newValue); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
p.Value = newValue
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Update fetches a Password's Password.Value.
|
// Update fetches a Password's Password.Value.
|
||||||
func (p *Password) Update() (err error) {
|
func (p *Password) Update() (err error) {
|
||||||
|
|
||||||
|
@ -38,6 +38,30 @@ func NewUnknownItem(f *Folder, keyName string, recursion *RecurseOpts) (unknown
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete will delete this UnknownItem from its parent Folder. You may want to run Folder.UpdateUnknowns to update the existing map of UnknownItem items.
|
||||||
|
func (u *UnknownItem) Delete() (err error) {
|
||||||
|
|
||||||
|
if err = u.folder.RemoveEntry(u.Name); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
u = nil
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetValue will replace this UnknownItem's UnknownItem.Value.
|
||||||
|
func (u *UnknownItem) SetValue(newValue []byte) (err error) {
|
||||||
|
|
||||||
|
if _, err = u.folder.WriteUnknown(u.Name, newValue); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
u.Value = newValue
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Update fetches an UnknownItem's UnknownItem.Value.
|
// Update fetches an UnknownItem's UnknownItem.Value.
|
||||||
func (u *UnknownItem) Update() (err error) {
|
func (u *UnknownItem) Update() (err error) {
|
||||||
|
|
||||||
|
@ -179,6 +179,8 @@ func (w *Wallet) Delete() (err error) {
|
|||||||
|
|
||||||
err = resultCheck(rslt)
|
err = resultCheck(rslt)
|
||||||
|
|
||||||
|
w = nil
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ func NewWalletManager(recursion *RecurseOpts, appID ...string) (wm *WalletManage
|
|||||||
or provide your own RecurseOpts struct).
|
or provide your own RecurseOpts struct).
|
||||||
If appId is empty, DefaultAppID will be used as the app ID.
|
If appId is empty, DefaultAppID will be used as the app ID.
|
||||||
*/
|
*/
|
||||||
/* TODO: POC this before exposing. I have NO idea if it'll work.
|
/* TODO: POC this before exposing. I have NO idea if/how it'll work.
|
||||||
func NewWalletManagerFiles(recursion *RecurseOpts, appId string, filePaths ...string) (wm *WalletManager, err error) {
|
func NewWalletManagerFiles(recursion *RecurseOpts, appId string, filePaths ...string) (wm *WalletManager, err error) {
|
||||||
|
|
||||||
var exist bool
|
var exist bool
|
||||||
|
Loading…
Reference in New Issue
Block a user