mc_player

package
v0.0.0-...-5b44b94 Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	McPlayerSearchRequest_FilterMethod_name = map[int32]string{
		0: "NONE",
		1: "ONLINE",
		2: "FRIENDS",
	}
	McPlayerSearchRequest_FilterMethod_value = map[string]int32{
		"NONE":    0,
		"ONLINE":  1,
		"FRIENDS": 2,
	}
)

Enum value maps for McPlayerSearchRequest_FilterMethod.

View Source
var File_mc_player_proto protoreflect.FileDescriptor
View Source
var McPlayer_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "towerdefence.cc.service.mc_player.McPlayer",
	HandlerType: (*McPlayerServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetPlayer",
			Handler:    _McPlayer_GetPlayer_Handler,
		},
		{
			MethodName: "GetPlayers",
			Handler:    _McPlayer_GetPlayers_Handler,
		},
		{
			MethodName: "GetPlayerByUsername",
			Handler:    _McPlayer_GetPlayerByUsername_Handler,
		},
		{
			MethodName: "SearchPlayersByUsername",
			Handler:    _McPlayer_SearchPlayersByUsername_Handler,
		},
		{
			MethodName: "GetPlayerSessions",
			Handler:    _McPlayer_GetPlayerSessions_Handler,
		},
		{
			MethodName: "OnPlayerLogin",
			Handler:    _McPlayer_OnPlayerLogin_Handler,
		},
		{
			MethodName: "OnPlayerDisconnect",
			Handler:    _McPlayer_OnPlayerDisconnect_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "mc_player.proto",
}

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

Functions

func RegisterMcPlayerServer

func RegisterMcPlayerServer(s grpc.ServiceRegistrar, srv McPlayerServer)

Types

type McPageablePlayerRequest

type McPageablePlayerRequest struct {
	PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"`
	Page     uint32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	Size     uint32 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
	// contains filtered or unexported fields
}

func (*McPageablePlayerRequest) Descriptor deprecated

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

Deprecated: Use McPageablePlayerRequest.ProtoReflect.Descriptor instead.

func (*McPageablePlayerRequest) GetPage

func (x *McPageablePlayerRequest) GetPage() uint32

func (*McPageablePlayerRequest) GetPlayerId

func (x *McPageablePlayerRequest) GetPlayerId() string

func (*McPageablePlayerRequest) GetSize

func (x *McPageablePlayerRequest) GetSize() uint32

func (*McPageablePlayerRequest) ProtoMessage

func (*McPageablePlayerRequest) ProtoMessage()

func (*McPageablePlayerRequest) ProtoReflect

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

func (*McPageablePlayerRequest) Reset

func (x *McPageablePlayerRequest) Reset()

func (*McPageablePlayerRequest) String

func (x *McPageablePlayerRequest) String() string

type McPlayerClient

type McPlayerClient interface {
	GetPlayer(ctx context.Context, in *PlayerRequest, opts ...grpc.CallOption) (*PlayerResponse, error)
	GetPlayers(ctx context.Context, in *PlayersRequest, opts ...grpc.CallOption) (*PlayersResponse, error)
	GetPlayerByUsername(ctx context.Context, in *PlayerUsernameRequest, opts ...grpc.CallOption) (*PlayerResponse, error)
	SearchPlayersByUsername(ctx context.Context, in *McPlayerSearchRequest, opts ...grpc.CallOption) (*PlayerSearchResponse, error)
	GetPlayerSessions(ctx context.Context, in *McPageablePlayerRequest, opts ...grpc.CallOption) (*PlayerSessionsResponse, error)
	OnPlayerLogin(ctx context.Context, in *McPlayerLoginRequest, opts ...grpc.CallOption) (*PlayerLoginResponse, error)
	OnPlayerDisconnect(ctx context.Context, in *McPlayerDisconnectRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
}

McPlayerClient is the client API for McPlayer 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.

func NewMcPlayerClient

func NewMcPlayerClient(cc grpc.ClientConnInterface) McPlayerClient

type McPlayerDisconnectRequest

type McPlayerDisconnectRequest struct {
	PlayerId  string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"`
	SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	// contains filtered or unexported fields
}

func (*McPlayerDisconnectRequest) Descriptor deprecated

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

Deprecated: Use McPlayerDisconnectRequest.ProtoReflect.Descriptor instead.

func (*McPlayerDisconnectRequest) GetPlayerId

func (x *McPlayerDisconnectRequest) GetPlayerId() string

func (*McPlayerDisconnectRequest) GetSessionId

func (x *McPlayerDisconnectRequest) GetSessionId() string

func (*McPlayerDisconnectRequest) ProtoMessage

func (*McPlayerDisconnectRequest) ProtoMessage()

func (*McPlayerDisconnectRequest) ProtoReflect

func (*McPlayerDisconnectRequest) Reset

func (x *McPlayerDisconnectRequest) Reset()

func (*McPlayerDisconnectRequest) String

func (x *McPlayerDisconnectRequest) String() string

type McPlayerLoginRequest

type McPlayerLoginRequest struct {
	PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"`
	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	// contains filtered or unexported fields
}

func (*McPlayerLoginRequest) Descriptor deprecated

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

Deprecated: Use McPlayerLoginRequest.ProtoReflect.Descriptor instead.

func (*McPlayerLoginRequest) GetPlayerId

func (x *McPlayerLoginRequest) GetPlayerId() string

func (*McPlayerLoginRequest) GetUsername

func (x *McPlayerLoginRequest) GetUsername() string

func (*McPlayerLoginRequest) ProtoMessage

func (*McPlayerLoginRequest) ProtoMessage()

func (*McPlayerLoginRequest) ProtoReflect

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

func (*McPlayerLoginRequest) Reset

func (x *McPlayerLoginRequest) Reset()

func (*McPlayerLoginRequest) String

func (x *McPlayerLoginRequest) String() string

type McPlayerSearchRequest

type McPlayerSearchRequest struct {
	IssuerId       string `protobuf:"bytes,1,opt,name=issuer_id,json=issuerId,proto3" json:"issuer_id,omitempty"`
	SearchUsername string `protobuf:"bytes,2,opt,name=search_username,json=searchUsername,proto3" json:"search_username,omitempty"`
	// starts with 0
	Page         uint32                             `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"`
	PageSize     uint32                             `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	FilterMethod McPlayerSearchRequest_FilterMethod `` /* 172-byte string literal not displayed */
	// contains filtered or unexported fields
}

func (*McPlayerSearchRequest) Descriptor deprecated

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

Deprecated: Use McPlayerSearchRequest.ProtoReflect.Descriptor instead.

func (*McPlayerSearchRequest) GetFilterMethod

func (*McPlayerSearchRequest) GetIssuerId

func (x *McPlayerSearchRequest) GetIssuerId() string

func (*McPlayerSearchRequest) GetPage

func (x *McPlayerSearchRequest) GetPage() uint32

func (*McPlayerSearchRequest) GetPageSize

func (x *McPlayerSearchRequest) GetPageSize() uint32

func (*McPlayerSearchRequest) GetSearchUsername

func (x *McPlayerSearchRequest) GetSearchUsername() string

func (*McPlayerSearchRequest) ProtoMessage

func (*McPlayerSearchRequest) ProtoMessage()

func (*McPlayerSearchRequest) ProtoReflect

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

func (*McPlayerSearchRequest) Reset

func (x *McPlayerSearchRequest) Reset()

func (*McPlayerSearchRequest) String

func (x *McPlayerSearchRequest) String() string

type McPlayerSearchRequest_FilterMethod

type McPlayerSearchRequest_FilterMethod int32
const (
	McPlayerSearchRequest_NONE    McPlayerSearchRequest_FilterMethod = 0
	McPlayerSearchRequest_ONLINE  McPlayerSearchRequest_FilterMethod = 1
	McPlayerSearchRequest_FRIENDS McPlayerSearchRequest_FilterMethod = 2
)

func (McPlayerSearchRequest_FilterMethod) Descriptor

func (McPlayerSearchRequest_FilterMethod) Enum

func (McPlayerSearchRequest_FilterMethod) EnumDescriptor deprecated

func (McPlayerSearchRequest_FilterMethod) EnumDescriptor() ([]byte, []int)

Deprecated: Use McPlayerSearchRequest_FilterMethod.Descriptor instead.

func (McPlayerSearchRequest_FilterMethod) Number

func (McPlayerSearchRequest_FilterMethod) String

func (McPlayerSearchRequest_FilterMethod) Type

type McPlayerServer

type McPlayerServer interface {
	GetPlayer(context.Context, *PlayerRequest) (*PlayerResponse, error)
	GetPlayers(context.Context, *PlayersRequest) (*PlayersResponse, error)
	GetPlayerByUsername(context.Context, *PlayerUsernameRequest) (*PlayerResponse, error)
	SearchPlayersByUsername(context.Context, *McPlayerSearchRequest) (*PlayerSearchResponse, error)
	GetPlayerSessions(context.Context, *McPageablePlayerRequest) (*PlayerSessionsResponse, error)
	OnPlayerLogin(context.Context, *McPlayerLoginRequest) (*PlayerLoginResponse, error)
	OnPlayerDisconnect(context.Context, *McPlayerDisconnectRequest) (*emptypb.Empty, error)
	// contains filtered or unexported methods
}

McPlayerServer is the server API for McPlayer service. All implementations must embed UnimplementedMcPlayerServer for forward compatibility

type PlayerLoginResponse

type PlayerLoginResponse struct {
	SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayerLoginResponse) Descriptor deprecated

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

Deprecated: Use PlayerLoginResponse.ProtoReflect.Descriptor instead.

func (*PlayerLoginResponse) GetSessionId

func (x *PlayerLoginResponse) GetSessionId() string

func (*PlayerLoginResponse) ProtoMessage

func (*PlayerLoginResponse) ProtoMessage()

func (*PlayerLoginResponse) ProtoReflect

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

func (*PlayerLoginResponse) Reset

func (x *PlayerLoginResponse) Reset()

func (*PlayerLoginResponse) String

func (x *PlayerLoginResponse) String() string

type PlayerRequest

type PlayerRequest struct {
	PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayerRequest) Descriptor deprecated

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

Deprecated: Use PlayerRequest.ProtoReflect.Descriptor instead.

func (*PlayerRequest) GetPlayerId

func (x *PlayerRequest) GetPlayerId() string

func (*PlayerRequest) ProtoMessage

func (*PlayerRequest) ProtoMessage()

func (*PlayerRequest) ProtoReflect

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

func (*PlayerRequest) Reset

func (x *PlayerRequest) Reset()

func (*PlayerRequest) String

func (x *PlayerRequest) String() string

type PlayerResponse

type PlayerResponse struct {
	Id              string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	CurrentUsername string                 `protobuf:"bytes,2,opt,name=current_username,json=currentUsername,proto3" json:"current_username,omitempty"`
	FirstLogin      *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=first_login,json=firstLogin,proto3" json:"first_login,omitempty"`
	// If they are currently online this will not be up to date
	LastOnline      *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_online,json=lastOnline,proto3" json:"last_online,omitempty"`
	CurrentlyOnline bool                   `protobuf:"varint,5,opt,name=currently_online,json=currentlyOnline,proto3" json:"currently_online,omitempty"`
	CurrentSession  *PlayerSession         `protobuf:"bytes,6,opt,name=current_session,json=currentSession,proto3,oneof" json:"current_session,omitempty"`
	PlayTime        *durationpb.Duration   `protobuf:"bytes,7,opt,name=play_time,json=playTime,proto3" json:"play_time,omitempty"`
	OtpEnabled      bool                   `protobuf:"varint,8,opt,name=otp_enabled,json=otpEnabled,proto3" json:"otp_enabled,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayerResponse) Descriptor deprecated

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

Deprecated: Use PlayerResponse.ProtoReflect.Descriptor instead.

func (*PlayerResponse) GetCurrentSession

func (x *PlayerResponse) GetCurrentSession() *PlayerSession

func (*PlayerResponse) GetCurrentUsername

func (x *PlayerResponse) GetCurrentUsername() string

func (*PlayerResponse) GetCurrentlyOnline

func (x *PlayerResponse) GetCurrentlyOnline() bool

func (*PlayerResponse) GetFirstLogin

func (x *PlayerResponse) GetFirstLogin() *timestamppb.Timestamp

func (*PlayerResponse) GetId

func (x *PlayerResponse) GetId() string

func (*PlayerResponse) GetLastOnline

func (x *PlayerResponse) GetLastOnline() *timestamppb.Timestamp

func (*PlayerResponse) GetOtpEnabled

func (x *PlayerResponse) GetOtpEnabled() bool

func (*PlayerResponse) GetPlayTime

func (x *PlayerResponse) GetPlayTime() *durationpb.Duration

func (*PlayerResponse) ProtoMessage

func (*PlayerResponse) ProtoMessage()

func (*PlayerResponse) ProtoReflect

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

func (*PlayerResponse) Reset

func (x *PlayerResponse) Reset()

func (*PlayerResponse) String

func (x *PlayerResponse) String() string

type PlayerSearchResponse

type PlayerSearchResponse struct {
	Players       []*PlayerResponse `protobuf:"bytes,1,rep,name=players,proto3" json:"players,omitempty"`
	Page          uint32            `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	TotalElements uint32            `protobuf:"varint,3,opt,name=total_elements,json=totalElements,proto3" json:"total_elements,omitempty"`
	TotalPages    uint32            `protobuf:"varint,4,opt,name=total_pages,json=totalPages,proto3" json:"total_pages,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayerSearchResponse) Descriptor deprecated

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

Deprecated: Use PlayerSearchResponse.ProtoReflect.Descriptor instead.

func (*PlayerSearchResponse) GetPage

func (x *PlayerSearchResponse) GetPage() uint32

func (*PlayerSearchResponse) GetPlayers

func (x *PlayerSearchResponse) GetPlayers() []*PlayerResponse

func (*PlayerSearchResponse) GetTotalElements

func (x *PlayerSearchResponse) GetTotalElements() uint32

func (*PlayerSearchResponse) GetTotalPages

func (x *PlayerSearchResponse) GetTotalPages() uint32

func (*PlayerSearchResponse) ProtoMessage

func (*PlayerSearchResponse) ProtoMessage()

func (*PlayerSearchResponse) ProtoReflect

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

func (*PlayerSearchResponse) Reset

func (x *PlayerSearchResponse) Reset()

func (*PlayerSearchResponse) String

func (x *PlayerSearchResponse) String() string

type PlayerSession

type PlayerSession struct {
	SessionId  string                 `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	LoginTime  *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=login_time,json=loginTime,proto3" json:"login_time,omitempty"`
	LogoutTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=logout_time,json=logoutTime,proto3,oneof" json:"logout_time,omitempty"` // will be null if the player is currently online for this session
	// contains filtered or unexported fields
}

func (*PlayerSession) Descriptor deprecated

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

Deprecated: Use PlayerSession.ProtoReflect.Descriptor instead.

func (*PlayerSession) GetLoginTime

func (x *PlayerSession) GetLoginTime() *timestamppb.Timestamp

func (*PlayerSession) GetLogoutTime

func (x *PlayerSession) GetLogoutTime() *timestamppb.Timestamp

func (*PlayerSession) GetSessionId

func (x *PlayerSession) GetSessionId() string

func (*PlayerSession) ProtoMessage

func (*PlayerSession) ProtoMessage()

func (*PlayerSession) ProtoReflect

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

func (*PlayerSession) Reset

func (x *PlayerSession) Reset()

func (*PlayerSession) String

func (x *PlayerSession) String() string

type PlayerSessionsResponse

type PlayerSessionsResponse struct {
	Sessions      []*PlayerSession `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"`
	Page          uint32           `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	TotalElements uint64           `protobuf:"varint,3,opt,name=total_elements,json=totalElements,proto3" json:"total_elements,omitempty"`
	TotalPages    uint32           `protobuf:"varint,4,opt,name=total_pages,json=totalPages,proto3" json:"total_pages,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayerSessionsResponse) Descriptor deprecated

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

Deprecated: Use PlayerSessionsResponse.ProtoReflect.Descriptor instead.

func (*PlayerSessionsResponse) GetPage

func (x *PlayerSessionsResponse) GetPage() uint32

func (*PlayerSessionsResponse) GetSessions

func (x *PlayerSessionsResponse) GetSessions() []*PlayerSession

func (*PlayerSessionsResponse) GetTotalElements

func (x *PlayerSessionsResponse) GetTotalElements() uint64

func (*PlayerSessionsResponse) GetTotalPages

func (x *PlayerSessionsResponse) GetTotalPages() uint32

func (*PlayerSessionsResponse) ProtoMessage

func (*PlayerSessionsResponse) ProtoMessage()

func (*PlayerSessionsResponse) ProtoReflect

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

func (*PlayerSessionsResponse) Reset

func (x *PlayerSessionsResponse) Reset()

func (*PlayerSessionsResponse) String

func (x *PlayerSessionsResponse) String() string

type PlayerUsernameRequest

type PlayerUsernameRequest struct {
	Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // ignore case when using the username
	// contains filtered or unexported fields
}

func (*PlayerUsernameRequest) Descriptor deprecated

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

Deprecated: Use PlayerUsernameRequest.ProtoReflect.Descriptor instead.

func (*PlayerUsernameRequest) GetUsername

func (x *PlayerUsernameRequest) GetUsername() string

func (*PlayerUsernameRequest) ProtoMessage

func (*PlayerUsernameRequest) ProtoMessage()

func (*PlayerUsernameRequest) ProtoReflect

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

func (*PlayerUsernameRequest) Reset

func (x *PlayerUsernameRequest) Reset()

func (*PlayerUsernameRequest) String

func (x *PlayerUsernameRequest) String() string

type PlayersRequest

type PlayersRequest struct {
	PlayerIds []string `protobuf:"bytes,1,rep,name=player_ids,json=playerIds,proto3" json:"player_ids,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayersRequest) Descriptor deprecated

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

Deprecated: Use PlayersRequest.ProtoReflect.Descriptor instead.

func (*PlayersRequest) GetPlayerIds

func (x *PlayersRequest) GetPlayerIds() []string

func (*PlayersRequest) ProtoMessage

func (*PlayersRequest) ProtoMessage()

func (*PlayersRequest) ProtoReflect

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

func (*PlayersRequest) Reset

func (x *PlayersRequest) Reset()

func (*PlayersRequest) String

func (x *PlayersRequest) String() string

type PlayersResponse

type PlayersResponse struct {
	Players []*PlayerResponse `protobuf:"bytes,1,rep,name=players,proto3" json:"players,omitempty"`
	// contains filtered or unexported fields
}

func (*PlayersResponse) Descriptor deprecated

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

Deprecated: Use PlayersResponse.ProtoReflect.Descriptor instead.

func (*PlayersResponse) GetPlayers

func (x *PlayersResponse) GetPlayers() []*PlayerResponse

func (*PlayersResponse) ProtoMessage

func (*PlayersResponse) ProtoMessage()

func (*PlayersResponse) ProtoReflect

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

func (*PlayersResponse) Reset

func (x *PlayersResponse) Reset()

func (*PlayersResponse) String

func (x *PlayersResponse) String() string

type UnimplementedMcPlayerServer

type UnimplementedMcPlayerServer struct {
}

UnimplementedMcPlayerServer must be embedded to have forward compatible implementations.

func (UnimplementedMcPlayerServer) GetPlayer

func (UnimplementedMcPlayerServer) GetPlayerByUsername

func (UnimplementedMcPlayerServer) GetPlayerSessions

func (UnimplementedMcPlayerServer) GetPlayers

func (UnimplementedMcPlayerServer) OnPlayerDisconnect

func (UnimplementedMcPlayerServer) OnPlayerLogin

func (UnimplementedMcPlayerServer) SearchPlayersByUsername

type UnsafeMcPlayerServer

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

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

Jump to

Keyboard shortcuts

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