livemapper

package
v0.8.8 Latest Latest
Warning

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

Go to latest
Published: Oct 16, 2023 License: Apache-2.0 Imports: 46 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LivemapperService_Stream_FullMethodName               = "/services.livemapper.LivemapperService/Stream"
	LivemapperService_CreateOrUpdateMarker_FullMethodName = "/services.livemapper.LivemapperService/CreateOrUpdateMarker"
	LivemapperService_DeleteMarker_FullMethodName         = "/services.livemapper.LivemapperService/DeleteMarker"
)
View Source
const (
	DispatchMarkerLimit = 60
)

Variables

View Source
var (
	ErrMarkerFailed = status.Error(codes.Internal, "errors.LivemapperService.ErrMarkerFailed")
	ErrMarkerDenied = status.Error(codes.PermissionDenied, "errors.LivemapperService.ErrMarkerDenied")
)
View Source
var (
	ErrStreamFailed = status.Error(codes.Internal, "errors.LivemapperService.ErrStreamFailed")
)
View Source
var File_services_livemapper_livemap_proto protoreflect.FileDescriptor
View Source
var LivemapperService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "services.livemapper.LivemapperService",
	HandlerType: (*LivemapperServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateOrUpdateMarker",
			Handler:    _LivemapperService_CreateOrUpdateMarker_Handler,
		},
		{
			MethodName: "DeleteMarker",
			Handler:    _LivemapperService_DeleteMarker_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "Stream",
			Handler:       _LivemapperService_Stream_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "services/livemapper/livemap.proto",
}

LivemapperService_ServiceDesc is the grpc.ServiceDesc for LivemapperService service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

Functions

func RegisterLivemapperServiceServer

func RegisterLivemapperServiceServer(s grpc.ServiceRegistrar, srv LivemapperServiceServer)

Types

type CreateOrUpdateMarkerRequest added in v0.8.1

type CreateOrUpdateMarkerRequest struct {
	Marker *livemap.Marker `protobuf:"bytes,1,opt,name=marker,proto3" json:"marker,omitempty"`
	// contains filtered or unexported fields
}

func (*CreateOrUpdateMarkerRequest) Descriptor deprecated added in v0.8.1

func (*CreateOrUpdateMarkerRequest) Descriptor() ([]byte, []int)

Deprecated: Use CreateOrUpdateMarkerRequest.ProtoReflect.Descriptor instead.

func (*CreateOrUpdateMarkerRequest) GetMarker added in v0.8.1

func (x *CreateOrUpdateMarkerRequest) GetMarker() *livemap.Marker

func (*CreateOrUpdateMarkerRequest) ProtoMessage added in v0.8.1

func (*CreateOrUpdateMarkerRequest) ProtoMessage()

func (*CreateOrUpdateMarkerRequest) ProtoReflect added in v0.8.1

func (*CreateOrUpdateMarkerRequest) Reset added in v0.8.1

func (x *CreateOrUpdateMarkerRequest) Reset()

func (*CreateOrUpdateMarkerRequest) String added in v0.8.1

func (x *CreateOrUpdateMarkerRequest) String() string

func (*CreateOrUpdateMarkerRequest) Validate added in v0.8.1

func (m *CreateOrUpdateMarkerRequest) Validate() error

Validate checks the field values on CreateOrUpdateMarkerRequest with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*CreateOrUpdateMarkerRequest) ValidateAll added in v0.8.1

func (m *CreateOrUpdateMarkerRequest) ValidateAll() error

ValidateAll checks the field values on CreateOrUpdateMarkerRequest with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in CreateOrUpdateMarkerRequestMultiError, or nil if none found.

type CreateOrUpdateMarkerRequestMultiError added in v0.8.1

type CreateOrUpdateMarkerRequestMultiError []error

CreateOrUpdateMarkerRequestMultiError is an error wrapping multiple validation errors returned by CreateOrUpdateMarkerRequest.ValidateAll() if the designated constraints aren't met.

func (CreateOrUpdateMarkerRequestMultiError) AllErrors added in v0.8.1

AllErrors returns a list of validation violation errors.

func (CreateOrUpdateMarkerRequestMultiError) Error added in v0.8.1

Error returns a concatenation of all the error messages it wraps.

type CreateOrUpdateMarkerRequestValidationError added in v0.8.1

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

CreateOrUpdateMarkerRequestValidationError is the validation error returned by CreateOrUpdateMarkerRequest.Validate if the designated constraints aren't met.

func (CreateOrUpdateMarkerRequestValidationError) Cause added in v0.8.1

Cause function returns cause value.

func (CreateOrUpdateMarkerRequestValidationError) Error added in v0.8.1

Error satisfies the builtin error interface

func (CreateOrUpdateMarkerRequestValidationError) ErrorName added in v0.8.1

ErrorName returns error name.

func (CreateOrUpdateMarkerRequestValidationError) Field added in v0.8.1

Field function returns field value.

func (CreateOrUpdateMarkerRequestValidationError) Key added in v0.8.1

Key function returns key value.

func (CreateOrUpdateMarkerRequestValidationError) Reason added in v0.8.1

Reason function returns reason value.

type CreateOrUpdateMarkerResponse added in v0.8.1

type CreateOrUpdateMarkerResponse struct {
	Marker *livemap.Marker `protobuf:"bytes,1,opt,name=marker,proto3" json:"marker,omitempty"`
	// contains filtered or unexported fields
}

func (*CreateOrUpdateMarkerResponse) Descriptor deprecated added in v0.8.1

func (*CreateOrUpdateMarkerResponse) Descriptor() ([]byte, []int)

Deprecated: Use CreateOrUpdateMarkerResponse.ProtoReflect.Descriptor instead.

func (*CreateOrUpdateMarkerResponse) GetMarker added in v0.8.1

func (*CreateOrUpdateMarkerResponse) ProtoMessage added in v0.8.1

func (*CreateOrUpdateMarkerResponse) ProtoMessage()

func (*CreateOrUpdateMarkerResponse) ProtoReflect added in v0.8.1

func (*CreateOrUpdateMarkerResponse) Reset added in v0.8.1

func (x *CreateOrUpdateMarkerResponse) Reset()

func (*CreateOrUpdateMarkerResponse) String added in v0.8.1

func (*CreateOrUpdateMarkerResponse) Validate added in v0.8.1

func (m *CreateOrUpdateMarkerResponse) Validate() error

Validate checks the field values on CreateOrUpdateMarkerResponse with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*CreateOrUpdateMarkerResponse) ValidateAll added in v0.8.1

func (m *CreateOrUpdateMarkerResponse) ValidateAll() error

ValidateAll checks the field values on CreateOrUpdateMarkerResponse with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in CreateOrUpdateMarkerResponseMultiError, or nil if none found.

type CreateOrUpdateMarkerResponseMultiError added in v0.8.1

type CreateOrUpdateMarkerResponseMultiError []error

CreateOrUpdateMarkerResponseMultiError is an error wrapping multiple validation errors returned by CreateOrUpdateMarkerResponse.ValidateAll() if the designated constraints aren't met.

func (CreateOrUpdateMarkerResponseMultiError) AllErrors added in v0.8.1

AllErrors returns a list of validation violation errors.

func (CreateOrUpdateMarkerResponseMultiError) Error added in v0.8.1

Error returns a concatenation of all the error messages it wraps.

type CreateOrUpdateMarkerResponseValidationError added in v0.8.1

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

CreateOrUpdateMarkerResponseValidationError is the validation error returned by CreateOrUpdateMarkerResponse.Validate if the designated constraints aren't met.

func (CreateOrUpdateMarkerResponseValidationError) Cause added in v0.8.1

Cause function returns cause value.

func (CreateOrUpdateMarkerResponseValidationError) Error added in v0.8.1

Error satisfies the builtin error interface

func (CreateOrUpdateMarkerResponseValidationError) ErrorName added in v0.8.1

ErrorName returns error name.

func (CreateOrUpdateMarkerResponseValidationError) Field added in v0.8.1

Field function returns field value.

func (CreateOrUpdateMarkerResponseValidationError) Key added in v0.8.1

Key function returns key value.

func (CreateOrUpdateMarkerResponseValidationError) Reason added in v0.8.1

Reason function returns reason value.

type DeleteMarkerRequest added in v0.8.1

type DeleteMarkerRequest struct {
	Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// contains filtered or unexported fields
}

func (*DeleteMarkerRequest) Descriptor deprecated added in v0.8.1

func (*DeleteMarkerRequest) Descriptor() ([]byte, []int)

Deprecated: Use DeleteMarkerRequest.ProtoReflect.Descriptor instead.

func (*DeleteMarkerRequest) GetId added in v0.8.1

func (x *DeleteMarkerRequest) GetId() uint64

func (*DeleteMarkerRequest) ProtoMessage added in v0.8.1

func (*DeleteMarkerRequest) ProtoMessage()

func (*DeleteMarkerRequest) ProtoReflect added in v0.8.1

func (x *DeleteMarkerRequest) ProtoReflect() protoreflect.Message

func (*DeleteMarkerRequest) Reset added in v0.8.1

func (x *DeleteMarkerRequest) Reset()

func (*DeleteMarkerRequest) String added in v0.8.1

func (x *DeleteMarkerRequest) String() string

func (*DeleteMarkerRequest) Validate added in v0.8.1

func (m *DeleteMarkerRequest) Validate() error

Validate checks the field values on DeleteMarkerRequest with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*DeleteMarkerRequest) ValidateAll added in v0.8.1

func (m *DeleteMarkerRequest) ValidateAll() error

ValidateAll checks the field values on DeleteMarkerRequest with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in DeleteMarkerRequestMultiError, or nil if none found.

type DeleteMarkerRequestMultiError added in v0.8.1

type DeleteMarkerRequestMultiError []error

DeleteMarkerRequestMultiError is an error wrapping multiple validation errors returned by DeleteMarkerRequest.ValidateAll() if the designated constraints aren't met.

func (DeleteMarkerRequestMultiError) AllErrors added in v0.8.1

func (m DeleteMarkerRequestMultiError) AllErrors() []error

AllErrors returns a list of validation violation errors.

func (DeleteMarkerRequestMultiError) Error added in v0.8.1

Error returns a concatenation of all the error messages it wraps.

type DeleteMarkerRequestValidationError added in v0.8.1

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

DeleteMarkerRequestValidationError is the validation error returned by DeleteMarkerRequest.Validate if the designated constraints aren't met.

func (DeleteMarkerRequestValidationError) Cause added in v0.8.1

Cause function returns cause value.

func (DeleteMarkerRequestValidationError) Error added in v0.8.1

Error satisfies the builtin error interface

func (DeleteMarkerRequestValidationError) ErrorName added in v0.8.1

ErrorName returns error name.

func (DeleteMarkerRequestValidationError) Field added in v0.8.1

Field function returns field value.

func (DeleteMarkerRequestValidationError) Key added in v0.8.1

Key function returns key value.

func (DeleteMarkerRequestValidationError) Reason added in v0.8.1

Reason function returns reason value.

type DeleteMarkerResponse added in v0.8.1

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

func (*DeleteMarkerResponse) Descriptor deprecated added in v0.8.1

func (*DeleteMarkerResponse) Descriptor() ([]byte, []int)

Deprecated: Use DeleteMarkerResponse.ProtoReflect.Descriptor instead.

func (*DeleteMarkerResponse) ProtoMessage added in v0.8.1

func (*DeleteMarkerResponse) ProtoMessage()

func (*DeleteMarkerResponse) ProtoReflect added in v0.8.1

func (x *DeleteMarkerResponse) ProtoReflect() protoreflect.Message

func (*DeleteMarkerResponse) Reset added in v0.8.1

func (x *DeleteMarkerResponse) Reset()

func (*DeleteMarkerResponse) String added in v0.8.1

func (x *DeleteMarkerResponse) String() string

func (*DeleteMarkerResponse) Validate added in v0.8.1

func (m *DeleteMarkerResponse) Validate() error

Validate checks the field values on DeleteMarkerResponse with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*DeleteMarkerResponse) ValidateAll added in v0.8.1

func (m *DeleteMarkerResponse) ValidateAll() error

ValidateAll checks the field values on DeleteMarkerResponse with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in DeleteMarkerResponseMultiError, or nil if none found.

type DeleteMarkerResponseMultiError added in v0.8.1

type DeleteMarkerResponseMultiError []error

DeleteMarkerResponseMultiError is an error wrapping multiple validation errors returned by DeleteMarkerResponse.ValidateAll() if the designated constraints aren't met.

func (DeleteMarkerResponseMultiError) AllErrors added in v0.8.1

func (m DeleteMarkerResponseMultiError) AllErrors() []error

AllErrors returns a list of validation violation errors.

func (DeleteMarkerResponseMultiError) Error added in v0.8.1

Error returns a concatenation of all the error messages it wraps.

type DeleteMarkerResponseValidationError added in v0.8.1

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

DeleteMarkerResponseValidationError is the validation error returned by DeleteMarkerResponse.Validate if the designated constraints aren't met.

func (DeleteMarkerResponseValidationError) Cause added in v0.8.1

Cause function returns cause value.

func (DeleteMarkerResponseValidationError) Error added in v0.8.1

Error satisfies the builtin error interface

func (DeleteMarkerResponseValidationError) ErrorName added in v0.8.1

ErrorName returns error name.

func (DeleteMarkerResponseValidationError) Field added in v0.8.1

Field function returns field value.

func (DeleteMarkerResponseValidationError) Key added in v0.8.1

Key function returns key value.

func (DeleteMarkerResponseValidationError) Reason added in v0.8.1

Reason function returns reason value.

type LivemapperServiceClient

type LivemapperServiceClient interface {
	// @perm: Attrs=Markers/JobList:"config.Game.Livemap.Jobs"|Players/JobGradeList
	Stream(ctx context.Context, in *StreamRequest, opts ...grpc.CallOption) (LivemapperService_StreamClient, error)
	// @perm: Attrs=Access/StringList:[]string{"Own", "Lower_Rank", "Same_Rank"}§[]string{"Own"}
	CreateOrUpdateMarker(ctx context.Context, in *CreateOrUpdateMarkerRequest, opts ...grpc.CallOption) (*CreateOrUpdateMarkerResponse, error)
	// @perm: Attrs=Access/StringList:[]string{"Own", "Lower_Rank", "Same_Rank"}§[]string{"Own"}
	DeleteMarker(ctx context.Context, in *DeleteMarkerRequest, opts ...grpc.CallOption) (*DeleteMarkerResponse, error)
}

LivemapperServiceClient is the client API for LivemapperService service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

type LivemapperServiceServer

type LivemapperServiceServer interface {
	// @perm: Attrs=Markers/JobList:"config.Game.Livemap.Jobs"|Players/JobGradeList
	Stream(*StreamRequest, LivemapperService_StreamServer) error
	// @perm: Attrs=Access/StringList:[]string{"Own", "Lower_Rank", "Same_Rank"}§[]string{"Own"}
	CreateOrUpdateMarker(context.Context, *CreateOrUpdateMarkerRequest) (*CreateOrUpdateMarkerResponse, error)
	// @perm: Attrs=Access/StringList:[]string{"Own", "Lower_Rank", "Same_Rank"}§[]string{"Own"}
	DeleteMarker(context.Context, *DeleteMarkerRequest) (*DeleteMarkerResponse, error)
	// contains filtered or unexported methods
}

LivemapperServiceServer is the server API for LivemapperService service. All implementations must embed UnimplementedLivemapperServiceServer for forward compatibility

type LivemapperService_StreamClient

type LivemapperService_StreamClient interface {
	Recv() (*StreamResponse, error)
	grpc.ClientStream
}

type LivemapperService_StreamServer

type LivemapperService_StreamServer interface {
	Send(*StreamResponse) error
	grpc.ServerStream
}

type Params added in v0.8.0

type Params struct {
	fx.In

	LC fx.Lifecycle

	Logger   *zap.Logger
	TP       *tracesdk.TracerProvider
	DB       *sql.DB
	Perms    perms.Permissions
	Enricher *mstlystcdata.Enricher
	Config   *config.Config
	Tracker  *tracker.Tracker
	Audit    audit.IAuditer
}

type Server

type Server struct {
	LivemapperServiceServer
	// contains filtered or unexported fields
}

func NewServer

func NewServer(p Params) *Server

func (*Server) CreateOrUpdateMarker added in v0.8.1

func (*Server) DeleteMarker added in v0.8.1

func (s *Server) DeleteMarker(ctx context.Context, req *DeleteMarkerRequest) (*DeleteMarkerResponse, error)

func (*Server) RegisterServer added in v0.8.0

func (s *Server) RegisterServer(srv *grpc.Server)

func (*Server) Stream

type StreamRequest

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

func (*StreamRequest) Descriptor deprecated

func (*StreamRequest) Descriptor() ([]byte, []int)

Deprecated: Use StreamRequest.ProtoReflect.Descriptor instead.

func (*StreamRequest) ProtoMessage

func (*StreamRequest) ProtoMessage()

func (*StreamRequest) ProtoReflect

func (x *StreamRequest) ProtoReflect() protoreflect.Message

func (*StreamRequest) Reset

func (x *StreamRequest) Reset()

func (*StreamRequest) String

func (x *StreamRequest) String() string

func (*StreamRequest) Validate

func (m *StreamRequest) Validate() error

Validate checks the field values on StreamRequest with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*StreamRequest) ValidateAll

func (m *StreamRequest) ValidateAll() error

ValidateAll checks the field values on StreamRequest with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in StreamRequestMultiError, or nil if none found.

type StreamRequestMultiError

type StreamRequestMultiError []error

StreamRequestMultiError is an error wrapping multiple validation errors returned by StreamRequest.ValidateAll() if the designated constraints aren't met.

func (StreamRequestMultiError) AllErrors

func (m StreamRequestMultiError) AllErrors() []error

AllErrors returns a list of validation violation errors.

func (StreamRequestMultiError) Error

func (m StreamRequestMultiError) Error() string

Error returns a concatenation of all the error messages it wraps.

type StreamRequestValidationError

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

StreamRequestValidationError is the validation error returned by StreamRequest.Validate if the designated constraints aren't met.

func (StreamRequestValidationError) Cause

Cause function returns cause value.

func (StreamRequestValidationError) Error

Error satisfies the builtin error interface

func (StreamRequestValidationError) ErrorName

func (e StreamRequestValidationError) ErrorName() string

ErrorName returns error name.

func (StreamRequestValidationError) Field

Field function returns field value.

func (StreamRequestValidationError) Key

Key function returns key value.

func (StreamRequestValidationError) Reason

Reason function returns reason value.

type StreamResponse

type StreamResponse struct {
	JobsUsers   []*users.Job          `protobuf:"bytes,1,rep,name=jobs_users,json=jobsUsers,proto3" json:"jobs_users,omitempty"`
	Users       []*livemap.UserMarker `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"`
	JobsMarkers []*users.Job          `protobuf:"bytes,3,rep,name=jobs_markers,json=jobsMarkers,proto3" json:"jobs_markers,omitempty"`
	Markers     []*livemap.Marker     `protobuf:"bytes,4,rep,name=markers,proto3" json:"markers,omitempty"`
	// contains filtered or unexported fields
}

func (*StreamResponse) Descriptor deprecated

func (*StreamResponse) Descriptor() ([]byte, []int)

Deprecated: Use StreamResponse.ProtoReflect.Descriptor instead.

func (*StreamResponse) GetJobsMarkers added in v0.8.1

func (x *StreamResponse) GetJobsMarkers() []*users.Job

func (*StreamResponse) GetJobsUsers

func (x *StreamResponse) GetJobsUsers() []*users.Job

func (*StreamResponse) GetMarkers added in v0.8.1

func (x *StreamResponse) GetMarkers() []*livemap.Marker

func (*StreamResponse) GetUsers

func (x *StreamResponse) GetUsers() []*livemap.UserMarker

func (*StreamResponse) ProtoMessage

func (*StreamResponse) ProtoMessage()

func (*StreamResponse) ProtoReflect

func (x *StreamResponse) ProtoReflect() protoreflect.Message

func (*StreamResponse) Reset

func (x *StreamResponse) Reset()

func (*StreamResponse) String

func (x *StreamResponse) String() string

func (*StreamResponse) Validate

func (m *StreamResponse) Validate() error

Validate checks the field values on StreamResponse with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*StreamResponse) ValidateAll

func (m *StreamResponse) ValidateAll() error

ValidateAll checks the field values on StreamResponse with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in StreamResponseMultiError, or nil if none found.

type StreamResponseMultiError

type StreamResponseMultiError []error

StreamResponseMultiError is an error wrapping multiple validation errors returned by StreamResponse.ValidateAll() if the designated constraints aren't met.

func (StreamResponseMultiError) AllErrors

func (m StreamResponseMultiError) AllErrors() []error

AllErrors returns a list of validation violation errors.

func (StreamResponseMultiError) Error

func (m StreamResponseMultiError) Error() string

Error returns a concatenation of all the error messages it wraps.

type StreamResponseValidationError

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

StreamResponseValidationError is the validation error returned by StreamResponse.Validate if the designated constraints aren't met.

func (StreamResponseValidationError) Cause

Cause function returns cause value.

func (StreamResponseValidationError) Error

Error satisfies the builtin error interface

func (StreamResponseValidationError) ErrorName

func (e StreamResponseValidationError) ErrorName() string

ErrorName returns error name.

func (StreamResponseValidationError) Field

Field function returns field value.

func (StreamResponseValidationError) Key

Key function returns key value.

func (StreamResponseValidationError) Reason

Reason function returns reason value.

type UnimplementedLivemapperServiceServer

type UnimplementedLivemapperServiceServer struct {
}

UnimplementedLivemapperServiceServer must be embedded to have forward compatible implementations.

func (UnimplementedLivemapperServiceServer) CreateOrUpdateMarker added in v0.8.1

func (UnimplementedLivemapperServiceServer) DeleteMarker added in v0.8.1

func (UnimplementedLivemapperServiceServer) Stream

type UnsafeLivemapperServiceServer

type UnsafeLivemapperServiceServer interface {
	// contains filtered or unexported methods
}

UnsafeLivemapperServiceServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to LivemapperServiceServer will result in compilation errors.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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