types

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: May 22, 2023 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Overview

Package types provides the types used in the Yorkie API. This package is used by both the server and the client.

Index

Constants

View Source
const APIKeyKey = "x-api-key"

APIKeyKey is the key of the api key header.

View Source
const AuthorizationKey = "authorization"

AuthorizationKey is the key of the authorization header.

View Source
const GoSDKType = "yorkie-go-sdk"

GoSDKType is the type part of Go SDK in value of UserAgent.

View Source
const ShardKey = "x-shard-key"

ShardKey is the key of the shard header.

View Source
const UserAgentKey = "x-yorkie-user-agent"

UserAgentKey is the key of the user agent header.

Variables

View Source
var (
	// ErrInvalidWebhookRequest is returned when the given webhook request is not valid.
	ErrInvalidWebhookRequest = errors.New("invalid authorization webhook request")

	// ErrInvalidWebhookResponse is returned when the given webhook response is not valid.
	ErrInvalidWebhookResponse = errors.New("invalid authorization webhook response")
)
View Source
var ErrEmptyProjectFields = errors.New("updatable project fields are empty")

ErrEmptyProjectFields is returned when all the fields are empty.

View Source
var (
	// ErrInvalidID is returned when the given ID is not ObjectID.
	ErrInvalidID = errors.New("invalid ID")
)

Functions

func GetChangesRange added in v0.2.11

func GetChangesRange(
	paging Paging[int64],
	lastSeq int64,
) (int64, int64)

GetChangesRange returns a range of changes.

func IsAuthMethod

func IsAuthMethod(method string) bool

IsAuthMethod returns whether the given method can be used for authorization.

Types

type AccessAttribute

type AccessAttribute struct {
	Key  string   `json:"key"`
	Verb VerbType `json:"verb"`
}

AccessAttribute represents an access attribute.

func NewAccessAttributes added in v0.3.0

func NewAccessAttributes(docKeys []key.Key, verb VerbType) []AccessAttribute

NewAccessAttributes creates a new instance of AccessAttributes.

type AccessInfo

type AccessInfo struct {
	Method     Method
	Attributes []AccessAttribute
}

AccessInfo represents an access information.

type AuthWebhookRequest

type AuthWebhookRequest struct {
	Token      string            `json:"token"`
	Method     Method            `json:"method"`
	Attributes []AccessAttribute `json:"attributes"`
}

AuthWebhookRequest represents the request of authentication webhook.

func NewAuthWebhookRequest

func NewAuthWebhookRequest(reader io.Reader) (*AuthWebhookRequest, error)

NewAuthWebhookRequest creates a new instance of AuthWebhookRequest.

type AuthWebhookResponse

type AuthWebhookResponse struct {
	Allowed bool   `json:"allowed"`
	Reason  string `json:"reason"`
}

AuthWebhookResponse represents the response of authentication webhook.

func NewAuthWebhookResponse

func NewAuthWebhookResponse(reader io.Reader) (*AuthWebhookResponse, error)

NewAuthWebhookResponse creates a new instance of AuthWebhookResponse.

func (*AuthWebhookResponse) Write

func (r *AuthWebhookResponse) Write(writer io.Writer) (int, error)

Write writes this response to the given writer.

type ChangeSummary

type ChangeSummary struct {
	// ID is the unique identifier of the change.
	ID change.ID

	// Message is the message of the change.
	Message string

	// Snapshot is the snapshot of the document.
	Snapshot string
}

ChangeSummary represents a summary of change.

type Client

type Client struct {
	ID           *time.ActorID
	PresenceInfo PresenceInfo
}

Client represents the Client that communicates with the Server.

func NewClient

func NewClient(encoded []byte) (*Client, error)

NewClient creates a new Client from the given JSON.

func (*Client) Marshal

func (c *Client) Marshal() (string, error)

Marshal serializes the Client to JSON.

type CreateProjectFields added in v0.2.18

type CreateProjectFields struct {
	// Name is the name of this project.
	Name *string `bson:"name,omitempty" validate:"required,min=2,max=30,slug,reserved_project_name"`
}

CreateProjectFields is a set of fields that use to create a project.

func (*CreateProjectFields) Validate added in v0.2.18

func (i *CreateProjectFields) Validate() error

Validate validates the CreateProjectFields.

type DocEventType

type DocEventType string

DocEventType represents the event that the Server delivers to the client.

const (
	// DocumentsChangedEvent is an event indicating that documents are being
	// modified by a change.
	DocumentsChangedEvent DocEventType = "documents-changed"

	// DocumentsWatchedEvent is an event that occurs when documents are watched
	// by other clients.
	DocumentsWatchedEvent DocEventType = "documents-watched"

	// DocumentsUnwatchedEvent is an event that occurs when documents are
	// unwatched by other clients.
	DocumentsUnwatchedEvent DocEventType = "documents-unwatched"

	// PresenceChangedEvent is an event indicating that presence is changed.
	PresenceChangedEvent DocEventType = "presence-changed"
)

type DocumentSummary

type DocumentSummary struct {
	// ID is the unique identifier of the document.
	ID ID

	// Key is the key of the document.
	Key key.Key

	// CreatedAt is the time when the document is created.
	CreatedAt time.Time

	// AccessedAt is the time when the document is accessed.
	AccessedAt time.Time

	// UpdatedAt is the time when the document is updated.
	UpdatedAt time.Time

	// Snapshot is the string representation of the document.
	Snapshot string
}

DocumentSummary represents a summary of document.

type ID

type ID string

ID represents ID of entity.

func IDFromActorID

func IDFromActorID(actorID *time.ActorID) ID

IDFromActorID returns ID represented by the encoded hexadecimal string from actor ID.

func IDFromBytes

func IDFromBytes(bytes []byte) ID

IDFromBytes returns ID represented by the encoded hexadecimal string from bytes.

func (*ID) Bytes

func (id *ID) Bytes() ([]byte, error)

Bytes returns bytes of decoded hexadecimal string representation of this ID.

func (*ID) String

func (id *ID) String() string

String returns a string representation of this ID.

func (*ID) ToActorID

func (id *ID) ToActorID() (*time.ActorID, error)

ToActorID returns ActorID from this ID.

func (*ID) Validate

func (id *ID) Validate() error

Validate returns error if this ID is invalid.

type Method

type Method string

Method represents a method name of RPC.

const (
	ActivateClient   Method = "ActivateClient"
	DeactivateClient Method = "DeactivateClient"
	AttachDocument   Method = "AttachDocument"
	DetachDocument   Method = "DetachDocument"
	RemoveDocument   Method = "RemoveDocument"
	PushPull         Method = "PushPull"
	WatchDocuments   Method = "WatchDocuments"
)

Belows are the names of RPCs.

func AuthMethods

func AuthMethods() []Method

AuthMethods returns a slice of methods that can be used for authorization.

type Paging

type Paging[T any] struct {
	Offset    T
	PageSize  int
	IsForward bool
}

Paging is the paging information for the document.

type Presence

type Presence map[string]string

Presence represents custom presence that can be defined in the client.

type PresenceInfo

type PresenceInfo struct {
	Clock    int32
	Presence Presence
}

PresenceInfo is a presence information with logical clock.

func (*PresenceInfo) Update

func (i *PresenceInfo) Update(info PresenceInfo) bool

Update updates the given presence information with the given clock.

type Project

type Project struct {
	// ID is the unique ID of the project.
	ID ID `json:"id"`

	// Name is the name of this project.
	Name string `json:"name"`

	// Owner is the owner of this project.
	Owner ID `json:"owner"`

	// AuthWebhookURL is the url of the authorization webhook.
	AuthWebhookURL string `json:"auth_webhook_url"`

	// AuthWebhookMethods is the methods that run the authorization webhook.
	AuthWebhookMethods []string `json:"auth_webhook_methods"`

	// ClientDeactivateThreshold is the time after which clients in
	// specific project are considered deactivate for housekeeping.
	ClientDeactivateThreshold string `bson:"client_deactivate_threshold"`

	// PublicKey is the API key of this project.
	PublicKey string `json:"public_key"`

	// SecretKey is the secret key of this project.
	SecretKey string `json:"secret_key"`

	// CreatedAt is the time when the project was created.
	CreatedAt time.Time `json:"created_at"`

	// UpdatedAt is the time when the project was updated.
	UpdatedAt time.Time `json:"updated_at"`
}

Project is a project that consists of multiple documents and clients.

func (*Project) RequireAuth

func (p *Project) RequireAuth(method Method) bool

RequireAuth returns whether the given method requires authorization.

type SearchResult added in v0.2.13

type SearchResult[T any] struct {
	// TotalCount is the total count of the elements.
	TotalCount int

	// Elements is a list of elements.
	Elements []T
}

SearchResult is a result of search.

type SignupFields added in v0.2.19

type SignupFields struct {
	// Username is the name of user.
	Username *string `bson:"username" validate:"required,min=2,max=30,slug"`

	// Password is the password of user.
	Password *string `bson:"password" validate:"required,min=8,max=30,alpha_num_special"`
}

SignupFields is a set of fields that use to sign up to yorkie server.

func (*SignupFields) Validate added in v0.2.19

func (i *SignupFields) Validate() error

Validate validates the SignupFields.

type SyncMode added in v0.3.4

type SyncMode int

SyncMode is the mode of synchronization. It is used to determine whether to push and pull changes in PushPullChanges API.

const (
	// SyncModePushPull is the mode that pushes and pulls changes.
	SyncModePushPull SyncMode = iota

	// SyncModePushOnly is the mode that pushes changes only.
	SyncModePushOnly
)

type UpdatableProjectFields added in v0.2.8

type UpdatableProjectFields struct {
	// Name is the name of this project.
	Name *string `bson:"name,omitempty" validate:"omitempty,min=2,max=30,slug,reserved_project_name"`

	// AuthWebhookURL is the url of the authorization webhook.
	AuthWebhookURL *string `bson:"auth_webhook_url,omitempty" validate:"omitempty,url|emptystring"`

	// AuthWebhookMethods is the methods that run the authorization webhook.
	AuthWebhookMethods *[]string `bson:"auth_webhook_methods,omitempty" validate:"omitempty,invalid_webhook_method"`

	// ClientDeactivateThreshold is the time after which clients in specific project are considered deactivate.
	ClientDeactivateThreshold *string `bson:"client_deactivate_threshold,omitempty" validate:"omitempty,min=2,duration"`
}

UpdatableProjectFields is a set of fields that use to update a project.

func (*UpdatableProjectFields) Validate added in v0.2.8

func (i *UpdatableProjectFields) Validate() error

Validate validates the UpdatableProjectFields.

type User added in v0.2.14

type User struct {
	// ID is the unique ID of the user.
	ID ID `json:"id"`

	// Username is the username of the user.
	Username string `json:"username"`

	// CreatedAt is the time when the user was created.
	CreatedAt time.Time `json:"created_at"`
}

User is a user that can access the project.

type VerbType

type VerbType string

VerbType represents an action taken on the document.

const (

	// Read represents the case of only reading the given document.
	Read VerbType = "r"

	// ReadWrite represents the case of reading and writing the given document.
	ReadWrite VerbType = "rw"
)

Jump to

Keyboard shortcuts

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