Documentation ¶
Index ¶
- Constants
- Variables
- func AwaitTime(seconds int, f func() bool) error
- func DebugSaveJson(filename string, data interface{}) error
- type Account
- type Container
- type Manager
- func (m *Manager) AddContact(firstName, lastName, walletAddress, publicKey string) ([]contact, error)
- func (m *Manager) AddSharedContainer(containerID string) error
- func (m Manager) Client() (*neofscli.Client, error)
- func (m Manager) CopyToClipboard(txt string) error
- func (m *Manager) CreateContainer(name string, permission string, block bool) error
- func (m *Manager) DeleteContact(walletAddress string) ([]contact, error)
- func (m *Manager) DeleteContainer(id string) ([]filesystem.Element, error)
- func (m *Manager) DeleteObject(objectID, containerID string) ([]filesystem.Element, error)
- func (m *Manager) DomReady(ctx context.Context)
- func (m *Manager) Download(filename, objectID, containerID string) error
- func (m *Manager) ForceSync()
- func (m *Manager) Get(objectID, containerID string, payloadSize int, writer *io.Writer) ([]byte, error)
- func (m *Manager) GetAccountInformation() (Account, error)
- func (m *Manager) GetObjectMetaData(objectID, containerID string) (*obj.Object, error)
- func (m *Manager) GetVersion() string
- func (m *Manager) ListContainerIDs() ([]string, error)
- func (m *Manager) ListContainerObjects(containerID string, synchronised bool) ([]filesystem.Element, error)
- func (m *Manager) ListContainers(synchronised bool) ([]filesystem.Element, error)
- func (m *Manager) ListSharedContainerObjects(containerID string, synchronised bool) ([]filesystem.Element, error)
- func (m *Manager) ListSharedContainers() ([]filesystem.Element, error)
- func (m *Manager) LoadWallet(password string) error
- func (m *Manager) LoadWalletWithPath(password, filepath string) error
- func (m *Manager) MakeNotification(message UXMessage)
- func (m *Manager) MakeToast(message UXMessage)
- func (m *Manager) NewListReadOnlyContainerContents(since int64) ([]filesystem.Element, error)
- func (m *Manager) NewWallet(password string) error
- func (m Manager) OpenInDefaultBrowser(txt string) error
- func (m *Manager) RecentWallets() (map[string]string, error)
- func (m *Manager) RemoveSharedContainer(containerId string) ([]filesystem.Element, error)
- func (m *Manager) RestrictContainer(id string, publicKey string) error
- func (m *Manager) RetrieveContactByWalletAddress(walletAddress string) (contact, error)
- func (m *Manager) RetrieveContacts() ([]contact, error)
- func (m *Manager) SendSignal(signalName string, signalValue interface{})
- func (m *Manager) SetProgressPercentage(progressMessage ProgressMessage)
- func (m *Manager) SetWalletDebugging(walletPath, password string) error
- func (m *Manager) Shutdown(ctx context.Context)
- func (m *Manager) Startup(ctx context.Context)
- func (m *Manager) TopUpNeoWallet(amount float64) (string, error)
- func (m *Manager) TransferToken(recipient string, amount float64) (string, error)
- func (m *Manager) UnlockWallet() error
- func (m *Manager) Upload(containerID string, attributes map[string]string) ([]filesystem.Element, error)
- func (m *Manager) UploadObject(containerID, fp string, fileSize int, attributes map[string]string, ...) ([]filesystem.Element, error)
- type ProgressMessage
- type TmpObjectMeta
- type UXMessage
Constants ¶
const (
CACHE_FILE_SYSTEM = "filesystem"
)
Variables ¶
var NotFound = errors.New("wallet not found")
Functions ¶
func DebugSaveJson ¶
Types ¶
type Manager ¶
type Manager struct { DEBUG bool // contains filtered or unexported fields }
func NewFileSystemManager ¶
func (m *Manager) Search(search string) ([]filesystem.Element, error) { tmpFS, found := m.c.Get(CACHE_FILE_SYSTEM) if !found { return []filesystem.Element{}, errors.New("no filesystem in cache") } var results []filesystem.Element //now search the filesystem for a string comparison for _, v := range tmpFS.([]filesystem.Element) { if fnAttr, ok := v.Attributes[obj.AttributeFileName]; ok { if strings.Contains(fnAttr, search) { results = append(results, v) } } } return results, nil }
func (*Manager) AddContact ¶
func (*Manager) AddSharedContainer ¶
func (Manager) Client ¶ added in v0.4.0
todo we will want to have things dependent on the wallet controlled elsewhere with singletons and no other way of getting the value todo remove the need to pass the private key to the api (usually for getOwnerID - however this should be passed into the backend
func (Manager) CopyToClipboard ¶
func (*Manager) CreateContainer ¶
func (*Manager) DeleteContact ¶
func (*Manager) DeleteContainer ¶
func (m *Manager) DeleteContainer(id string) ([]filesystem.Element, error)
DeleteContainer must mark the container in the cache as deleted and delete it from neoFS
func (*Manager) DeleteObject ¶
func (m *Manager) DeleteObject(objectID, containerID string) ([]filesystem.Element, error)
func (*Manager) Download ¶
Upload will put an object in NeoFS. You can access publically available files at https://http.testnet.fs.neo.org/<containerID>/<objectID>
func (*Manager) ForceSync ¶
func (m *Manager) ForceSync()
func (m *Manager) ListReadOnlyContainersContents(since int64) ([]filesystem.Element, error) { tmpWallet, err := m.retrieveWallet() if err != nil { return []filesystem.Element{}, err } tmpKey := tmpWallet.Accounts[0].PrivateKey().PrivateKey c, err := m.Client() if err != nil { return []filesystem.Element{}, err } sessionToken, err := client2.CreateSession(m.ctx, c, client2.DEFAULT_EXPIRATION, &tmpKey) if err != nil { return []filesystem.Element{}, err } ids, err := m.listContainerIDs() if err != nil { return []filesystem.Element{}, err } var containers []filesystem.Element resultCounter := 0 for _, v := range ids { tmpContainer := filesystem.PopulateContainerList(m.ctx, c, *v) fmt.Printf("container eacl for %s: %s ?= %s\r\n", v.String(), tmpContainer.BasicAcl, acl.EACLReadOnlyBasicRule) if tmpContainer.BasicAcl != acl.BasicACL(0x0FFFCFFF) { //acl.EACLReadOnlyBasicRule continue } var filters = obj.SearchFilters{} filters.AddRootFilter() list, err := object.QueryObjects(m.ctx, c, *v, filters, nil, sessionToken) if err != nil { tmpContainer.Errors = append(tmpContainer.Errors, err) continue } //is this inefficient? the expensive part is the request, but we are throwing away the whole object _, els := filesystem.GenerateObjectStruct(m.ctx, c, list, *v, nil, sessionToken) var filteredElements []filesystem.Element for _, el := range els { //filteredElements = append(filteredElements, el) unixString, ok := el.Attributes[obj.AttributeTimestamp]; unixTime, err := strconv.ParseInt(unixString, 10, 64); if ok && err == nil && unixTime > since { //its a good object filteredElements = append(filteredElements, el) } } resultCounter += len(filteredElements) if len(filteredElements) > 0 { tmpContainer.Children = filteredElements containers = append(containers, tmpContainer) } } if m.DEBUG { DebugSaveJson("ListContainers.json", containers) } fmt.Println("for ", since, " there are ", resultCounter, " objects") return containers, nil }
func (*Manager) GetAccountInformation ¶
func (*Manager) GetObjectMetaData ¶
GetObjectMetaData is live not cached
func (*Manager) GetVersion ¶
func (*Manager) ListContainerIDs ¶
func (*Manager) ListContainerObjects ¶
func (m *Manager) ListContainerObjects(containerID string, synchronised bool) ([]filesystem.Element, error)
ListContainerObjects ets from cache
func (*Manager) ListContainers ¶
func (m *Manager) ListContainers(synchronised bool) ([]filesystem.Element, error)
ListContainers populates from cache
func (*Manager) ListSharedContainerObjects ¶
func (m *Manager) ListSharedContainerObjects(containerID string, synchronised bool) ([]filesystem.Element, error)
ListSharedContainerObjects ets from cache
func (*Manager) ListSharedContainers ¶
func (m *Manager) ListSharedContainers() ([]filesystem.Element, error)
func (*Manager) LoadWallet ¶
func (*Manager) LoadWalletWithPath ¶
func (*Manager) MakeNotification ¶
func (*Manager) NewListReadOnlyContainerContents ¶
func (m *Manager) NewListReadOnlyContainerContents(since int64) ([]filesystem.Element, error)
NewListReadOnlyContainerContents lists from cache
func (Manager) OpenInDefaultBrowser ¶
func (*Manager) RemoveSharedContainer ¶
func (m *Manager) RemoveSharedContainer(containerId string) ([]filesystem.Element, error)
func (*Manager) RestrictContainer ¶
func (*Manager) RetrieveContactByWalletAddress ¶
func (*Manager) RetrieveContacts ¶
func (*Manager) SendSignal ¶
func (*Manager) SetProgressPercentage ¶
func (m *Manager) SetProgressPercentage(progressMessage ProgressMessage)
func (*Manager) SetWalletDebugging ¶
func (*Manager) TransferToken ¶
func (*Manager) UnlockWallet ¶
func (*Manager) Upload ¶
func (m *Manager) Upload(containerID string, attributes map[string]string) ([]filesystem.Element, error)
Upload will put an object in NeoFS. You can access publically available files at https://http.testnet.fs.neo.org/<containerID>/<objectID>
type ProgressMessage ¶
func NewProgressMessage ¶
func NewProgressMessage(p *ProgressMessage) ProgressMessage
type TmpObjectMeta ¶
type TmpObjectMeta struct { Size uint64 Objects []filesystem.Element }