manager

package
v0.4.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2022 License: Apache-2.0 Imports: 48 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CACHE_FILE_SYSTEM = "filesystem"
)

Variables

View Source
var NotFound = errors.New("wallet not found")

Functions

func AwaitTime

func AwaitTime(seconds int, f func() bool) error

func DebugSaveJson

func DebugSaveJson(filename string, data interface{}) error

Types

type Account

type Account struct {
	Address   string `json:"address"`
	PublicKey string `json:"publicKey"`
	NeoFS     struct {
		Balance   int64  `json:"balance"`
		Precision uint32 `json:"precision"`
	} `json:"neofs"`
	Nep17 map[string]wallet.Nep17Tokens `json:"nep17"'`
}

type Container

type Container struct {
	ID   string
	Size uint64
}

type Manager

type Manager struct {
	DEBUG bool
	// contains filtered or unexported fields
}

func NewFileSystemManager

func NewFileSystemManager(version string, dbLocation string, DEBUG bool) (*Manager, error)
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 (m *Manager) AddContact(firstName, lastName, walletAddress, publicKey string) ([]contact, error)

func (*Manager) AddSharedContainer

func (m *Manager) AddSharedContainer(containerID string) error

func (Manager) Client added in v0.4.0

func (m Manager) Client() (*neofscli.Client, error)

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 (m Manager) CopyToClipboard(txt string) error

func (*Manager) CreateContainer

func (m *Manager) CreateContainer(name string, permission string, block bool) error

func (*Manager) DeleteContact

func (m *Manager) DeleteContact(walletAddress string) ([]contact, error)

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) DomReady

func (m *Manager) DomReady(ctx context.Context)

domReady is called after the front-end dom has been loaded

func (*Manager) Download

func (m *Manager) Download(filename, objectID, containerID string) error

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) Get

func (m *Manager) Get(objectID, containerID string, payloadSize int, writer *io.Writer) ([]byte, error)

func (*Manager) GetAccountInformation

func (m *Manager) GetAccountInformation() (Account, error)

func (*Manager) GetObjectMetaData

func (m *Manager) GetObjectMetaData(objectID, containerID string) (*obj.Object, error)

GetObjectMetaData is live not cached

func (*Manager) GetVersion

func (m *Manager) GetVersion() string

func (*Manager) ListContainerIDs

func (m *Manager) ListContainerIDs() ([]string, error)

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 (m *Manager) LoadWallet(password string) error

func (*Manager) LoadWalletWithPath

func (m *Manager) LoadWalletWithPath(password, filepath string) error

func (*Manager) MakeNotification

func (m *Manager) MakeNotification(message UXMessage)

func (*Manager) MakeToast

func (m *Manager) MakeToast(message UXMessage)

func (*Manager) NewListReadOnlyContainerContents

func (m *Manager) NewListReadOnlyContainerContents(since int64) ([]filesystem.Element, error)

NewListReadOnlyContainerContents lists from cache

func (*Manager) NewWallet

func (m *Manager) NewWallet(password string) error

func (Manager) OpenInDefaultBrowser

func (m Manager) OpenInDefaultBrowser(txt string) error

func (*Manager) RecentWallets

func (m *Manager) RecentWallets() (map[string]string, error)

func (*Manager) RemoveSharedContainer

func (m *Manager) RemoveSharedContainer(containerId string) ([]filesystem.Element, error)

func (*Manager) RestrictContainer

func (m *Manager) RestrictContainer(id string, publicKey string) error

func (*Manager) RetrieveContactByWalletAddress

func (m *Manager) RetrieveContactByWalletAddress(walletAddress string) (contact, error)

func (*Manager) RetrieveContacts

func (m *Manager) RetrieveContacts() ([]contact, error)

func (*Manager) SendSignal

func (m *Manager) SendSignal(signalName string, signalValue interface{})

func (*Manager) SetProgressPercentage

func (m *Manager) SetProgressPercentage(progressMessage ProgressMessage)

func (*Manager) SetWalletDebugging

func (m *Manager) SetWalletDebugging(walletPath, password string) error

func (*Manager) Shutdown

func (m *Manager) Shutdown(ctx context.Context)

shutdown is called at application termination

func (*Manager) Startup

func (m *Manager) Startup(ctx context.Context)

startup is called at application startup

func (*Manager) TopUpNeoWallet

func (m *Manager) TopUpNeoWallet(amount float64) (string, error)

func (*Manager) TransferToken

func (m *Manager) TransferToken(recipient string, amount float64) (string, error)

func (*Manager) UnlockWallet

func (m *Manager) UnlockWallet() error

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>

func (*Manager) UploadObject

func (m *Manager) UploadObject(containerID, fp string, fileSize int, attributes map[string]string, ioReader *io.Reader) ([]filesystem.Element, error)

type ProgressMessage

type ProgressMessage struct {
	Id       int
	Title    string
	Progress int
	Show     bool
	Error    string
}

func NewProgressMessage

func NewProgressMessage(p *ProgressMessage) ProgressMessage

type TmpObjectMeta

type TmpObjectMeta struct {
	Size    uint64
	Objects []filesystem.Element
}

type UXMessage

type UXMessage struct {
	Id          int
	Title       string
	Type        string
	Description string
	Closure     bool
}

func NewToastMessage

func NewToastMessage(t *UXMessage) UXMessage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL