client

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2020 License: Apache-2.0 Imports: 30 Imported by: 55

Documentation

Index

Constants

View Source
const AdminTokenFileSuffix = "_admin"

AdminTokenFileSuffix is the suffix used for the token file name

Variables

View Source
var (
	ErrAlreadyConnected  = errors.New("already connected")
	ErrNotConnected      = errors.New("not connected")
	ErrHealthCheckFailed = errors.New("health check failed")
)

Errors related to Client connection and health check

View Source
var ErrNoServerUuid = fmt.Errorf(
	"!IMPORTANT WARNING: %s header is not published by the immudb server; "+
		"this client MUST NOT be used to connect to different immudb servers!",
	server.SERVER_UUID_HEADER)

ErrNoServerUuid ...

Functions

func BuildToken added in v0.7.0

func BuildToken(database string, token string) []byte

func GetServerUuid

func GetServerUuid(
	ctx context.Context,
	immuClient schema.ImmuServiceClient,
) (string, error)

GetServerUuid issues a Health command to the server, then parses and returns the server UUID from the response metadata

func NewHomedirService added in v0.7.0

func NewHomedirService() *homedirService

Types

type BatchRequest

type BatchRequest struct {
	Keys   []io.Reader
	Values []io.Reader
}

BatchRequest batch request payload

type HomedirService added in v0.7.0

type HomedirService interface {
	WriteFileToUserHomeDir(content []byte, pathToFile string) error
	FileExistsInUserHomeDir(pathToFile string) (bool, error)
	ReadFileFromUserHomeDir(pathToFile string) (string, error)
	DeleteFileFromUserHomeDir(pathToFile string) error
}

type ImmuClient

type ImmuClient interface {
	Disconnect() error
	IsConnected() bool
	WaitForHealthCheck(ctx context.Context) (err error)
	Connect(ctx context.Context) (clientConn *grpc.ClientConn, err error)
	Login(ctx context.Context, user []byte, pass []byte) (*schema.LoginResponse, error)
	Logout(ctx context.Context) error
	CreateUser(ctx context.Context, user []byte, pass []byte, permission uint32, databasename string) error
	ListUsers(ctx context.Context) (*schema.UserList, error)
	ChangePassword(ctx context.Context, user []byte, oldPass []byte, newPass []byte) error
	ChangePermission(ctx context.Context, action schema.PermissionAction, username string, database string, permissions uint32) error
	UpdateAuthConfig(ctx context.Context, kind auth.Kind) error
	UpdateMTLSConfig(ctx context.Context, enabled bool) error
	PrintTree(ctx context.Context) (*schema.Tree, error)
	CurrentRoot(ctx context.Context) (*schema.Root, error)
	Set(ctx context.Context, key []byte, value []byte) (*schema.Index, error)
	SafeSet(ctx context.Context, key []byte, value []byte) (*VerifiedIndex, error)
	RawSafeSet(ctx context.Context, key []byte, value []byte) (*VerifiedIndex, error)
	Get(ctx context.Context, key []byte) (*schema.StructuredItem, error)
	SafeGet(ctx context.Context, key []byte, opts ...grpc.CallOption) (*VerifiedItem, error)
	RawSafeGet(ctx context.Context, key []byte, opts ...grpc.CallOption) (*VerifiedItem, error)
	Scan(ctx context.Context, prefix []byte) (*schema.StructuredItemList, error)
	ZScan(ctx context.Context, set []byte) (*schema.StructuredItemList, error)
	ByIndex(ctx context.Context, index uint64) (*schema.StructuredItem, error)
	RawBySafeIndex(ctx context.Context, index uint64) (*VerifiedItem, error)
	IScan(ctx context.Context, pageNumber uint64, pageSize uint64) (*schema.SPage, error)
	Count(ctx context.Context, prefix []byte) (*schema.ItemsCount, error)
	SetBatch(ctx context.Context, request *BatchRequest) (*schema.Index, error)
	GetBatch(ctx context.Context, keys [][]byte) (*schema.StructuredItemList, error)
	Inclusion(ctx context.Context, index uint64) (*schema.InclusionProof, error)
	Consistency(ctx context.Context, index uint64) (*schema.ConsistencyProof, error)
	History(ctx context.Context, key []byte) (*schema.StructuredItemList, error)
	Reference(ctx context.Context, reference []byte, key []byte) (*schema.Index, error)
	SafeReference(ctx context.Context, reference []byte, key []byte) (*VerifiedIndex, error)
	ZAdd(ctx context.Context, set []byte, score float64, key []byte) (*schema.Index, error)
	SafeZAdd(ctx context.Context, set []byte, score float64, key []byte) (*VerifiedIndex, error)
	Dump(ctx context.Context, writer io.WriteSeeker) (int64, error)
	HealthCheck(ctx context.Context) error

	WithOptions(options *Options) *immuClient
	WithLogger(logger logger.Logger) *immuClient
	WithRootService(rs RootService) *immuClient
	WithTimestampService(ts TimestampService) *immuClient
	WithClientConn(clientConn *grpc.ClientConn) *immuClient
	WithServiceClient(serviceClient schema.ImmuServiceClient) *immuClient
	WithTokenService(tokenService TokenService) *immuClient

	GetServiceClient() *schema.ImmuServiceClient
	GetOptions() *Options
	SetupDialOptions(options *Options) *[]grpc.DialOption
	CreateDatabase(ctx context.Context, d *schema.Database) error
	UseDatabase(ctx context.Context, d *schema.Database) (*schema.UseDatabaseReply, error)
	SetActiveUser(ctx context.Context, u *schema.SetActiveUserRequest) error
	DatabaseList(ctx context.Context) (*schema.DatabaseListResponse, error)
	// contains filtered or unexported methods
}

ImmuClient ...

func DefaultClient

func DefaultClient() ImmuClient

DefaultClient ...

func NewImmuClient

func NewImmuClient(options *Options) (c ImmuClient, err error)

NewImmuClient ...

type MTLsOptions

type MTLsOptions struct {
	Servername  string
	Pkey        string
	Certificate string
	ClientCAs   string
}

MTLsOptions mTLS options

func DefaultMTLsOptions

func DefaultMTLsOptions() MTLsOptions

DefaultMTLsOptions returns the default mTLS options

func (MTLsOptions) WithCertificate

func (o MTLsOptions) WithCertificate(certificate string) MTLsOptions

WithCertificate ...

func (MTLsOptions) WithClientCAs

func (o MTLsOptions) WithClientCAs(clientCAs string) MTLsOptions

WithClientCAs ...

func (MTLsOptions) WithPkey

func (o MTLsOptions) WithPkey(pkey string) MTLsOptions

WithPkey ...

func (MTLsOptions) WithServername

func (o MTLsOptions) WithServername(servername string) MTLsOptions

WithServername ...

type Options

type Options struct {
	Dir                string
	Address            string
	Port               int
	HealthCheckRetries int
	MTLs               bool
	MTLsOptions        MTLsOptions
	Auth               bool
	DialOptions        *[]grpc.DialOption
	Config             string
	TokenFileName      string
	CurrentDatabase    string
	PasswordReader     c.PasswordReader
	Tkns               TokenService
	Metrics            bool
	PidPath            string
	PrometheusHost     string
	PrometheusPort     string
	LogFileName        string
}

Options client options

func DefaultOptions

func DefaultOptions() *Options

DefaultOptions ...

func (*Options) Bind

func (o *Options) Bind() string

Bind concatenates address and port

func (*Options) String

func (o *Options) String() string

func (*Options) WithAddress

func (o *Options) WithAddress(address string) *Options

WithAddress sets address

func (*Options) WithAuth

func (o *Options) WithAuth(authEnabled bool) *Options

WithAuth activate/deactivate auth

func (*Options) WithConfig

func (o *Options) WithConfig(config string) *Options

WithConfig sets config file name

func (*Options) WithDialOptions

func (o *Options) WithDialOptions(dialOptions *[]grpc.DialOption) *Options

WithDialOptions sets dialOptions

func (*Options) WithDir

func (o *Options) WithDir(dir string) *Options

WithDir sets program file folder

func (*Options) WithHealthCheckRetries

func (o *Options) WithHealthCheckRetries(retries int) *Options

WithHealthCheckRetries sets healt check retries

func (*Options) WithLogFileName added in v0.7.0

func (o *Options) WithLogFileName(filename string) *Options

WithLogFileName set log file name

func (*Options) WithMTLs

func (o *Options) WithMTLs(MTLs bool) *Options

WithMTLs activate/deactivate MTLs

func (*Options) WithMTLsOptions

func (o *Options) WithMTLsOptions(MTLsOptions MTLsOptions) *Options

WithMTLsOptions sets MTLsOptions

func (*Options) WithMetrics added in v0.7.0

func (o *Options) WithMetrics(start bool) *Options

WithMetrics set if metrics should start

func (*Options) WithPasswordReader added in v0.7.0

func (o *Options) WithPasswordReader(pr c.PasswordReader) *Options

WithPasswordReader sets the password reader for the client

func (*Options) WithPidPath added in v0.7.0

func (o *Options) WithPidPath(path string) *Options

WithPidPath set pid file path

func (*Options) WithPort

func (o *Options) WithPort(port int) *Options

WithPort sets port

func (*Options) WithPrometheusHost added in v0.7.0

func (o *Options) WithPrometheusHost(host string) *Options

WithPrometheusHost set prometheus host

func (*Options) WithPrometheusPort added in v0.7.0

func (o *Options) WithPrometheusPort(port string) *Options

WithPrometheusPort set prometheus port

func (*Options) WithTokenFileName

func (o *Options) WithTokenFileName(tokenFileName string) *Options

WithTokenFileName sets token file name

func (*Options) WithTokenService added in v0.7.0

func (o *Options) WithTokenService(tkns TokenService) *Options

WithTokenService sets the TokenService for the client

type RootService

type RootService interface {
	GetRoot(ctx context.Context, databasename string) (*schema.Root, error)
	SetRoot(root *schema.Root, databasename string) error
}

RootService the root service interface

func NewRootService

func NewRootService(immuC schema.ImmuServiceClient, cache cache.Cache, logger logger.Logger) RootService

NewRootService ...

type TimestampService

type TimestampService interface {
	GetTime() time.Time
}

TimestampService the timestamp service interface

func NewTimestampService

func NewTimestampService(ts timestamp.TsGenerator) TimestampService

NewTimestampService ...

type TokenService added in v0.7.0

type TokenService interface {
	SetToken(database string, token string) error
	WithHds(hds HomedirService) TokenService
	WithTokenFileName(tfn string) TokenService
	IsTokenPresent() (bool, error)
	DeleteToken() error
	GetToken() (string, error)
	GetDatabase() (string, error)
}

func NewTokenService added in v0.7.0

func NewTokenService() TokenService

NewTokenService ...

type VerifiedIndex

type VerifiedIndex struct {
	Index    uint64 `json:"index"`
	Verified bool   `json:"verified"`
}

VerifiedIndex ...

func (*VerifiedIndex) ProtoMessage

func (*VerifiedIndex) ProtoMessage()

ProtoMessage ...

func (*VerifiedIndex) Reset

func (vi *VerifiedIndex) Reset()

Reset ...

func (*VerifiedIndex) String

func (vi *VerifiedIndex) String() string

type VerifiedItem

type VerifiedItem struct {
	Key      []byte `json:"key"`
	Value    []byte `json:"value"`
	Index    uint64 `json:"index"`
	Time     uint64 `json:"time"`
	Verified bool   `json:"verified"`
}

VerifiedItem ...

func (*VerifiedItem) ProtoMessage

func (*VerifiedItem) ProtoMessage()

ProtoMessage ...

func (*VerifiedItem) Reset

func (vi *VerifiedItem) Reset()

Reset ...

func (*VerifiedItem) String

func (vi *VerifiedItem) String() string

Directories

Path Synopsis
Package clienttest ...
Package clienttest ...

Jump to

Keyboard shortcuts

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