feat: game lobby service
This commit is contained in:
@@ -154,6 +154,29 @@ func encodePayload(notificationType intentstream.NotificationType, payloadJSON s
|
||||
return wrapPayloadEncoding(transcoder.LobbyMembershipRejectedEventToPayload(&transcoder.LobbyMembershipRejectedEvent{
|
||||
GameID: payload.GameID,
|
||||
}))
|
||||
case intentstream.NotificationTypeLobbyMembershipBlocked:
|
||||
var payload struct {
|
||||
GameID string `json:"game_id"`
|
||||
MembershipUserID string `json:"membership_user_id"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
if err := decodePayload(payloadJSON, &payload); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if payload.GameID == "" {
|
||||
return nil, errors.New("payload_encoding_failed: game_id is empty")
|
||||
}
|
||||
if payload.MembershipUserID == "" {
|
||||
return nil, errors.New("payload_encoding_failed: membership_user_id is empty")
|
||||
}
|
||||
if payload.Reason == "" {
|
||||
return nil, errors.New("payload_encoding_failed: reason is empty")
|
||||
}
|
||||
return wrapPayloadEncoding(transcoder.LobbyMembershipBlockedEventToPayload(&transcoder.LobbyMembershipBlockedEvent{
|
||||
GameID: payload.GameID,
|
||||
MembershipUserID: payload.MembershipUserID,
|
||||
Reason: payload.Reason,
|
||||
}))
|
||||
case intentstream.NotificationTypeLobbyInviteCreated:
|
||||
var payload struct {
|
||||
GameID string `json:"game_id"`
|
||||
@@ -190,6 +213,42 @@ func encodePayload(notificationType intentstream.NotificationType, payloadJSON s
|
||||
GameID: payload.GameID,
|
||||
InviteeUserID: payload.InviteeUserID,
|
||||
}))
|
||||
case intentstream.NotificationTypeLobbyRaceNameRegistrationEligible:
|
||||
var payload struct {
|
||||
GameID string `json:"game_id"`
|
||||
RaceName string `json:"race_name"`
|
||||
EligibleUntilMs int64 `json:"eligible_until_ms"`
|
||||
}
|
||||
if err := decodePayload(payloadJSON, &payload); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if payload.GameID == "" {
|
||||
return nil, errors.New("payload_encoding_failed: game_id is empty")
|
||||
}
|
||||
if payload.RaceName == "" {
|
||||
return nil, errors.New("payload_encoding_failed: race_name is empty")
|
||||
}
|
||||
if payload.EligibleUntilMs < 1 {
|
||||
return nil, errors.New("payload_encoding_failed: eligible_until_ms must be at least 1")
|
||||
}
|
||||
return wrapPayloadEncoding(transcoder.LobbyRaceNameRegistrationEligibleEventToPayload(&transcoder.LobbyRaceNameRegistrationEligibleEvent{
|
||||
GameID: payload.GameID,
|
||||
RaceName: payload.RaceName,
|
||||
EligibleUntilMs: payload.EligibleUntilMs,
|
||||
}))
|
||||
case intentstream.NotificationTypeLobbyRaceNameRegistered:
|
||||
var payload struct {
|
||||
RaceName string `json:"race_name"`
|
||||
}
|
||||
if err := decodePayload(payloadJSON, &payload); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if payload.RaceName == "" {
|
||||
return nil, errors.New("payload_encoding_failed: race_name is empty")
|
||||
}
|
||||
return wrapPayloadEncoding(transcoder.LobbyRaceNameRegisteredEventToPayload(&transcoder.LobbyRaceNameRegisteredEvent{
|
||||
RaceName: payload.RaceName,
|
||||
}))
|
||||
default:
|
||||
return nil, fmt.Errorf("payload_encoding_failed: notification type %q does not support push", notificationType)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user