statusproto

package module
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2019 License: MPL-2.0 Imports: 29 Imported by: 0

README

status-protocol-go

This is the Status Protocol implementation in Go.

TBD

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrChatIDEmpty    = errors.New("chat ID is empty")
	ErrNotImplemented = errors.New("not implemented")
)
View Source
var (
	RetrieveLatest  = RetrieveConfig{/* contains filtered or unexported fields */}
	RetrieveLastDay = RetrieveConfig{/* contains filtered or unexported fields */}
)
View Source
var (
	// ErrMsgAlreadyExist returned if msg already exist.
	ErrMsgAlreadyExist = errors.New("message with given ID already exist")
)

Functions

func NewJSONHexEncoder added in v0.1.1

func NewJSONHexEncoder(cfg zapcore.EncoderConfig) zapcore.Encoder

NewJSONHexEncoder creates a JSON logger based on zapcore.NewJSONEncoder but overwrites encoding of byte slices. Instead encoding them with base64, jsonHexEncoder uses hex-encoding. Each hex-encoded value is prefixed with 0x so that it's clear it's a hex string.

func RegisterJSONHexEncoder added in v0.1.1

func RegisterJSONHexEncoder() error

RegisterJSONHexEncoder registers a jsonHexEncoder under "json-hex" name. Later, this name can be used as a value for zap.Config.Encoding to enable jsonHexEncoder.

func WithDatasync

func WithDatasync() func(c *config) error

Types

type Chat

type Chat interface {
	ID() string
	PublicName() string
	PublicKey() *ecdsa.PublicKey
}

type ChatMessages

type ChatMessages struct {
	Messages []*protocol.Message
	Public   bool
	ChatID   string
}

type Messenger

type Messenger struct {
	// contains filtered or unexported fields
}

Messenger is a entity managing chats and messages. It acts as a bridge between the application and encryption layers. It needs to expose an interface to manage installations because installations are managed by the user. Similarly, it needs to expose an interface to manage mailservers because they can also be managed by the user.

func NewMessenger

func NewMessenger(
	identity *ecdsa.PrivateKey,
	server transport.Server,
	shh *whisper.Whisper,
	installationID string,
	opts ...Option,
) (*Messenger, error)

func (*Messenger) AddMailserver

func (m *Messenger) AddMailserver(enode string) error

NOT IMPLEMENTED

func (*Messenger) ConfirmMessagesProcessed

func (m *Messenger) ConfirmMessagesProcessed(messageIDs [][]byte) error

DEPRECATED

func (*Messenger) DisableInstallation

func (m *Messenger) DisableInstallation(id string) error

func (*Messenger) EnableInstallation

func (m *Messenger) EnableInstallation(id string) error

func (*Messenger) Installations

func (m *Messenger) Installations() ([]*multidevice.Installation, error)

func (*Messenger) Join

func (m *Messenger) Join(chat Chat) error

func (*Messenger) Leave

func (m *Messenger) Leave(chat Chat) error

func (*Messenger) LoadFilters

func (m *Messenger) LoadFilters(chats []*filter.Chat) ([]*filter.Chat, error)

DEPRECATED

func (*Messenger) Mailservers

func (m *Messenger) Mailservers() ([]string, error)

NOT IMPLEMENTED

func (*Messenger) RemoveFilters

func (m *Messenger) RemoveFilters(chats []*filter.Chat) error

DEPRECATED

func (*Messenger) RemoveMailserver

func (m *Messenger) RemoveMailserver(id string) error

NOT IMPLEMENTED

func (*Messenger) Retrieve

func (m *Messenger) Retrieve(ctx context.Context, chat Chat, c RetrieveConfig) (messages []*protocol.Message, err error)

func (*Messenger) RetrieveAll

func (m *Messenger) RetrieveAll(ctx context.Context, c RetrieveConfig) (allMessages []*protocol.Message, err error)

RetrieveAll retrieves all previously fetched messages

func (*Messenger) RetrieveRawAll

func (m *Messenger) RetrieveRawAll() (map[filter.Chat][]*protocol.StatusMessage, error)

DEPRECATED

func (*Messenger) SelectMailserver

func (m *Messenger) SelectMailserver(id string) error

NOT IMPLEMENTED

func (*Messenger) Send

func (m *Messenger) Send(ctx context.Context, chat Chat, data []byte) ([]byte, error)

func (*Messenger) SendRaw

func (m *Messenger) SendRaw(ctx context.Context, chat Chat, data []byte) ([]byte, whisper.NewMessage, error)

SendRaw takes encoded data, encrypts it and sends through the wire. DEPRECATED

func (*Messenger) SetInstallationMetadata

func (m *Messenger) SetInstallationMetadata(id string, data *multidevice.InstallationMetadata) error

func (*Messenger) Shutdown

func (m *Messenger) Shutdown() (err error)

Shutdown takes care of ensuring a clean shutdown of Messenger

type Option

type Option func(*config) error

func WithCustomLogger

func WithCustomLogger(logger *zap.Logger) Option

func WithDatabase

func WithDatabase(db *sql.DB) Option

func WithDatabaseConfig

func WithDatabaseConfig(dbPath, dbKey string) Option

func WithGenericDiscoveryTopicSupport

func WithGenericDiscoveryTopicSupport() Option

func WithMessagesPersistenceEnabled

func WithMessagesPersistenceEnabled() Option

func WithOnNewInstallationsHandler

func WithOnNewInstallationsHandler(h func([]*multidevice.Installation)) Option

func WithOnNewSharedSecret

func WithOnNewSharedSecret(h func([]*sharedsecret.Secret)) Option

func WithSendV1Messages

func WithSendV1Messages() Option

type RetrieveConfig

type RetrieveConfig struct {
	From time.Time
	To   time.Time
	// contains filtered or unexported fields
}

Directories

Path Synopsis
bridge
geth Module
internal
Package sqlite is responsible for creation of encrypted sqlite3 database using sqlcipher driver.
Package sqlite is responsible for creation of encrypted sqlite3 database using sqlcipher driver.
transport

Jump to

Keyboard shortcuts

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