v1

package
v0.0.0-...-83adff0 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2020 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NoticeBizTypeSv      = 1
	NoticeBizTypeComment = 2
	NoticeBizTypeUser    = 3
	NoticeBizTypeAudit   = 4
)

通知的业务类型

View Source
const (
	NoticeTypeLike    = 1
	NoticeTypeComment = 2
	NoticeTypeFan     = 3
	NoticeTypeSysMsg  = 4
)

通知类型

Variables

View Source
var (
	ErrInvalidLengthApi = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowApi   = fmt.Errorf("proto: integer overflow")
)

Functions

func RegisterNoticeServer

func RegisterNoticeServer(s *grpc.Server, srv NoticeServer)

Types

type CreateNoticesReply

type CreateNoticesReply struct {
	// 失败的列表
	FailList             []int64  `protobuf:"varint,2,rep,packed,name=fail_list,json=failList" json:"fail_list"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*CreateNoticesReply) Descriptor

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

func (*CreateNoticesReply) Marshal

func (m *CreateNoticesReply) Marshal() (dAtA []byte, err error)

func (*CreateNoticesReply) MarshalTo

func (m *CreateNoticesReply) MarshalTo(dAtA []byte) (int, error)

func (*CreateNoticesReply) ProtoMessage

func (*CreateNoticesReply) ProtoMessage()

func (*CreateNoticesReply) Reset

func (m *CreateNoticesReply) Reset()

func (*CreateNoticesReply) Size

func (m *CreateNoticesReply) Size() (n int)

func (*CreateNoticesReply) String

func (m *CreateNoticesReply) String() string

func (*CreateNoticesReply) Unmarshal

func (m *CreateNoticesReply) Unmarshal(dAtA []byte) error

func (*CreateNoticesReply) XXX_DiscardUnknown

func (m *CreateNoticesReply) XXX_DiscardUnknown()

func (*CreateNoticesReply) XXX_Marshal

func (m *CreateNoticesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CreateNoticesReply) XXX_Merge

func (dst *CreateNoticesReply) XXX_Merge(src proto.Message)

func (*CreateNoticesReply) XXX_Size

func (m *CreateNoticesReply) XXX_Size() int

func (*CreateNoticesReply) XXX_Unmarshal

func (m *CreateNoticesReply) XXX_Unmarshal(b []byte) error

type CreateNoticesReq

type CreateNoticesReq struct {
	Notices              []*NoticeBase `protobuf:"bytes,1,rep,name=notices" json:"notices" form:"notices" validate:"required"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (*CreateNoticesReq) Descriptor

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

func (*CreateNoticesReq) Marshal

func (m *CreateNoticesReq) Marshal() (dAtA []byte, err error)

func (*CreateNoticesReq) MarshalTo

func (m *CreateNoticesReq) MarshalTo(dAtA []byte) (int, error)

func (*CreateNoticesReq) ProtoMessage

func (*CreateNoticesReq) ProtoMessage()

func (*CreateNoticesReq) Reset

func (m *CreateNoticesReq) Reset()

func (*CreateNoticesReq) Size

func (m *CreateNoticesReq) Size() (n int)

func (*CreateNoticesReq) String

func (m *CreateNoticesReq) String() string

func (*CreateNoticesReq) Unmarshal

func (m *CreateNoticesReq) Unmarshal(dAtA []byte) error

func (*CreateNoticesReq) XXX_DiscardUnknown

func (m *CreateNoticesReq) XXX_DiscardUnknown()

func (*CreateNoticesReq) XXX_Marshal

func (m *CreateNoticesReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CreateNoticesReq) XXX_Merge

func (dst *CreateNoticesReq) XXX_Merge(src proto.Message)

func (*CreateNoticesReq) XXX_Size

func (m *CreateNoticesReq) XXX_Size() int

func (*CreateNoticesReq) XXX_Unmarshal

func (m *CreateNoticesReq) XXX_Unmarshal(b []byte) error

type GetUnreadInfoRequest

type GetUnreadInfoRequest struct {
	// 用户mid
	Mid                  int64    `protobuf:"varint,1,opt,name=mid,proto3" json:"mid" form:"mid" validate:"required"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*GetUnreadInfoRequest) Descriptor

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

func (*GetUnreadInfoRequest) Marshal

func (m *GetUnreadInfoRequest) Marshal() (dAtA []byte, err error)

func (*GetUnreadInfoRequest) MarshalTo

func (m *GetUnreadInfoRequest) MarshalTo(dAtA []byte) (int, error)

func (*GetUnreadInfoRequest) ProtoMessage

func (*GetUnreadInfoRequest) ProtoMessage()

func (*GetUnreadInfoRequest) Reset

func (m *GetUnreadInfoRequest) Reset()

func (*GetUnreadInfoRequest) Size

func (m *GetUnreadInfoRequest) Size() (n int)

func (*GetUnreadInfoRequest) String

func (m *GetUnreadInfoRequest) String() string

func (*GetUnreadInfoRequest) Unmarshal

func (m *GetUnreadInfoRequest) Unmarshal(dAtA []byte) error

func (*GetUnreadInfoRequest) XXX_DiscardUnknown

func (m *GetUnreadInfoRequest) XXX_DiscardUnknown()

func (*GetUnreadInfoRequest) XXX_Marshal

func (m *GetUnreadInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*GetUnreadInfoRequest) XXX_Merge

func (dst *GetUnreadInfoRequest) XXX_Merge(src proto.Message)

func (*GetUnreadInfoRequest) XXX_Size

func (m *GetUnreadInfoRequest) XXX_Size() int

func (*GetUnreadInfoRequest) XXX_Unmarshal

func (m *GetUnreadInfoRequest) XXX_Unmarshal(b []byte) error

type ListNoticesReply

type ListNoticesReply struct {
	// 用户mid
	Mid                  int64         `protobuf:"varint,1,opt,name=mid,proto3" json:"mid"`
	List                 []*NoticeBase `protobuf:"bytes,2,rep,name=list" json:"list,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (*ListNoticesReply) Descriptor

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

func (*ListNoticesReply) Marshal

func (m *ListNoticesReply) Marshal() (dAtA []byte, err error)

func (*ListNoticesReply) MarshalTo

func (m *ListNoticesReply) MarshalTo(dAtA []byte) (int, error)

func (*ListNoticesReply) ProtoMessage

func (*ListNoticesReply) ProtoMessage()

func (*ListNoticesReply) Reset

func (m *ListNoticesReply) Reset()

func (*ListNoticesReply) Size

func (m *ListNoticesReply) Size() (n int)

func (*ListNoticesReply) String

func (m *ListNoticesReply) String() string

func (*ListNoticesReply) Unmarshal

func (m *ListNoticesReply) Unmarshal(dAtA []byte) error

func (*ListNoticesReply) XXX_DiscardUnknown

func (m *ListNoticesReply) XXX_DiscardUnknown()

func (*ListNoticesReply) XXX_Marshal

func (m *ListNoticesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ListNoticesReply) XXX_Merge

func (dst *ListNoticesReply) XXX_Merge(src proto.Message)

func (*ListNoticesReply) XXX_Size

func (m *ListNoticesReply) XXX_Size() int

func (*ListNoticesReply) XXX_Unmarshal

func (m *ListNoticesReply) XXX_Unmarshal(b []byte) error

type ListNoticesReq

type ListNoticesReq struct {
	// 用户mid
	Mid                  int64    `protobuf:"varint,1,opt,name=mid,proto3" json:"mid" form:"mid" validate:"required"`
	NoticeType           int32    `protobuf:"varint,2,opt,name=notice_type,json=noticeType,proto3" json:"notice_type" form:"notice_type" validate:"required"`
	CursorId             int64    `protobuf:"varint,3,opt,name=cursor_id,json=cursorId,proto3" json:"cursor_id" form:"cursor_id"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*ListNoticesReq) Descriptor

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

func (*ListNoticesReq) Marshal

func (m *ListNoticesReq) Marshal() (dAtA []byte, err error)

func (*ListNoticesReq) MarshalTo

func (m *ListNoticesReq) MarshalTo(dAtA []byte) (int, error)

func (*ListNoticesReq) ProtoMessage

func (*ListNoticesReq) ProtoMessage()

func (*ListNoticesReq) Reset

func (m *ListNoticesReq) Reset()

func (*ListNoticesReq) Size

func (m *ListNoticesReq) Size() (n int)

func (*ListNoticesReq) String

func (m *ListNoticesReq) String() string

func (*ListNoticesReq) Unmarshal

func (m *ListNoticesReq) Unmarshal(dAtA []byte) error

func (*ListNoticesReq) XXX_DiscardUnknown

func (m *ListNoticesReq) XXX_DiscardUnknown()

func (*ListNoticesReq) XXX_Marshal

func (m *ListNoticesReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ListNoticesReq) XXX_Merge

func (dst *ListNoticesReq) XXX_Merge(src proto.Message)

func (*ListNoticesReq) XXX_Size

func (m *ListNoticesReq) XXX_Size() int

func (*ListNoticesReq) XXX_Unmarshal

func (m *ListNoticesReq) XXX_Unmarshal(b []byte) error

type NoticeBase

type NoticeBase struct {
	Id                   int64                       `protobuf:"varint,1,opt,name=id,proto3" json:"id"`
	Mid                  int64                       `protobuf:"varint,2,opt,name=mid,proto3" json:"mid" form:"mid" validate:"required"`
	ActionMid            int64                       `protobuf:"varint,3,opt,name=action_mid,json=actionMid,proto3" json:"action_mid" form:"action_mid"`
	SvId                 int64                       `protobuf:"varint,4,opt,name=sv_id,json=svId,proto3" json:"svid" form:"svid"`
	Title                string                      `protobuf:"bytes,5,opt,name=title,proto3" json:"title" form:"title"`
	Text                 string                      `protobuf:"bytes,6,opt,name=text,proto3" json:"text" form:"text"`
	JumpUrl              string                      `protobuf:"bytes,7,opt,name=jump_url,json=jumpUrl,proto3" json:"jump_url" form:"jump_url"`
	NoticeType           int32                       `protobuf:"varint,8,opt,name=notice_type,json=noticeType,proto3" json:"notice_type" form:"notice_type" validate:"required"`
	BizType              int32                       `protobuf:"varint,9,opt,name=biz_type,json=bizType,proto3" json:"biz_type" form:"biz_type"`
	BizId                int64                       `protobuf:"varint,10,opt,name=biz_id,json=bizId,proto3" json:"biz_id" form:"biz_id"`
	NoticeTime           go_common_library_time.Time `protobuf:"varint,11,opt,name=notice_time,json=noticeTime,proto3,casttype=go-common/library/time.Time" json:"notice_time"`
	Buvid                string                      `protobuf:"bytes,12,opt,name=buvid,proto3" json:"buvid" form:"buvid"`
	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
	XXX_unrecognized     []byte                      `json:"-"`
	XXX_sizecache        int32                       `json:"-"`
}

func (*NoticeBase) Descriptor

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

func (*NoticeBase) Marshal

func (m *NoticeBase) Marshal() (dAtA []byte, err error)

func (*NoticeBase) MarshalTo

func (m *NoticeBase) MarshalTo(dAtA []byte) (int, error)

func (*NoticeBase) ProtoMessage

func (*NoticeBase) ProtoMessage()

func (*NoticeBase) Reset

func (m *NoticeBase) Reset()

func (*NoticeBase) Size

func (m *NoticeBase) Size() (n int)

func (*NoticeBase) String

func (m *NoticeBase) String() string

func (*NoticeBase) Unmarshal

func (m *NoticeBase) Unmarshal(dAtA []byte) error

func (*NoticeBase) XXX_DiscardUnknown

func (m *NoticeBase) XXX_DiscardUnknown()

func (*NoticeBase) XXX_Marshal

func (m *NoticeBase) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*NoticeBase) XXX_Merge

func (dst *NoticeBase) XXX_Merge(src proto.Message)

func (*NoticeBase) XXX_Size

func (m *NoticeBase) XXX_Size() int

func (*NoticeBase) XXX_Unmarshal

func (m *NoticeBase) XXX_Unmarshal(b []byte) error

type NoticeClient

type NoticeClient interface {
	// 获取所有通知类型的未读数
	GetUnreadInfo(ctx context.Context, in *GetUnreadInfoRequest, opts ...grpc.CallOption) (*UnreadInfo, error)
	// 获取通知列表
	ListNotices(ctx context.Context, in *ListNoticesReq, opts ...grpc.CallOption) (*ListNoticesReply, error)
	// 批量创建消息
	CreateNotice(ctx context.Context, in *NoticeBase, opts ...grpc.CallOption) (*empty.Empty, error)
	// 推送回调
	PushCallback(ctx context.Context, in *PushCallbackRequest, opts ...grpc.CallOption) (*empty.Empty, error)
	// Push的login接口
	PushLogin(ctx context.Context, in *UserPushDev, opts ...grpc.CallOption) (*empty.Empty, error)
	// Push的logout接口
	PushLogout(ctx context.Context, in *UserPushDev, opts ...grpc.CallOption) (*empty.Empty, error)
}

NoticeClient is the client API for Notice service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewNoticeClient

func NewNoticeClient(cc *grpc.ClientConn) NoticeClient

type NoticeServer

type NoticeServer interface {
	// 获取所有通知类型的未读数
	GetUnreadInfo(context.Context, *GetUnreadInfoRequest) (*UnreadInfo, error)
	// 获取通知列表
	ListNotices(context.Context, *ListNoticesReq) (*ListNoticesReply, error)
	// 批量创建消息
	CreateNotice(context.Context, *NoticeBase) (*empty.Empty, error)
	// 推送回调
	PushCallback(context.Context, *PushCallbackRequest) (*empty.Empty, error)
	// Push的login接口
	PushLogin(context.Context, *UserPushDev) (*empty.Empty, error)
	// Push的logout接口
	PushLogout(context.Context, *UserPushDev) (*empty.Empty, error)
}

NoticeServer is the server API for Notice service.

type PushCallbackRequest

type PushCallbackRequest struct {
	Tid                  string   `protobuf:"bytes,1,opt,name=tid,proto3" json:"tid" form:"tid" validate:"required"`
	Nid                  string   `protobuf:"bytes,2,opt,name=nid,proto3" json:"nid" form:"nid" validate:"required"`
	Mid                  int64    `protobuf:"varint,3,opt,name=mid,proto3" json:"mid" form:"mid"`
	Buvid                string   `protobuf:"bytes,4,opt,name=buvid,proto3" json:"buvid" form:"buvid"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*PushCallbackRequest) Descriptor

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

func (*PushCallbackRequest) Marshal

func (m *PushCallbackRequest) Marshal() (dAtA []byte, err error)

func (*PushCallbackRequest) MarshalTo

func (m *PushCallbackRequest) MarshalTo(dAtA []byte) (int, error)

func (*PushCallbackRequest) ProtoMessage

func (*PushCallbackRequest) ProtoMessage()

func (*PushCallbackRequest) Reset

func (m *PushCallbackRequest) Reset()

func (*PushCallbackRequest) Size

func (m *PushCallbackRequest) Size() (n int)

func (*PushCallbackRequest) String

func (m *PushCallbackRequest) String() string

func (*PushCallbackRequest) Unmarshal

func (m *PushCallbackRequest) Unmarshal(dAtA []byte) error

func (*PushCallbackRequest) XXX_DiscardUnknown

func (m *PushCallbackRequest) XXX_DiscardUnknown()

func (*PushCallbackRequest) XXX_Marshal

func (m *PushCallbackRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PushCallbackRequest) XXX_Merge

func (dst *PushCallbackRequest) XXX_Merge(src proto.Message)

func (*PushCallbackRequest) XXX_Size

func (m *PushCallbackRequest) XXX_Size() int

func (*PushCallbackRequest) XXX_Unmarshal

func (m *PushCallbackRequest) XXX_Unmarshal(b []byte) error

type UnreadInfo

type UnreadInfo struct {
	// 用户mid
	List                 []*UnreadItem `protobuf:"bytes,1,rep,name=list" json:"list,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (*UnreadInfo) Descriptor

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

func (*UnreadInfo) Marshal

func (m *UnreadInfo) Marshal() (dAtA []byte, err error)

func (*UnreadInfo) MarshalTo

func (m *UnreadInfo) MarshalTo(dAtA []byte) (int, error)

func (*UnreadInfo) ProtoMessage

func (*UnreadInfo) ProtoMessage()

func (*UnreadInfo) Reset

func (m *UnreadInfo) Reset()

func (*UnreadInfo) Size

func (m *UnreadInfo) Size() (n int)

func (*UnreadInfo) String

func (m *UnreadInfo) String() string

func (*UnreadInfo) Unmarshal

func (m *UnreadInfo) Unmarshal(dAtA []byte) error

func (*UnreadInfo) XXX_DiscardUnknown

func (m *UnreadInfo) XXX_DiscardUnknown()

func (*UnreadInfo) XXX_Marshal

func (m *UnreadInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*UnreadInfo) XXX_Merge

func (dst *UnreadInfo) XXX_Merge(src proto.Message)

func (*UnreadInfo) XXX_Size

func (m *UnreadInfo) XXX_Size() int

func (*UnreadInfo) XXX_Unmarshal

func (m *UnreadInfo) XXX_Unmarshal(b []byte) error

type UnreadItem

type UnreadItem struct {
	NoticeType           int32    `protobuf:"varint,1,opt,name=notice_type,json=noticeType,proto3" json:"notice_type"`
	UnreadNum            int64    `protobuf:"varint,2,opt,name=unread_num,json=unreadNum,proto3" json:"unread_num"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*UnreadItem) Descriptor

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

func (*UnreadItem) Marshal

func (m *UnreadItem) Marshal() (dAtA []byte, err error)

func (*UnreadItem) MarshalTo

func (m *UnreadItem) MarshalTo(dAtA []byte) (int, error)

func (*UnreadItem) ProtoMessage

func (*UnreadItem) ProtoMessage()

func (*UnreadItem) Reset

func (m *UnreadItem) Reset()

func (*UnreadItem) Size

func (m *UnreadItem) Size() (n int)

func (*UnreadItem) String

func (m *UnreadItem) String() string

func (*UnreadItem) Unmarshal

func (m *UnreadItem) Unmarshal(dAtA []byte) error

func (*UnreadItem) XXX_DiscardUnknown

func (m *UnreadItem) XXX_DiscardUnknown()

func (*UnreadItem) XXX_Marshal

func (m *UnreadItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*UnreadItem) XXX_Merge

func (dst *UnreadItem) XXX_Merge(src proto.Message)

func (*UnreadItem) XXX_Size

func (m *UnreadItem) XXX_Size() int

func (*UnreadItem) XXX_Unmarshal

func (m *UnreadItem) XXX_Unmarshal(b []byte) error

type UserPushDev

type UserPushDev struct {
	Id                   int64                       `protobuf:"varint,1,opt,name=id,proto3" json:"id"`
	Mid                  int64                       `protobuf:"varint,2,opt,name=mid,proto3" json:"mid" form:"mid"`
	RegisterId           string                      `protobuf:"bytes,3,opt,name=register_id,json=registerId,proto3" json:"register_id" form:"register_id"`
	Buvid                string                      `protobuf:"bytes,4,opt,name=buvid,proto3" json:"buvid" form:"buvid"`
	Sdk                  int8                        `protobuf:"varint,5,opt,name=sdk,proto3,casttype=int8" json:"sdk" form:"sdk"`
	Platform             int8                        `protobuf:"varint,6,opt,name=platform,proto3,casttype=int8" json:"platform" form:"platform"`
	State                int8                        `protobuf:"varint,7,opt,name=state,proto3,casttype=int8" json:"state" form:"state"`
	LastLoginTime        go_common_library_time.Time `` /* 153-byte string literal not displayed */
	Ctime                go_common_library_time.Time `protobuf:"varint,9,opt,name=ctime,proto3,casttype=go-common/library/time.Time" json:"ctime"`
	Mtime                go_common_library_time.Time `protobuf:"varint,10,opt,name=mtime,proto3,casttype=go-common/library/time.Time" json:"mtime"`
	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
	XXX_unrecognized     []byte                      `json:"-"`
	XXX_sizecache        int32                       `json:"-"`
}

func (*UserPushDev) Descriptor

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

func (*UserPushDev) Marshal

func (m *UserPushDev) Marshal() (dAtA []byte, err error)

func (*UserPushDev) MarshalTo

func (m *UserPushDev) MarshalTo(dAtA []byte) (int, error)

func (*UserPushDev) ProtoMessage

func (*UserPushDev) ProtoMessage()

func (*UserPushDev) Reset

func (m *UserPushDev) Reset()

func (*UserPushDev) Size

func (m *UserPushDev) Size() (n int)

func (*UserPushDev) String

func (m *UserPushDev) String() string

func (*UserPushDev) Unmarshal

func (m *UserPushDev) Unmarshal(dAtA []byte) error

func (*UserPushDev) XXX_DiscardUnknown

func (m *UserPushDev) XXX_DiscardUnknown()

func (*UserPushDev) XXX_Marshal

func (m *UserPushDev) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*UserPushDev) XXX_Merge

func (dst *UserPushDev) XXX_Merge(src proto.Message)

func (*UserPushDev) XXX_Size

func (m *UserPushDev) XXX_Size() int

func (*UserPushDev) XXX_Unmarshal

func (m *UserPushDev) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

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