feat: update to latest NEX libs

This commit is contained in:
Jonathan Barrow
2025-02-15 23:31:32 -05:00
parent 3377ef25ea
commit 8432cfd6d5
82 changed files with 563 additions and 610 deletions

View File

@@ -8,9 +8,8 @@ import (
)
// GetFriendMiis returns the Mii of all friends
func GetFriendMiis(pids []uint32) (*types.List[*friends_3ds_types.FriendMii], error) {
friendMiis := types.NewList[*friends_3ds_types.FriendMii]()
friendMiis.Type = friends_3ds_types.NewFriendMii()
func GetFriendMiis(pids []uint32) (types.List[friends_3ds_types.FriendMii], error) {
friendMiis := types.NewList[friends_3ds_types.FriendMii]()
rows, err := database.Manager.Query(`
SELECT pid, mii_name, mii_profanity, mii_character_set, mii_data, mii_changed FROM "3ds".user_data WHERE pid=ANY($1::int[])`, pq.Array(pids))
@@ -34,8 +33,8 @@ func GetFriendMiis(pids []uint32) (*types.List[*friends_3ds_types.FriendMii], er
mii := friends_3ds_types.NewMii()
mii.Name = types.NewString(miiName)
mii.ProfanityFlag = types.NewPrimitiveBool(miiProfanity)
mii.CharacterSet = types.NewPrimitiveU8(miiCharacterSet)
mii.ProfanityFlag = types.NewBool(miiProfanity)
mii.CharacterSet = types.NewUInt8(miiCharacterSet)
mii.MiiData = types.NewBuffer(miiData)
friendMii := friends_3ds_types.NewFriendMii()
@@ -43,7 +42,7 @@ func GetFriendMiis(pids []uint32) (*types.List[*friends_3ds_types.FriendMii], er
friendMii.Mii = mii
friendMii.ModifiedAt = types.NewDateTime(changedTime)
friendMiis.Append(friendMii)
friendMiis = append(friendMiis, friendMii)
}
return friendMiis, nil

View File

@@ -8,9 +8,8 @@ import (
)
// GetFriendPersistentInfos returns the persistent information of all friends
func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (*types.List[*friends_3ds_types.FriendPersistentInfo], error) {
persistentInfos := types.NewList[*friends_3ds_types.FriendPersistentInfo]()
persistentInfos.Type = friends_3ds_types.NewFriendPersistentInfo()
func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (types.List[friends_3ds_types.FriendPersistentInfo], error) {
persistentInfos := types.NewList[friends_3ds_types.FriendPersistentInfo]()
rows, err := database.Manager.Query(`
SELECT pid, region, area, language, country, favorite_title, favorite_title_version, comment, comment_changed, last_online, mii_changed FROM "3ds".user_data WHERE pid=ANY($1::int[])`, pq.Array(pids))
@@ -53,22 +52,22 @@ func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (*types.List[*fri
return persistentInfos, err
}
gameKey.TitleID = types.NewPrimitiveU64(titleID)
gameKey.TitleVersion = types.NewPrimitiveU16(titleVersion)
gameKey.TitleID = types.NewUInt64(titleID)
gameKey.TitleVersion = types.NewUInt16(titleVersion)
persistentInfo.PID = types.NewPID(uint64(pid))
persistentInfo.Region = types.NewPrimitiveU8(region)
persistentInfo.Country = types.NewPrimitiveU8(country)
persistentInfo.Area = types.NewPrimitiveU8(area)
persistentInfo.Language = types.NewPrimitiveU8(language)
persistentInfo.Platform = types.NewPrimitiveU8(2) // * Always 3DS
persistentInfo.Region = types.NewUInt8(region)
persistentInfo.Country = types.NewUInt8(country)
persistentInfo.Area = types.NewUInt8(area)
persistentInfo.Language = types.NewUInt8(language)
persistentInfo.Platform = types.NewUInt8(2) // * Always 3DS
persistentInfo.GameKey = gameKey
persistentInfo.Message = types.NewString(message)
persistentInfo.MessageUpdatedAt = types.NewDateTime(msgUpdateTime)
persistentInfo.MiiModifiedAt = types.NewDateTime(miiModifiedAtTime)
persistentInfo.LastOnline = types.NewDateTime(lastOnlineTime)
persistentInfos.Append(persistentInfo)
persistentInfos = append(persistentInfos, persistentInfo)
}
return persistentInfos, nil

View File

@@ -9,9 +9,8 @@ import (
)
// GetUserFriends returns all friend relationships of a user
func GetUserFriends(pid uint32) (*types.List[*friends_3ds_types.FriendRelationship], error) {
friendRelationships := types.NewList[*friends_3ds_types.FriendRelationship]()
friendRelationships.Type = friends_3ds_types.NewFriendRelationship()
func GetUserFriends(pid uint32) (types.List[friends_3ds_types.FriendRelationship], error) {
friendRelationships := types.NewList[friends_3ds_types.FriendRelationship]()
rows, err := database.Manager.Query("SELECT user2_pid, type FROM \"3ds\".friendships WHERE user1_pid=$1 AND type=1 LIMIT 100", pid)
if err != nil {
@@ -34,11 +33,11 @@ func GetUserFriends(pid uint32) (*types.List[*friends_3ds_types.FriendRelationsh
relationship := friends_3ds_types.NewFriendRelationship()
relationship.LFC = types.NewPrimitiveU64(0)
relationship.LFC = types.NewUInt64(0)
relationship.PID = types.NewPID(uint64(pid))
relationship.RelationshipType = types.NewPrimitiveU8(relationshipType)
relationship.RelationshipType = types.NewUInt8(relationshipType)
friendRelationships.Append(relationship)
friendRelationships = append(friendRelationships, relationship)
}
return friendRelationships, nil

View File

@@ -7,38 +7,36 @@ import (
)
// SaveFriendship saves a friend relationship for a user
func SaveFriendship(senderPID uint32, recipientPID uint32) (*friends_3ds_types.FriendRelationship, error) {
func SaveFriendship(senderPID uint32, recipientPID uint32) (friends_3ds_types.FriendRelationship, error) {
friendRelationship := friends_3ds_types.NewFriendRelationship()
friendRelationship.PID = types.NewPID(uint64(recipientPID))
friendRelationship.LFC = types.NewPrimitiveU64(0)
friendRelationship.RelationshipType = types.NewPrimitiveU8(0) // * Incomplete
// * Ensure that we inputted a valid user.
var found bool
row, err := database.Manager.QueryRow(`SELECT COUNT(*) FROM "3ds".user_data WHERE pid=$1 LIMIT 1`, recipientPID)
if err != nil {
return nil, err
return friendRelationship, err
}
err = row.Scan(&found)
if err != nil {
return nil, err
return friendRelationship, err
}
if !found {
friendRelationship.RelationshipType = types.NewPrimitiveU8(2) // * Non-existent
friendRelationship.PID = types.NewPID(uint64(recipientPID))
friendRelationship.RelationshipType = types.NewUInt8(2) // * Non-existent
return friendRelationship, nil
}
// * Get the other side's relationship, we need to know if we've already got one sent to us.
row, err = database.Manager.QueryRow(`SELECT COUNT(*) FROM "3ds".friendships WHERE user1_pid=$1 AND user2_pid=$2 AND type=0 LIMIT 1`, recipientPID, senderPID)
if err != nil {
return nil, err
return friendRelationship, err
}
err = row.Scan(&found)
if err != nil {
return nil, err
return friendRelationship, err
}
if !found {
@@ -48,12 +46,14 @@ func SaveFriendship(senderPID uint32, recipientPID uint32) (*friends_3ds_types.F
ON CONFLICT (user1_pid, user2_pid)
DO NOTHING`, senderPID, recipientPID)
if err != nil {
return nil, err
return friendRelationship, err
}
friendRelationship.PID = types.NewPID(uint64(recipientPID))
return friendRelationship, nil
}
acceptedTime := types.NewDateTime(0).Now().Value()
acceptedTime := uint64(types.NewDateTime(0).Now())
// * We need to have two relationships for both sides as friend relationships are not one single object.
_, err = database.Manager.Exec(`
@@ -64,7 +64,7 @@ func SaveFriendship(senderPID uint32, recipientPID uint32) (*friends_3ds_types.F
date = $3,
type = 1`, senderPID, recipientPID, acceptedTime)
if err != nil {
return nil, err
return friendRelationship, err
}
_, err = database.Manager.Exec(`
@@ -75,10 +75,11 @@ func SaveFriendship(senderPID uint32, recipientPID uint32) (*friends_3ds_types.F
date = $3,
type = 1`, recipientPID, senderPID, acceptedTime)
if err != nil {
return nil, err
return friendRelationship, err
}
friendRelationship.RelationshipType = types.NewPrimitiveU8(1) // * Complete
friendRelationship.PID = types.NewPID(uint64(recipientPID))
friendRelationship.RelationshipType = types.NewUInt8(1) // * Complete
return friendRelationship, nil
}

View File

@@ -7,7 +7,7 @@ import (
// UpdateUserComment updates a user's comment
func UpdateUserComment(pid uint32, message string) error {
changed := types.NewDateTime(0).Now().Value()
changed := types.NewDateTime(0).Now()
_, err := database.Manager.Exec(`
INSERT INTO "3ds".user_data (pid, comment, comment_changed)
@@ -15,7 +15,7 @@ func UpdateUserComment(pid uint32, message string) error {
ON CONFLICT (pid)
DO UPDATE SET
comment = $2,
comment_changed = $3`, pid, message, changed)
comment_changed = $3`, pid, message, uint64(changed))
if err != nil {
return err

View File

@@ -6,14 +6,14 @@ import (
)
// UpdateUserFavoriteGame updates a user's favorite game
func UpdateUserFavoriteGame(pid uint32, gameKey *friends_3ds_types.GameKey) error {
func UpdateUserFavoriteGame(pid uint32, gameKey friends_3ds_types.GameKey) error {
_, err := database.Manager.Exec(`
INSERT INTO "3ds".user_data (pid, favorite_title, favorite_title_version)
VALUES ($1, $2, $3)
ON CONFLICT (pid)
DO UPDATE SET
favorite_title = $2,
favorite_title_version = $3`, pid, gameKey.TitleID.Value, gameKey.TitleVersion.Value)
favorite_title_version = $3`, pid, uint64(gameKey.TitleID), uint16(gameKey.TitleVersion))
if err != nil {
return err

View File

@@ -8,7 +8,7 @@ import (
)
// UpdateUserLastOnlineTime updates a user's last online time
func UpdateUserLastOnlineTime(pid uint32, lastOnline *types.DateTime) error {
func UpdateUserLastOnlineTime(pid uint32, lastOnline types.DateTime) error {
var showOnline bool
row, err := database.Manager.QueryRow(`SELECT show_online FROM "3ds".user_data WHERE pid=$1`, pid)
@@ -30,7 +30,7 @@ func UpdateUserLastOnlineTime(pid uint32, lastOnline *types.DateTime) error {
VALUES ($1, $2)
ON CONFLICT (pid)
DO UPDATE SET
last_online = $2`, pid, lastOnline.Value())
last_online = $2`, pid, uint64(lastOnline))
if err != nil {
return err
}

View File

@@ -7,7 +7,7 @@ import (
)
// UpdateUserMii updates a user's mii
func UpdateUserMii(pid uint32, mii *friends_3ds_types.Mii) error {
func UpdateUserMii(pid uint32, mii friends_3ds_types.Mii) error {
_, err := database.Manager.Exec(`
INSERT INTO "3ds".user_data (pid, mii_name, mii_profanity, mii_character_set, mii_data, mii_changed)
VALUES ($1, $2, $3, $4, $5, $6)
@@ -17,7 +17,7 @@ func UpdateUserMii(pid uint32, mii *friends_3ds_types.Mii) error {
mii_profanity = $3,
mii_character_set = $4,
mii_data = $5,
mii_changed = $6`, pid, mii.Name.Value, mii.ProfanityFlag.Value, mii.CharacterSet.Value, mii.MiiData.Value, types.NewDateTime(0).Now().Value())
mii_changed = $6`, pid, string(mii.Name), bool(mii.ProfanityFlag), uint8(mii.CharacterSet), []byte(mii.MiiData), uint64(types.NewDateTime(0).Now()))
if err != nil {
return err

View File

@@ -6,7 +6,7 @@ import (
)
// UpdateUserProfile updates a user's profile
func UpdateUserProfile(pid uint32, profileData *friends_3ds_types.MyProfile) error {
func UpdateUserProfile(pid uint32, profileData friends_3ds_types.MyProfile) error {
_, err := database.Manager.Exec(`
INSERT INTO "3ds".user_data (pid, region, area, language, country)
VALUES ($1, $2, $3, $4, $5)
@@ -15,7 +15,7 @@ func UpdateUserProfile(pid uint32, profileData *friends_3ds_types.MyProfile) err
region = $2,
area = $3,
language = $4,
country = $5`, pid, profileData.Region.Value, profileData.Area.Value, profileData.Language.Value, profileData.Country.Value)
country = $5`, pid, uint8(profileData.Region), uint8(profileData.Area), uint8(profileData.Language), uint8(profileData.Country))
if err != nil {
return err

View File

@@ -10,21 +10,21 @@ import (
)
// AcceptFriendRequestAndReturnFriendInfo accepts the given friend reuqest and returns the friend's information
func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wiiu_types.FriendInfo, error) {
func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (friends_wiiu_types.FriendInfo, error) {
var senderPID uint32
var recipientPID uint32
row, err := database.Manager.QueryRow(`SELECT sender_pid, recipient_pid FROM wiiu.friend_requests WHERE id=$1`, friendRequestID)
if err != nil {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
err = row.Scan(&senderPID, &recipientPID)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrFriendRequestNotFound
return friends_wiiu_types.NewFriendInfo(), database.ErrFriendRequestNotFound
} else {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
}
@@ -41,9 +41,9 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
ON CONFLICT (user1_pid, user2_pid)
DO UPDATE SET
date = $3,
active = true`, senderPID, recipientPID, acceptedTime.Value())
active = true`, senderPID, recipientPID, uint64(acceptedTime))
if err != nil {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
_, err = database.Manager.Exec(`
@@ -52,14 +52,14 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
ON CONFLICT (user1_pid, user2_pid)
DO UPDATE SET
date = $3,
active = true`, recipientPID, senderPID, acceptedTime.Value())
active = true`, recipientPID, senderPID, uint64(acceptedTime))
if err != nil {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
err = SetFriendRequestAccepted(friendRequestID)
if err != nil {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
friendInfo := friends_wiiu_types.NewFriendInfo()
@@ -68,21 +68,21 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
if ok && connectedUser != nil {
// * Online
friendInfo.Presence = connectedUser.PresenceV2.Copy().(*friends_wiiu_types.NintendoPresenceV2)
friendInfo.Presence = connectedUser.PresenceV2.Copy().(friends_wiiu_types.NintendoPresenceV2)
} else {
// * Offline
var lastOnlineTime uint64
row, err = database.Manager.QueryRow(`SELECT last_online FROM wiiu.user_data WHERE pid=$1`, senderPID)
if err != nil {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
err = row.Scan(&lastOnlineTime)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrPIDNotFound
return friends_wiiu_types.NewFriendInfo(), database.ErrPIDNotFound
} else {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
}
@@ -91,13 +91,13 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
status, err := GetUserComment(senderPID)
if err != nil {
return nil, err
return friends_wiiu_types.NewFriendInfo(), err
}
friendInfo.Status = status
friendInfo.BecameFriend = acceptedTime
friendInfo.LastOnline = lastOnline // TODO - Change this
friendInfo.Unknown = types.NewPrimitiveU64(0)
friendInfo.Unknown = types.NewUInt64(0)
return friendInfo, nil
}

View File

@@ -9,9 +9,8 @@ import (
)
// GetUserBlockList returns a user's blacklist
func GetUserBlockList(pid uint32) (*types.List[*friends_wiiu_types.BlacklistedPrincipal], error) {
blockList := types.NewList[*friends_wiiu_types.BlacklistedPrincipal]()
blockList.Type = friends_wiiu_types.NewBlacklistedPrincipal()
func GetUserBlockList(pid uint32) (types.List[friends_wiiu_types.BlacklistedPrincipal], error) {
blockList := types.NewList[friends_wiiu_types.BlacklistedPrincipal]()
rows, err := database.Manager.Query(`
SELECT
@@ -54,25 +53,25 @@ func GetUserBlockList(pid uint32) (*types.List[*friends_wiiu_types.BlacklistedPr
mii := friends_wiiu_types.NewMiiV2()
mii.Name = types.NewString(miiName)
mii.Unknown1 = types.NewPrimitiveU8(miiUnknown1)
mii.Unknown2 = types.NewPrimitiveU8(miiUnknown2)
mii.Unknown1 = types.NewUInt8(miiUnknown1)
mii.Unknown2 = types.NewUInt8(miiUnknown2)
mii.MiiData = types.NewBuffer(miiData)
mii.Datetime = types.NewDateTime(miiDatetime)
principalBasicInfo := friends_wiiu_types.NewPrincipalBasicInfo()
principalBasicInfo.PID = types.NewPID(uint64(blockedPID))
principalBasicInfo.NNID = types.NewString(blockedNNID)
principalBasicInfo.Unknown = types.NewPrimitiveU8(unknown)
principalBasicInfo.Unknown = types.NewUInt8(unknown)
principalBasicInfo.Mii = mii
blacklistPrincipal := friends_wiiu_types.NewBlacklistedPrincipal()
blacklistPrincipal.PrincipalBasicInfo = principalBasicInfo
blacklistPrincipal.GameKey = friends_wiiu_types.NewGameKey()
blacklistPrincipal.GameKey.TitleID = types.NewPrimitiveU64(titleID)
blacklistPrincipal.GameKey.TitleVersion = types.NewPrimitiveU16(titleVersion)
blacklistPrincipal.GameKey.TitleID = types.NewUInt64(titleID)
blacklistPrincipal.GameKey.TitleVersion = types.NewUInt16(titleVersion)
blacklistPrincipal.BlackListedSince = types.NewDateTime(date)
blockList.Append(blacklistPrincipal)
blockList = append(blockList, blacklistPrincipal)
}
return blockList, nil

View File

@@ -9,24 +9,23 @@ import (
)
// GetUserComment returns a user's comment
func GetUserComment(pid uint32) (*friends_wiiu_types.Comment, error) {
func GetUserComment(pid uint32) (friends_wiiu_types.Comment, error) {
comment := friends_wiiu_types.NewComment()
comment.Unknown = types.NewPrimitiveU8(0)
var contents string
var changed uint64 = 0
row, err := database.Manager.QueryRow(`SELECT comment, comment_changed FROM wiiu.user_data WHERE pid=$1`, pid)
if err != nil {
return nil, err
return comment, err
}
err = row.Scan(&contents, &changed)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrPIDNotFound
return comment, database.ErrPIDNotFound
} else {
return nil, err
return comment, err
}
}

View File

@@ -10,9 +10,8 @@ import (
)
// GetUserFriendList returns a user's friend list
func GetUserFriendList(pid uint32) (*types.List[*friends_wiiu_types.FriendInfo], error) {
friendList := types.NewList[*friends_wiiu_types.FriendInfo]()
friendList.Type = friends_wiiu_types.NewFriendInfo()
func GetUserFriendList(pid uint32) (types.List[friends_wiiu_types.FriendInfo], error) {
friendList := types.NewList[friends_wiiu_types.FriendInfo]()
rows, err := database.Manager.Query(`
SELECT
@@ -62,26 +61,26 @@ func GetUserFriendList(pid uint32) (*types.List[*friends_wiiu_types.FriendInfo],
}
comment := friends_wiiu_types.NewComment()
comment.Unknown = types.NewPrimitiveU8(0)
comment.Unknown = types.NewUInt8(0)
comment.Contents = types.NewString(commentContents)
comment.LastChanged = types.NewDateTime(commentChanged)
mii := friends_wiiu_types.NewMiiV2()
mii.Name = types.NewString(miiName)
mii.Unknown1 = types.NewPrimitiveU8(miiUnknown1)
mii.Unknown2 = types.NewPrimitiveU8(miiUnknown2)
mii.Unknown1 = types.NewUInt8(miiUnknown1)
mii.Unknown2 = types.NewUInt8(miiUnknown2)
mii.MiiData = types.NewBuffer(miiData)
mii.Datetime = types.NewDateTime(miiDatetime)
principalBasicInfo := friends_wiiu_types.NewPrincipalBasicInfo()
principalBasicInfo.PID = types.NewPID(uint64(friendPID))
principalBasicInfo.NNID = types.NewString(nnid)
principalBasicInfo.Unknown = types.NewPrimitiveU8(unknown)
principalBasicInfo.Unknown = types.NewUInt8(unknown)
principalBasicInfo.Mii = mii
nnaInfo := friends_wiiu_types.NewNNAInfo()
nnaInfo.Unknown1 = types.NewPrimitiveU8(unknown1)
nnaInfo.Unknown2 = types.NewPrimitiveU8(unknown2)
nnaInfo.Unknown1 = types.NewUInt8(unknown1)
nnaInfo.Unknown2 = types.NewUInt8(unknown2)
nnaInfo.PrincipalBasicInfo = principalBasicInfo
friendInfo := friends_wiiu_types.NewFriendInfo()
@@ -91,7 +90,7 @@ func GetUserFriendList(pid uint32) (*types.List[*friends_wiiu_types.FriendInfo],
connectedUser, ok := globals.ConnectedUsers.Get(friendPID)
if ok && connectedUser != nil {
// * Online
friendInfo.Presence = connectedUser.PresenceV2.Copy().(*friends_wiiu_types.NintendoPresenceV2)
friendInfo.Presence = connectedUser.PresenceV2.Copy().(friends_wiiu_types.NintendoPresenceV2)
} else {
// * Offline
lastOnline = types.NewDateTime(lastOnlineTime) // TODO - Change this
@@ -100,9 +99,9 @@ func GetUserFriendList(pid uint32) (*types.List[*friends_wiiu_types.FriendInfo],
friendInfo.Status = comment
friendInfo.BecameFriend = types.NewDateTime(date)
friendInfo.LastOnline = lastOnline
friendInfo.Unknown = types.NewPrimitiveU64(0)
friendInfo.Unknown = types.NewUInt64(0)
friendList.Append(friendInfo)
friendList = append(friendList, friendInfo)
}
return friendList, nil

View File

@@ -10,9 +10,8 @@ import (
)
// GetUserFriendRequestsIn returns the friend requests received by a user
func GetUserFriendRequestsIn(pid uint32) (*types.List[*friends_wiiu_types.FriendRequest], error) {
friendRequests := types.NewList[*friends_wiiu_types.FriendRequest]()
friendRequests.Type = friends_wiiu_types.NewFriendRequest()
func GetUserFriendRequestsIn(pid uint32) (types.List[friends_wiiu_types.FriendRequest], error) {
friendRequests := types.NewList[friends_wiiu_types.FriendRequest]()
rows, err := database.Manager.Query(`
SELECT
@@ -58,36 +57,36 @@ func GetUserFriendRequestsIn(pid uint32) (*types.List[*friends_wiiu_types.Friend
mii := friends_wiiu_types.NewMiiV2()
mii.Name = types.NewString(miiName)
mii.Unknown1 = types.NewPrimitiveU8(miiUnknown1)
mii.Unknown2 = types.NewPrimitiveU8(miiUnknown2)
mii.Unknown1 = types.NewUInt8(miiUnknown1)
mii.Unknown2 = types.NewUInt8(miiUnknown2)
mii.MiiData = types.NewBuffer(miiData)
mii.Datetime = types.NewDateTime(miiDatetime)
principalBasicInfo := friends_wiiu_types.NewPrincipalBasicInfo()
principalBasicInfo.PID = types.NewPID(uint64(senderPID))
principalBasicInfo.NNID = types.NewString(senderNNID)
principalBasicInfo.Unknown = types.NewPrimitiveU8(unknown)
principalBasicInfo.Unknown = types.NewUInt8(unknown)
principalBasicInfo.Mii = mii
friendRequest := friends_wiiu_types.NewFriendRequest()
friendRequest.PrincipalInfo = principalBasicInfo
friendRequest.Message = friends_wiiu_types.NewFriendRequestMessage()
friendRequest.Message.FriendRequestID = types.NewPrimitiveU64(id)
friendRequest.Message.Received = types.NewPrimitiveBool(received)
friendRequest.Message.Unknown2 = types.NewPrimitiveU8(1)
friendRequest.Message.FriendRequestID = types.NewUInt64(id)
friendRequest.Message.Received = types.NewBool(received)
friendRequest.Message.Unknown2 = types.NewUInt8(1)
friendRequest.Message.Message = types.NewString(message)
friendRequest.Message.Unknown3 = types.NewPrimitiveU8(0)
friendRequest.Message.Unknown3 = types.NewUInt8(0)
friendRequest.Message.Unknown4 = types.NewString("")
friendRequest.Message.GameKey = friends_wiiu_types.NewGameKey()
friendRequest.Message.GameKey.TitleID = types.NewPrimitiveU64(0)
friendRequest.Message.GameKey.TitleVersion = types.NewPrimitiveU16(0)
friendRequest.Message.GameKey.TitleID = types.NewUInt64(0)
friendRequest.Message.GameKey.TitleVersion = types.NewUInt16(0)
friendRequest.Message.Unknown5 = types.NewDateTime(134222053376) // * idk what this value means but its always this
friendRequest.Message.ExpiresOn = types.NewDateTime(expiresOn)
friendRequest.SentOn = types.NewDateTime(sentOn)
// * Filter out expired requests
if friendRequest.Message.ExpiresOn.Standard().After(time.Now()) {
friendRequests.Append(friendRequest)
friendRequests = append(friendRequests, friendRequest)
}
}

View File

@@ -9,9 +9,8 @@ import (
)
// GetUserFriendRequestsOut returns the friend requests sent by a user
func GetUserFriendRequestsOut(pid uint32) (*types.List[*friends_wiiu_types.FriendRequest], error) {
friendRequests := types.NewList[*friends_wiiu_types.FriendRequest]()
friendRequests.Type = friends_wiiu_types.NewFriendRequest()
func GetUserFriendRequestsOut(pid uint32) (types.List[friends_wiiu_types.FriendRequest], error) {
friendRequests := types.NewList[friends_wiiu_types.FriendRequest]()
rows, err := database.Manager.Query(`
SELECT
@@ -57,34 +56,34 @@ func GetUserFriendRequestsOut(pid uint32) (*types.List[*friends_wiiu_types.Frien
mii := friends_wiiu_types.NewMiiV2()
mii.Name = types.NewString(miiName)
mii.Unknown1 = types.NewPrimitiveU8(miiUnknown1)
mii.Unknown2 = types.NewPrimitiveU8(miiUnknown2)
mii.Unknown1 = types.NewUInt8(miiUnknown1)
mii.Unknown2 = types.NewUInt8(miiUnknown2)
mii.MiiData = types.NewBuffer(miiData)
mii.Datetime = types.NewDateTime(miiDatetime)
principalBasicInfo := friends_wiiu_types.NewPrincipalBasicInfo()
principalBasicInfo.PID = types.NewPID(uint64(recipientPID))
principalBasicInfo.NNID = types.NewString(recipientNNID)
principalBasicInfo.Unknown = types.NewPrimitiveU8(unknown)
principalBasicInfo.Unknown = types.NewUInt8(unknown)
principalBasicInfo.Mii = mii
friendRequest := friends_wiiu_types.NewFriendRequest()
friendRequest.PrincipalInfo = principalBasicInfo
friendRequest.Message = friends_wiiu_types.NewFriendRequestMessage()
friendRequest.Message.FriendRequestID = types.NewPrimitiveU64(id)
friendRequest.Message.Received = types.NewPrimitiveBool(received)
friendRequest.Message.Unknown2 = types.NewPrimitiveU8(1)
friendRequest.Message.FriendRequestID = types.NewUInt64(id)
friendRequest.Message.Received = types.NewBool(received)
friendRequest.Message.Unknown2 = types.NewUInt8(1)
friendRequest.Message.Message = types.NewString(message)
friendRequest.Message.Unknown3 = types.NewPrimitiveU8(0)
friendRequest.Message.Unknown3 = types.NewUInt8(0)
friendRequest.Message.Unknown4 = types.NewString("")
friendRequest.Message.GameKey = friends_wiiu_types.NewGameKey()
friendRequest.Message.GameKey.TitleID = types.NewPrimitiveU64(0)
friendRequest.Message.GameKey.TitleVersion = types.NewPrimitiveU16(0)
friendRequest.Message.GameKey.TitleID = types.NewUInt64(0)
friendRequest.Message.GameKey.TitleVersion = types.NewUInt16(0)
friendRequest.Message.Unknown5 = types.NewDateTime(134222053376) // * idk what this value means but its always this
friendRequest.Message.ExpiresOn = types.NewDateTime(expiresOn)
friendRequest.SentOn = types.NewDateTime(sentOn)
friendRequests.Append(friendRequest)
friendRequests = append(friendRequests, friendRequest)
}
return friendRequests, nil

View File

@@ -9,7 +9,7 @@ import (
)
// GetUserMii returns the users Mii
func GetUserMii(pid uint32) (*friends_wiiu_types.MiiV2, error) {
func GetUserMii(pid uint32) (friends_wiiu_types.MiiV2, error) {
mii := friends_wiiu_types.NewMiiV2()
var name string
@@ -20,21 +20,21 @@ func GetUserMii(pid uint32) (*friends_wiiu_types.MiiV2, error) {
row, err := database.Manager.QueryRow(`SELECT name, unknown1, unknown2, data, unknown_datetime FROM wiiu.mii WHERE pid=$1`, pid)
if err != nil {
return nil, err
return mii, err
}
err = row.Scan(&name, &unknown1, &unknown2, &data, &datetime)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrPIDNotFound
return mii, database.ErrPIDNotFound
} else {
return nil, err
return mii, err
}
}
mii.Name = types.NewString(name)
mii.Unknown1 = types.NewPrimitiveU8(unknown1)
mii.Unknown2 = types.NewPrimitiveU8(unknown2)
mii.Unknown1 = types.NewUInt8(unknown1)
mii.Unknown2 = types.NewUInt8(unknown2)
mii.MiiData = types.NewBuffer(data)
mii.Datetime = types.NewDateTime(datetime)

View File

@@ -9,7 +9,7 @@ import (
)
// GetUserNetworkAccountInfo returns the users network account info
func GetUserNetworkAccountInfo(pid uint32) (*friends_wiiu_types.NNAInfo, error) {
func GetUserNetworkAccountInfo(pid uint32) (friends_wiiu_types.NNAInfo, error) {
nnaInfo := friends_wiiu_types.NewNNAInfo()
var unknown1 uint8
@@ -17,23 +17,23 @@ func GetUserNetworkAccountInfo(pid uint32) (*friends_wiiu_types.NNAInfo, error)
row, err := database.Manager.QueryRow(`SELECT unknown1, unknown2 FROM wiiu.network_account_info WHERE pid=$1`, pid)
if err != nil {
return nil, err
return nnaInfo, err
}
err = row.Scan(&unknown1, &unknown2)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrPIDNotFound
return nnaInfo, database.ErrPIDNotFound
} else {
return nil, err
return nnaInfo, err
}
}
nnaInfo.Unknown1 = types.NewPrimitiveU8(unknown1)
nnaInfo.Unknown2 = types.NewPrimitiveU8(unknown2)
nnaInfo.Unknown1 = types.NewUInt8(unknown1)
nnaInfo.Unknown2 = types.NewUInt8(unknown2)
nnaInfo.PrincipalBasicInfo, err = GetUserPrincipalBasicInfo(pid)
if err != nil {
return nil, err
return nnaInfo, err
}
return nnaInfo, nil

View File

@@ -6,10 +6,9 @@ import (
)
// GetUserNotifications returns notifications for a user
func GetUserNotifications(pid uint32) *types.List[*friends_wiiu_types.PersistentNotification] {
func GetUserNotifications(pid uint32) types.List[friends_wiiu_types.PersistentNotification] {
// TODO - Do this
notifications := types.NewList[*friends_wiiu_types.PersistentNotification]()
notifications.Type = friends_wiiu_types.NewPersistentNotification()
notifications := types.NewList[friends_wiiu_types.PersistentNotification]()
return notifications
}

View File

@@ -9,7 +9,7 @@ import (
)
// GetUserPrincipalBasicInfo returns the users basic info
func GetUserPrincipalBasicInfo(pid uint32) (*friends_wiiu_types.PrincipalBasicInfo, error) {
func GetUserPrincipalBasicInfo(pid uint32) (friends_wiiu_types.PrincipalBasicInfo, error) {
principalBasicInfo := friends_wiiu_types.NewPrincipalBasicInfo()
var nnid string
@@ -17,24 +17,24 @@ func GetUserPrincipalBasicInfo(pid uint32) (*friends_wiiu_types.PrincipalBasicIn
row, err := database.Manager.QueryRow(`SELECT username, unknown FROM wiiu.principal_basic_info WHERE pid=$1`, pid)
if err != nil {
return nil, err
return principalBasicInfo, err
}
err = row.Scan(&nnid, &unknown)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrPIDNotFound
return principalBasicInfo, database.ErrPIDNotFound
} else {
return nil, err
return principalBasicInfo, err
}
}
principalBasicInfo.PID = types.NewPID(uint64(pid))
principalBasicInfo.NNID = types.NewString(nnid)
principalBasicInfo.Unknown = types.NewPrimitiveU8(unknown)
principalBasicInfo.Unknown = types.NewUInt8(unknown)
principalBasicInfo.Mii, err = GetUserMii(pid)
if err != nil {
return nil, err
return principalBasicInfo, err
}
return principalBasicInfo, nil

View File

@@ -9,7 +9,7 @@ import (
)
// GetUserPrincipalPreference returns the user preferences
func GetUserPrincipalPreference(pid uint32) (*friends_wiiu_types.PrincipalPreference, error) {
func GetUserPrincipalPreference(pid uint32) (friends_wiiu_types.PrincipalPreference, error) {
preference := friends_wiiu_types.NewPrincipalPreference()
var showOnlinePresence bool
@@ -18,21 +18,21 @@ func GetUserPrincipalPreference(pid uint32) (*friends_wiiu_types.PrincipalPrefer
row, err := database.Manager.QueryRow(`SELECT show_online, show_current_game, block_friend_requests FROM wiiu.user_data WHERE pid=$1`, pid)
if err != nil {
return nil, err
return preference, err
}
err = row.Scan(&showOnlinePresence, &showCurrentTitle, &blockFriendRequests)
if err != nil {
if err == sql.ErrNoRows {
return nil, database.ErrPIDNotFound
return preference, database.ErrPIDNotFound
} else {
return nil, err
return preference, err
}
}
preference.ShowOnlinePresence = types.NewPrimitiveBool(showOnlinePresence)
preference.ShowCurrentTitle = types.NewPrimitiveBool(showCurrentTitle)
preference.BlockFriendRequests = types.NewPrimitiveBool(blockFriendRequests)
preference.ShowOnlinePresence = types.NewBool(showOnlinePresence)
preference.ShowCurrentTitle = types.NewBool(showCurrentTitle)
preference.BlockFriendRequests = types.NewBool(blockFriendRequests)
return preference, nil
}

View File

@@ -14,7 +14,7 @@ func SetUserBlocked(blockerPID uint32, blockedPID uint32, titleID uint64, titleV
VALUES ($1, $2, $3, $4, $5)
ON CONFLICT (blocker_pid, blocked_pid)
DO UPDATE SET
date = $5`, blockerPID, blockedPID, titleID, titleVersion, date.Value())
date = $5`, blockerPID, blockedPID, titleID, titleVersion, uint64(date))
if err != nil {
return err
}

View File

@@ -7,7 +7,7 @@ import (
// UpdateUserComment updates a user's comment
func UpdateUserComment(pid uint32, message string) (uint64, error) {
changed := types.NewDateTime(0).Now().Value()
changed := uint64(types.NewDateTime(0).Now())
_, err := database.Manager.Exec(`
INSERT INTO wiiu.user_data (pid, comment, comment_changed)

View File

@@ -6,13 +6,13 @@ import (
)
// UpdateUserLastOnlineTime updates a user's last online time
func UpdateUserLastOnlineTime(pid uint32, lastOnline *types.DateTime) error {
func UpdateUserLastOnlineTime(pid uint32, lastOnline types.DateTime) error {
_, err := database.Manager.Exec(`
INSERT INTO wiiu.user_data (pid, last_online)
VALUES ($1, $2)
ON CONFLICT (pid)
DO UPDATE SET
last_online = $2`, pid, lastOnline.Value())
last_online = $2`, pid, uint64(lastOnline))
if err != nil {
return err

View File

@@ -6,7 +6,7 @@ import (
)
// UpdateUserMii updates the user's Mii
func UpdateUserMii(pid uint32, mii *friends_wiiu_types.MiiV2) error {
func UpdateUserMii(pid uint32, mii friends_wiiu_types.MiiV2) error {
_, err := database.Manager.Exec(`
INSERT INTO wiiu.mii (pid, name, unknown1, unknown2, data, unknown_datetime)
VALUES ($1, $2, $3, $4, $5, $6)
@@ -19,11 +19,11 @@ func UpdateUserMii(pid uint32, mii *friends_wiiu_types.MiiV2) error {
data = $5,
unknown_datetime = $6`,
pid,
mii.Name.Value,
mii.Unknown1.Value,
mii.Unknown2.Value,
mii.MiiData.Value,
mii.Datetime.Value(),
string(mii.Name),
uint8(mii.Unknown1),
uint8(mii.Unknown2),
[]byte(mii.MiiData),
uint64(mii.Datetime),
)
if err != nil {
return err

View File

@@ -7,7 +7,7 @@ import (
)
// UpdateNetworkAccountInfo updates a user's network account information
func UpdateNetworkAccountInfo(pid uint32, nnaInfo *friends_wiiu_types.NNAInfo, birthday *types.DateTime) error {
func UpdateNetworkAccountInfo(pid uint32, nnaInfo friends_wiiu_types.NNAInfo, birthday types.DateTime) error {
_, err := database.Manager.Exec(
`INSERT INTO wiiu.network_account_info (pid, unknown1, unknown2, birthday)
VALUES ($1, $2, $3, $4)
@@ -15,9 +15,9 @@ func UpdateNetworkAccountInfo(pid uint32, nnaInfo *friends_wiiu_types.NNAInfo, b
DO UPDATE
SET unknown1 = $2, unknown2 = $3, birthday = $4`,
pid,
nnaInfo.Unknown1.Value,
nnaInfo.Unknown2.Value,
birthday.Value(),
uint8(nnaInfo.Unknown1),
uint8(nnaInfo.Unknown2),
uint64(birthday),
)
if err != nil {
return err

View File

@@ -6,7 +6,7 @@ import (
)
// UpdateUserPrincipalBasicInfo updates the user's basic info
func UpdateUserPrincipalBasicInfo(pid uint32, principalBasicInfo *friends_wiiu_types.PrincipalBasicInfo) error {
func UpdateUserPrincipalBasicInfo(pid uint32, principalBasicInfo friends_wiiu_types.PrincipalBasicInfo) error {
_, err := database.Manager.Exec(
`INSERT INTO wiiu.principal_basic_info (pid, username, unknown)
VALUES ($1, $2, $3)
@@ -14,8 +14,8 @@ func UpdateUserPrincipalBasicInfo(pid uint32, principalBasicInfo *friends_wiiu_t
DO UPDATE
SET username = $2, unknown = $3`,
pid,
principalBasicInfo.NNID.Value,
principalBasicInfo.Unknown.Value,
string(principalBasicInfo.NNID),
uint8(principalBasicInfo.Unknown),
)
if err != nil {
return err

View File

@@ -6,7 +6,7 @@ import (
)
// UpdateUserPrincipalPreference updates the user preferences
func UpdateUserPrincipalPreference(pid uint32, principalPreference *friends_wiiu_types.PrincipalPreference) error {
func UpdateUserPrincipalPreference(pid uint32, principalPreference friends_wiiu_types.PrincipalPreference) error {
_, err := database.Manager.Exec(`
INSERT INTO wiiu.user_data (pid, show_online, show_current_game, block_friend_requests)
VALUES ($1, $2, $3, $4)
@@ -14,7 +14,7 @@ func UpdateUserPrincipalPreference(pid uint32, principalPreference *friends_wiiu
DO UPDATE SET
show_online = $2,
show_current_game = $3,
block_friend_requests = $4`, pid, principalPreference.ShowOnlinePresence.Value, principalPreference.ShowCurrentTitle.Value, principalPreference.BlockFriendRequests.Value)
block_friend_requests = $4`, pid, bool(principalPreference.ShowOnlinePresence), bool(principalPreference.ShowCurrentTitle), bool(principalPreference.BlockFriendRequests))
if err != nil {
return err

View File

@@ -10,7 +10,7 @@ import (
"google.golang.org/grpc/metadata"
)
func AccountDetailsByPID(pid *types.PID) (*nex.Account, *nex.Error) {
func AccountDetailsByPID(pid types.PID) (*nex.Account, *nex.Error) {
if pid.Equals(AuthenticationServerAccount.PID) {
return AuthenticationServerAccount, nil
}
@@ -25,13 +25,13 @@ func AccountDetailsByPID(pid *types.PID) (*nex.Account, *nex.Error) {
ctx := metadata.NewOutgoingContext(context.Background(), GRPCAccountCommonMetadata)
response, err := GRPCAccountClient.GetNEXPassword(ctx, &pb.GetNEXPasswordRequest{Pid: pid.LegacyValue()})
response, err := GRPCAccountClient.GetNEXPassword(ctx, &pb.GetNEXPasswordRequest{Pid: uint32(pid)})
if err != nil {
Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.RendezVous.InvalidPID, "Invalid PID")
}
username := strconv.Itoa(int(pid.Value()))
username := strconv.Itoa(int(pid))
account := nex.NewAccount(pid, username, response.Password)
return account, nil

38
go.mod
View File

@@ -1,39 +1,41 @@
module github.com/PretendoNetwork/friends
go 1.22.1
go 1.23.0
toolchain go1.23.6
require (
github.com/PretendoNetwork/grpc-go v1.0.2
github.com/PretendoNetwork/nex-go/v2 v2.0.5
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.0.5
github.com/PretendoNetwork/nex-protocols-go/v2 v2.0.3
github.com/PretendoNetwork/nex-go/v2 v2.1.2
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.2.2
github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.0
github.com/PretendoNetwork/plogger-go v1.0.4
github.com/PretendoNetwork/sql-manager v1.0.0
github.com/golang/protobuf v1.5.4
github.com/joho/godotenv v1.5.1
github.com/lib/pq v1.10.9
google.golang.org/grpc v1.65.0
google.golang.org/grpc v1.70.0
)
replace google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240520151616-dc85e6b867a5
require (
github.com/dolthub/maphash v0.1.0 // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/jwalton/go-supportscolor v1.2.0 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/lxzan/gws v1.8.5 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/lxzan/gws v1.8.8 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/rasky/go-lzo v0.0.0-20200203143853-96a758eda86e // indirect
github.com/superwhiskers/crunch/v3 v3.5.7 // indirect
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
golang.org/x/mod v0.19.0 // indirect
golang.org/x/net v0.27.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.22.0 // indirect
golang.org/x/term v0.22.0 // indirect
golang.org/x/text v0.16.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect
google.golang.org/protobuf v1.34.2 // indirect
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f // indirect
golang.org/x/mod v0.23.0 // indirect
golang.org/x/net v0.35.0 // indirect
golang.org/x/sync v0.11.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/term v0.29.0 // indirect
golang.org/x/text v0.22.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b // indirect
google.golang.org/protobuf v1.36.5 // indirect
)

86
go.sum
View File

@@ -1,11 +1,11 @@
github.com/PretendoNetwork/grpc-go v1.0.2 h1:9TvKmX7dCOANyoHEra1MMYqS1N/RGav66TRG4SHInvo=
github.com/PretendoNetwork/grpc-go v1.0.2/go.mod h1:XZjEsij9lL7HJBNkH6JPbBIkUSq/1rjflvjGdv+DAj0=
github.com/PretendoNetwork/nex-go/v2 v2.0.5 h1:S/bYPb2SNUb9MSzai4wlqj/9J1JIiLuMtZcAAbBughM=
github.com/PretendoNetwork/nex-go/v2 v2.0.5/go.mod h1:iW1xjbg/vl2c3uheitUFxGcrt0sxaDxeXR5QqDcyLpI=
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.0.5 h1:17b7vA8wjWLW9JdJTHeOoX2g2e4S/EwA32m9AuPEA80=
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.0.5/go.mod h1:0wDEYxDYbUOjsKjsTUjU0/f3pL1MT54h+tGn4UyeB+A=
github.com/PretendoNetwork/nex-protocols-go/v2 v2.0.3 h1:80CG7f9w/34MN1vAZ1XP3ec4LJ4mqKlkests+HQzrvc=
github.com/PretendoNetwork/nex-protocols-go/v2 v2.0.3/go.mod h1:2UN8khoMDNaeJ4GcIG7ez7MqqmbLfLzbVS6hSa+kGnk=
github.com/PretendoNetwork/nex-go/v2 v2.1.2 h1:OJFAS6U6VNzZ4YzteKqUEZ5aJMwWIHODeRrLwNbN7nw=
github.com/PretendoNetwork/nex-go/v2 v2.1.2/go.mod h1:3LyJzsv3AataJW8D0binp15Q8ZH22MWTYly1VNtXi64=
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.2.2 h1:rBJNZDJ92pa9fU3Og0sanyizJTWnELPoGR0Tjz8zlws=
github.com/PretendoNetwork/nex-protocols-common-go/v2 v2.2.2/go.mod h1:iuNMuBK/zww+44d6ajfLsOusXx/6Llj3zSkmhJwMuuM=
github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.0 h1:abbCXgYN9icR9hmGV9GkuiOvg92+WBeVTnvtiAU06QU=
github.com/PretendoNetwork/nex-protocols-go/v2 v2.2.0/go.mod h1:+soBHmwX6ixGxj6cphLuCvfJqxcZPuowc/5e7Qi9Bz0=
github.com/PretendoNetwork/plogger-go v1.0.4 h1:PF7xHw9eDRHH+RsAP9tmAE7fG0N0p6H4iPwHKnsoXwc=
github.com/PretendoNetwork/plogger-go v1.0.4/go.mod h1:7kD6M4vPq1JL4LTuPg6kuB1OvUBOwQOtAvTaUwMbwvU=
github.com/PretendoNetwork/sql-manager v1.0.0 h1:g0SYpQgi6Kk4ptufrLTSmDxvqaYioTcfXaDH+uXC+a0=
@@ -14,25 +14,30 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dolthub/maphash v0.1.0 h1:bsQ7JsF4FkkWyrP3oCnFJgrCUAFbFf3kOl4L/QxPDyQ=
github.com/dolthub/maphash v0.1.0/go.mod h1:gkg4Ch4CdCDu5h6PMriVLawB7koZ+5ijb9puGMV50a4=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/jwalton/go-supportscolor v1.2.0 h1:g6Ha4u7Vm3LIsQ5wmeBpS4gazu0UP1DRDE8y6bre4H8=
github.com/jwalton/go-supportscolor v1.2.0/go.mod h1:hFVUAZV2cWg+WFFC4v8pT2X/S2qUUBYMioBD9AINXGs=
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lxzan/gws v1.8.5 h1:6x+wW3EHtoGFNeCtZP1OVZ1IHrpZZzDaEjQGg1lUJqU=
github.com/lxzan/gws v1.8.5/go.mod h1:FcGeRMB7HwGuTvMLR24ku0Zx0p6RXqeKASeMc4VYgi4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/lxzan/gws v1.8.8 h1:st193ZG8qN8sSw8/g/UituFhs7etmKzS7jUqhijg5wM=
github.com/lxzan/gws v1.8.8/go.mod h1:FcGeRMB7HwGuTvMLR24ku0Zx0p6RXqeKASeMc4VYgi4=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -43,30 +48,39 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/superwhiskers/crunch/v3 v3.5.7 h1:N9RLxaR65C36i26BUIpzPXGy2f6pQ7wisu2bawbKNqg=
github.com/superwhiskers/crunch/v3 v3.5.7/go.mod h1:4ub2EKgF1MAhTjoOCTU4b9uLMsAweHEa89aRrfAypXA=
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f h1:oFMYAjX0867ZD2jcNiLBrI9BdpmEkvPyi5YrBGXbamg=
golang.org/x/exp v0.0.0-20250215185904-eff6e970281f/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b h1:FQtJ1MxbXoIIrZHZ33M+w5+dAP9o86rgpjoKr/ZmT7k=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk=
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@@ -14,7 +14,7 @@ import (
func (s *gRPCFriendsServer) AcceptFriendRequest(ctx context.Context, in *pb.AcceptFriendRequestRequest) (*pb.AcceptFriendRequestResponse, error) {
friendInfo, err := database_wiiu.AcceptFriendRequestAndReturnFriendInfo(in.GetFriendRequestId())
_, err := database_wiiu.AcceptFriendRequestAndReturnFriendInfo(in.GetFriendRequestId())
if err != nil {
if err == database.ErrFriendRequestNotFound {
return &pb.AcceptFriendRequestResponse{
@@ -35,6 +35,6 @@ func (s *gRPCFriendsServer) AcceptFriendRequest(ctx context.Context, in *pb.Acce
}
return &pb.AcceptFriendRequestResponse{
Success: friendInfo != nil,
Success: err == nil,
}, nil
}

View File

@@ -11,7 +11,6 @@ import (
database_wiiu "github.com/PretendoNetwork/friends/database/wiiu"
"github.com/PretendoNetwork/friends/globals"
pb "github.com/PretendoNetwork/grpc-go/friends"
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func (s *gRPCFriendsServer) GetUserFriendPIDs(ctx context.Context, in *pb.GetUserFriendPIDsRequest) (*pb.GetUserFriendPIDsResponse, error) {
@@ -39,14 +38,11 @@ func (s *gRPCFriendsServer) GetUserFriendPIDs(ctx context.Context, in *pb.GetUse
}
if relationships != nil {
relationships.Each(func(i int, relationship *friends_3ds_types.FriendRelationship) bool {
// * Only add complete relationships to the list
if relationship.RelationshipType.Value == 1 {
pids = append(pids, relationship.PID.LegacyValue())
for _, relationship := range relationships {
if relationship.RelationshipType == 1 {
pids = append(pids, uint32(relationship.PID))
}
return false
})
}
}
return &pb.GetUserFriendPIDsResponse{

View File

@@ -10,7 +10,6 @@ import (
database_wiiu "github.com/PretendoNetwork/friends/database/wiiu"
"github.com/PretendoNetwork/friends/globals"
pb "github.com/PretendoNetwork/grpc-go/friends"
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func (s *gRPCFriendsServer) GetUserFriendRequestsIncoming(ctx context.Context, in *pb.GetUserFriendRequestsIncomingRequest) (*pb.GetUserFriendRequestsIncomingResponse, error) {
@@ -20,23 +19,21 @@ func (s *gRPCFriendsServer) GetUserFriendRequestsIncoming(ctx context.Context, i
return nil, status.Errorf(codes.Internal, "internal server error")
}
friendRequests := make([]*pb.FriendRequest, 0, friendRequestsIn.Length())
friendRequests := make([]*pb.FriendRequest, 0, len(friendRequestsIn))
if friendRequestsIn != nil {
friendRequestsIn.Each(func(i int, friendRequestIn *friends_wiiu_types.FriendRequest) bool {
for _, friendRequestIn := range friendRequestsIn {
friendRequest := &pb.FriendRequest{
Id: friendRequestIn.Message.FriendRequestID.Value,
Sender: friendRequestIn.PrincipalInfo.PID.LegacyValue(),
Id: uint64(friendRequestIn.Message.FriendRequestID),
Sender: uint32(friendRequestIn.PrincipalInfo.PID),
Recipient: in.GetPid(),
Sent: uint64(friendRequestIn.SentOn.Standard().Unix()),
Expires: uint64(friendRequestIn.Message.ExpiresOn.Standard().Unix()),
Message: friendRequestIn.Message.Message.Value,
Message: string(friendRequestIn.Message.Message),
}
friendRequests = append(friendRequests, friendRequest)
return false
})
}
}
return &pb.GetUserFriendRequestsIncomingResponse{

View File

@@ -28,7 +28,7 @@ func (s *gRPCFriendsServer) SendUserFriendRequest(ctx context.Context, in *pb.Se
message := in.GetMessage()
id, err := database_wiiu.SaveFriendRequest(sender, recipient, sentTime.Value(), expireTime.Value(), message)
id, err := database_wiiu.SaveFriendRequest(sender, recipient, uint64(sentTime), uint64(expireTime), message)
if err != nil {
globals.Logger.Critical(err.Error())
return &pb.SendUserFriendRequestResponse{

View File

@@ -16,7 +16,7 @@ import (
account_management_types "github.com/PretendoNetwork/nex-protocols-go/v2/account-management/types"
)
func NintendoCreateAccount(err error, packet nex.PacketInterface, callID uint32, strPrincipalName *types.String, strKey *types.String, uiGroups *types.PrimitiveU32, strEmail *types.String, oAuthData *types.AnyDataHolder) (*nex.RMCMessage, *nex.Error) {
func NintendoCreateAccount(err error, packet nex.PacketInterface, callID uint32, strPrincipalName types.String, strKey types.String, uiGroups types.UInt32, strEmail types.String, oAuthData types.DataHolder) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.Core.InvalidArgument, "") // TODO - Add error message
@@ -24,17 +24,17 @@ func NintendoCreateAccount(err error, packet nex.PacketInterface, callID uint32,
var tokenBase64 string
oAuthDataType := oAuthData.TypeName.Value
oAuthDataType := oAuthData.Object.DataObjectID().(types.String)
switch oAuthDataType {
case "NintendoCreateAccountData": // * Wii U
nintendoCreateAccountData := oAuthData.ObjectData.Copy().(*account_management_types.NintendoCreateAccountData)
nintendoCreateAccountData := oAuthData.Object.Copy().(account_management_types.NintendoCreateAccountData)
tokenBase64 = nintendoCreateAccountData.Token.Value
tokenBase64 = string(nintendoCreateAccountData.Token)
case "AccountExtraInfo": // * 3DS
accountExtraInfo := oAuthData.ObjectData.Copy().(*account_management_types.AccountExtraInfo)
accountExtraInfo := oAuthData.Object.Copy().(account_management_types.AccountExtraInfo)
tokenBase64 = accountExtraInfo.NEXToken.Value
tokenBase64 = string(accountExtraInfo.NEXToken)
tokenBase64 = strings.Replace(tokenBase64, ".", "+", -1)
tokenBase64 = strings.Replace(tokenBase64, "-", "/", -1)
tokenBase64 = strings.Replace(tokenBase64, "*", "=", -1)
@@ -58,9 +58,9 @@ func NintendoCreateAccount(err error, packet nex.PacketInterface, callID uint32,
pid := types.NewPID(uint64(decryptedToken.UserPID))
pidByteArray := make([]byte, 4)
binary.LittleEndian.PutUint32(pidByteArray, pid.LegacyValue())
binary.LittleEndian.PutUint32(pidByteArray, uint32(pid))
mac := hmac.New(md5.New, []byte(strKey.Value))
mac := hmac.New(md5.New, []byte(strKey))
_, err = mac.Write(pidByteArray)
if err != nil {
globals.Logger.Error(err.Error())

View File

@@ -9,7 +9,7 @@ import (
friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds"
)
func AddFriendByPrincipalID(err error, packet nex.PacketInterface, callID uint32, lfc *types.PrimitiveU64, pid *types.PID) (*nex.RMCMessage, *nex.Error) {
func AddFriendByPrincipalID(err error, packet nex.PacketInterface, callID uint32, lfc types.UInt64, pid types.PID) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -17,13 +17,13 @@ func AddFriendByPrincipalID(err error, packet nex.PacketInterface, callID uint32
connection := packet.Sender().(*nex.PRUDPConnection)
friendRelationship, err := database_3ds.SaveFriendship(connection.PID().LegacyValue(), pid.LegacyValue())
friendRelationship, err := database_3ds.SaveFriendship(uint32(connection.PID()), uint32(pid))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
connectedUser, ok := globals.ConnectedUsers.Get(pid.LegacyValue())
connectedUser, ok := globals.ConnectedUsers.Get(uint32(pid))
if ok && connectedUser != nil {
go notifications_3ds.SendFriendshipCompleted(connectedUser.Connection, connection.PID())
}

View File

@@ -17,7 +17,7 @@ func GetAllFriends(err error, packet nex.PacketInterface, callID uint32) (*nex.R
connection := packet.Sender().(*nex.PRUDPConnection)
friendRelationships, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendRelationships, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -11,19 +11,17 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func GetFriendMii(err error, packet nex.PacketInterface, callID uint32, friends *types.List[*friends_3ds_types.FriendInfo]) (*nex.RMCMessage, *nex.Error) {
func GetFriendMii(err error, packet nex.PacketInterface, callID uint32, friends types.List[friends_3ds_types.FriendInfo]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
}
pids := make([]uint32, 0, friends.Length())
pids := make([]uint32, 0, len(friends))
friends.Each(func(i int, friend *friends_3ds_types.FriendInfo) bool {
pids = append(pids, friend.PID.LegacyValue())
return false
})
for _, friend := range friends {
pids = append(pids, uint32(friend.PID))
}
miiList, err := database_3ds.GetFriendMiis(pids)
if err != nil && err != sql.ErrNoRows {

View File

@@ -10,7 +10,7 @@ import (
friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds"
)
func GetFriendPersistentInfo(err error, packet nex.PacketInterface, callID uint32, pidList *types.List[*types.PID]) (*nex.RMCMessage, *nex.Error) {
func GetFriendPersistentInfo(err error, packet nex.PacketInterface, callID uint32, pidList types.List[types.PID]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
@@ -18,15 +18,13 @@ func GetFriendPersistentInfo(err error, packet nex.PacketInterface, callID uint3
connection := packet.Sender().(*nex.PRUDPConnection)
friendPIDs := make([]uint32, pidList.Length())
friendPIDs := make([]uint32, len(pidList))
pidList.Each(func(i int, pid *types.PID) bool {
friendPIDs = append(friendPIDs, pid.LegacyValue())
for _, pid := range pidList {
friendPIDs = append(friendPIDs, uint32(pid))
}
return false
})
infoList, err := database_3ds.GetFriendPersistentInfos(connection.PID().LegacyValue(), friendPIDs)
infoList, err := database_3ds.GetFriendPersistentInfos(uint32(connection.PID()), friendPIDs)
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -8,28 +8,25 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func GetFriendPresence(err error, packet nex.PacketInterface, callID uint32, pidList *types.List[*types.PID]) (*nex.RMCMessage, *nex.Error) {
func GetFriendPresence(err error, packet nex.PacketInterface, callID uint32, pidList types.List[types.PID]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
presenceList := types.NewList[*friends_3ds_types.FriendPresence]()
presenceList.Type = friends_3ds_types.NewFriendPresence()
presenceList := types.NewList[friends_3ds_types.FriendPresence]()
pidList.Each(func(i int, pid *types.PID) bool {
connectedUser, ok := globals.ConnectedUsers.Get(pid.LegacyValue())
for _, pid := range pidList {
connectedUser, ok := globals.ConnectedUsers.Get(uint32(pid))
if ok && connectedUser != nil && connectedUser.Presence != nil {
if ok && connectedUser != nil {
friendPresence := friends_3ds_types.NewFriendPresence()
friendPresence.PID = pid.Copy().(*types.PID)
friendPresence.Presence = connectedUser.Presence.Copy().(*friends_3ds_types.NintendoPresence)
friendPresence.PID = pid.Copy().(types.PID)
friendPresence.Presence = connectedUser.Presence.Copy().(friends_3ds_types.NintendoPresence)
presenceList.Append(friendPresence)
presenceList = append(presenceList, friendPresence)
}
return false
})
}
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -7,7 +7,7 @@ import (
// friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds"
)
func GetPrincipalIDByLocalFriendCode(err error, packet nex.PacketInterface, callID uint32, lfc *types.PrimitiveU64, lfcList *types.List[*types.PrimitiveU64]) (*nex.RMCMessage, *nex.Error) {
func GetPrincipalIDByLocalFriendCode(err error, packet nex.PacketInterface, callID uint32, lfc types.UInt64, lfcList types.List[types.UInt64]) (*nex.RMCMessage, *nex.Error) {
// Respond with unimplemented, waiting for gRPC to retrieve PID from account server
// rmcResponse := nex.NewRMCResponse(friends_3ds.ProtocolID, callID)

View File

@@ -7,7 +7,7 @@ import (
// friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds"
)
func RemoveFriendByLocalFriendCode(err error, packet nex.PacketInterface, callID uint32, lfc *types.PrimitiveU64) (*nex.RMCMessage, *nex.Error) {
func RemoveFriendByLocalFriendCode(err error, packet nex.PacketInterface, callID uint32, lfc types.UInt64) (*nex.RMCMessage, *nex.Error) {
// Respond with unimplemented, waiting for gRPC to retrieve PID from account server
// rmcResponse := nex.NewRMCResponse(friends_3ds.ProtocolID, callID)

View File

@@ -10,7 +10,7 @@ import (
friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds"
)
func RemoveFriendByPrincipalID(err error, packet nex.PacketInterface, callID uint32, pid *types.PID) (*nex.RMCMessage, *nex.Error) {
func RemoveFriendByPrincipalID(err error, packet nex.PacketInterface, callID uint32, pid types.PID) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,7 +18,7 @@ func RemoveFriendByPrincipalID(err error, packet nex.PacketInterface, callID uin
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_3ds.RemoveFriendship(connection.PID().LegacyValue(), pid.LegacyValue())
err = database_3ds.RemoveFriendship(uint32(connection.PID()), uint32(pid))
if err != nil {
if err == database.ErrFriendshipNotFound {
// * Official servers don't actually check this, but

View File

@@ -13,7 +13,7 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func SyncFriend(err error, packet nex.PacketInterface, callID uint32, lfc *types.PrimitiveU64, pids *types.List[*types.PID], lfcList *types.List[*types.PrimitiveU64]) (*nex.RMCMessage, *nex.Error) {
func SyncFriend(err error, packet nex.PacketInterface, callID uint32, lfc types.UInt64, pids types.List[types.PID], lfcList types.List[types.UInt64]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -21,63 +21,53 @@ func SyncFriend(err error, packet nex.PacketInterface, callID uint32, lfc *types
connection := packet.Sender().(*nex.PRUDPConnection)
friendRelationships, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendRelationships, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
if friendRelationships.Each(func(i int, relationship *friends_3ds_types.FriendRelationship) bool {
for _, relationship := range friendRelationships {
var hasPID bool
pids.Each(func(i int, pid *types.PID) bool {
if pid.Equals(relationship.PID) {
for _, pid := range pids {
if pid == relationship.PID {
hasPID = true
return true
}
return false
})
if !hasPID {
err := database_3ds.RemoveFriendship(connection.PID().LegacyValue(), relationship.PID.LegacyValue())
if err != nil && err != database.ErrFriendshipNotFound {
globals.Logger.Critical(err.Error())
return true
break
}
}
return false
}) {
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
if !hasPID {
err := database_3ds.RemoveFriendship(uint32(connection.PID()), uint32(relationship.PID))
if err != nil && err != database.ErrFriendshipNotFound {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
}
}
relationships := friendRelationships.Slice()
// TODO - Not needed?
relationships := friendRelationships.Copy().(types.List[friends_3ds_types.FriendRelationship])
if pids.Each(func(i int, pid *types.PID) bool {
if !isPIDInRelationships(relationships, pid.LegacyValue()) {
relationship, err := database_3ds.SaveFriendship(connection.PID().LegacyValue(), pid.LegacyValue())
for _, pid := range pids {
if !isPIDInRelationships(relationships, uint32(pid)) {
relationship, err := database_3ds.SaveFriendship(uint32(connection.PID()), uint32(pid))
if err != nil {
globals.Logger.Critical(err.Error())
return true
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
relationships = append(relationships, relationship)
// * Alert the other side, in case they weren't able to get our presence data
connectedUser, ok := globals.ConnectedUsers.Get(pid.LegacyValue())
connectedUser, ok := globals.ConnectedUsers.Get(uint32(pid))
if ok && connectedUser != nil {
go notifications_3ds.SendFriendshipCompleted(connectedUser.Connection, connection.PID())
}
}
return false
}) {
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
syncedRelationships := types.NewList[*friends_3ds_types.FriendRelationship]()
syncedRelationships.Type = friends_3ds_types.NewFriendRelationship()
syncedRelationships.SetFromData(relationships)
// TODO - Not needed?
syncedRelationships := relationships.Copy().(types.List[friends_3ds_types.FriendRelationship])
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -93,9 +83,9 @@ func SyncFriend(err error, packet nex.PacketInterface, callID uint32, lfc *types
return rmcResponse, nil
}
func isPIDInRelationships(relationships []*friends_3ds_types.FriendRelationship, pid uint32) bool {
func isPIDInRelationships(relationships []friends_3ds_types.FriendRelationship, pid uint32) bool {
for i := range relationships {
if relationships[i].PID.LegacyValue() == pid {
if uint32(relationships[i].PID) == pid {
return true
}
}

View File

@@ -10,7 +10,7 @@ import (
friends_3ds "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds"
)
func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment *types.String) (*nex.RMCMessage, *nex.Error) {
func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment types.String) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,13 +18,13 @@ func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_3ds.UpdateUserComment(connection.PID().LegacyValue(), comment.Value)
err = database_3ds.UpdateUserComment(uint32(connection.PID()), string(comment))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
go notifications_3ds.SendCommentUpdate(connection, comment.Value)
go notifications_3ds.SendCommentUpdate(connection, string(comment))
rmcResponse := nex.NewRMCSuccess(globals.SecureEndpoint, nil)
rmcResponse.ProtocolID = friends_3ds.ProtocolID

View File

@@ -9,7 +9,7 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func UpdateFavoriteGameKey(err error, packet nex.PacketInterface, callID uint32, gameKey *friends_3ds_types.GameKey) (*nex.RMCMessage, *nex.Error) {
func UpdateFavoriteGameKey(err error, packet nex.PacketInterface, callID uint32, gameKey friends_3ds_types.GameKey) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -17,7 +17,7 @@ func UpdateFavoriteGameKey(err error, packet nex.PacketInterface, callID uint32,
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_3ds.UpdateUserFavoriteGame(connection.PID().LegacyValue(), gameKey)
err = database_3ds.UpdateUserFavoriteGame(uint32(connection.PID()), gameKey)
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -9,7 +9,7 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func UpdateMii(err error, packet nex.PacketInterface, callID uint32, mii *friends_3ds_types.Mii) (*nex.RMCMessage, *nex.Error) {
func UpdateMii(err error, packet nex.PacketInterface, callID uint32, mii friends_3ds_types.Mii) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -17,7 +17,7 @@ func UpdateMii(err error, packet nex.PacketInterface, callID uint32, mii *friend
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_3ds.UpdateUserMii(connection.PID().LegacyValue(), mii)
err = database_3ds.UpdateUserMii(uint32(connection.PID()), mii)
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -10,7 +10,7 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, publicMode *types.PrimitiveBool, showGame *types.PrimitiveBool, showPlayedGame *types.PrimitiveBool) (*nex.RMCMessage, *nex.Error) {
func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, publicMode types.Bool, showGame types.Bool, showPlayedGame types.Bool) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,20 +18,20 @@ func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, publ
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_3ds.UpdateUserPreferences(connection.PID().LegacyValue(), publicMode.Value, showGame.Value)
err = database_3ds.UpdateUserPreferences(uint32(connection.PID()), bool(publicMode), bool(showGame))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
if !showGame.Value {
if !showGame {
emptyPresence := friends_3ds_types.NewNintendoPresence()
emptyPresence.GameKey = friends_3ds_types.NewGameKey()
emptyPresence.ChangedFlags = types.NewPrimitiveU32(0xFFFFFFFF) // * All flags
emptyPresence.ChangedFlags = types.NewUInt32(0xFFFFFFFF) // * All flags
notifications_3ds.SendPresenceUpdate(connection, emptyPresence)
}
if !publicMode.Value {
if !publicMode {
notifications_3ds.SendUserWentOfflineGlobally(connection)
}

View File

@@ -10,7 +10,7 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presence *friends_3ds_types.NintendoPresence, showGame *types.PrimitiveBool) (*nex.RMCMessage, *nex.Error) {
func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presence friends_3ds_types.NintendoPresence, showGame types.Bool) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,18 +18,18 @@ func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presen
connection := packet.Sender().(*nex.PRUDPConnection)
currentPresence := presence.Copy().(*friends_3ds_types.NintendoPresence)
currentPresence := presence.Copy().(friends_3ds_types.NintendoPresence)
// Send an entirely empty status, with every flag set to update
if !showGame.Value {
if !showGame {
currentPresence = friends_3ds_types.NewNintendoPresence()
currentPresence.GameKey = friends_3ds_types.NewGameKey()
currentPresence.ChangedFlags = types.NewPrimitiveU32(0xFFFFFFFF) // * All flags
currentPresence.ChangedFlags = types.NewUInt32(0xFFFFFFFF) // * All flags
}
go notifications_3ds.SendPresenceUpdate(connection, currentPresence)
pid := connection.PID().LegacyValue()
pid := uint32(connection.PID())
connectedUser, ok := globals.ConnectedUsers.Get(pid)
if !ok || connectedUser == nil {

View File

@@ -8,7 +8,7 @@ import (
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
)
func UpdateProfile(err error, packet nex.PacketInterface, callID uint32, profileData *friends_3ds_types.MyProfile) (*nex.RMCMessage, *nex.Error) {
func UpdateProfile(err error, packet nex.PacketInterface, callID uint32, profileData friends_3ds_types.MyProfile) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -16,7 +16,7 @@ func UpdateProfile(err error, packet nex.PacketInterface, callID uint32, profile
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_3ds.UpdateUserProfile(connection.PID().LegacyValue(), profileData)
err = database_3ds.UpdateUserProfile(uint32(connection.PID()), profileData)
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -11,7 +11,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func AcceptFriendRequest(err error, packet nex.PacketInterface, callID uint32, id *types.PrimitiveU64) (*nex.RMCMessage, *nex.Error) {
func AcceptFriendRequest(err error, packet nex.PacketInterface, callID uint32, id types.UInt64) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -19,7 +19,7 @@ func AcceptFriendRequest(err error, packet nex.PacketInterface, callID uint32, i
connection := packet.Sender().(*nex.PRUDPConnection)
friendInfo, err := database_wiiu.AcceptFriendRequestAndReturnFriendInfo(id.Value)
friendInfo, err := database_wiiu.AcceptFriendRequestAndReturnFriendInfo(uint64(id))
if err != nil {
if err == database.ErrFriendRequestNotFound {
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidMessageID, "") // TODO - Add error message
@@ -29,11 +29,11 @@ func AcceptFriendRequest(err error, packet nex.PacketInterface, callID uint32, i
}
}
friendPID := friendInfo.NNAInfo.PrincipalBasicInfo.PID.LegacyValue()
friendPID := uint32(friendInfo.NNAInfo.PrincipalBasicInfo.PID)
connectedUser, ok := globals.ConnectedUsers.Get(friendPID)
if ok && connectedUser != nil {
senderPID := connection.PID().LegacyValue()
senderPID := uint32(connection.PID())
senderConnectedUser, ok := globals.ConnectedUsers.Get(senderPID)
if ok && senderConnectedUser != nil {
@@ -47,7 +47,7 @@ func AcceptFriendRequest(err error, packet nex.PacketInterface, callID uint32, i
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
senderFriendInfo.Presence = senderConnectedUser.PresenceV2.Copy().(*friends_wiiu_types.NintendoPresenceV2)
senderFriendInfo.Presence = senderConnectedUser.PresenceV2.Copy().(friends_wiiu_types.NintendoPresenceV2)
status, err := database_wiiu.GetUserComment(senderPID)
if err != nil {
@@ -60,7 +60,7 @@ func AcceptFriendRequest(err error, packet nex.PacketInterface, callID uint32, i
senderFriendInfo.BecameFriend = friendInfo.BecameFriend
senderFriendInfo.LastOnline = friendInfo.LastOnline // TODO - Change this
senderFriendInfo.Unknown = types.NewPrimitiveU64(0)
senderFriendInfo.Unknown = types.NewUInt64(0)
go notifications_wiiu.SendFriendRequestAccepted(connectedUser.Connection, senderFriendInfo)
}

View File

@@ -10,7 +10,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func AddBlackList(err error, packet nex.PacketInterface, callID uint32, blacklistPrincipal *friends_wiiu_types.BlacklistedPrincipal) (*nex.RMCMessage, *nex.Error) {
func AddBlackList(err error, packet nex.PacketInterface, callID uint32, blacklistPrincipal friends_wiiu_types.BlacklistedPrincipal) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -24,7 +24,7 @@ func AddBlackList(err error, packet nex.PacketInterface, callID uint32, blacklis
titleID := currentBlacklistPrincipal.GameKey.TitleID
titleVersion := currentBlacklistPrincipal.GameKey.TitleVersion
userInfo, err := database_wiiu.GetUserPrincipalBasicInfo(currentBlacklistPrincipal.PrincipalBasicInfo.PID.LegacyValue())
userInfo, err := database_wiiu.GetUserPrincipalBasicInfo(uint32(currentBlacklistPrincipal.PrincipalBasicInfo.PID))
if err != nil {
if err == database.ErrPIDNotFound {
// TODO - Not sure if this is the correct error.
@@ -38,7 +38,7 @@ func AddBlackList(err error, packet nex.PacketInterface, callID uint32, blacklis
currentBlacklistPrincipal.PrincipalBasicInfo = userInfo
currentBlacklistPrincipal.BlackListedSince = types.NewDateTime(0).Now()
err = database_wiiu.SetUserBlocked(connection.PID().LegacyValue(), senderPID.LegacyValue(), titleID.Value, titleVersion.Value)
err = database_wiiu.SetUserBlocked(uint32(connection.PID()), uint32(senderPID), uint64(titleID), uint16(titleVersion))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -13,7 +13,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid *types.PID, unknown2 *types.PrimitiveU8, message *types.String, unknown4 *types.PrimitiveU8, unknown5 *types.String, gameKey *friends_wiiu_types.GameKey, unknown6 *types.DateTime) (*nex.RMCMessage, *nex.Error) {
func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid types.PID, unknown2 types.UInt8, message types.String, unknown4 types.UInt8, unknown5 types.String, gameKey friends_wiiu_types.GameKey, unknown6 types.DateTime) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -21,8 +21,8 @@ func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid
connection := packet.Sender().(*nex.PRUDPConnection)
senderPID := connection.PID().LegacyValue()
recipientPID := pid.LegacyValue()
senderPID := uint32(connection.PID())
recipientPID := uint32(pid)
senderPrincipalInfo, err := database_wiiu.GetUserPrincipalBasicInfo(senderPID)
if err != nil {
@@ -51,7 +51,7 @@ func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid
sentTime.FromTimestamp(currentTimestamp)
expireTime.FromTimestamp(expireTimestamp)
friendRequestID, err := database_wiiu.SaveFriendRequest(senderPID, recipientPID, sentTime.Value(), expireTime.Value(), message.Value)
friendRequestID, err := database_wiiu.SaveFriendRequest(senderPID, recipientPID, uint64(sentTime), uint64(expireTime), string(message))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
@@ -62,15 +62,15 @@ func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid
friendRequest.PrincipalInfo = recipientPrincipalInfo
friendRequest.Message = friends_wiiu_types.NewFriendRequestMessage()
friendRequest.Message.FriendRequestID = types.NewPrimitiveU64(friendRequestID)
friendRequest.Message.Received = types.NewPrimitiveBool(false)
friendRequest.Message.Unknown2 = types.NewPrimitiveU8(1) // * Replaying from official server
friendRequest.Message.FriendRequestID = types.NewUInt64(friendRequestID)
friendRequest.Message.Received = types.NewBool(false)
friendRequest.Message.Unknown2 = types.NewUInt8(1) // * Replaying from official server
friendRequest.Message.Message = message
friendRequest.Message.Unknown3 = types.NewPrimitiveU8(0) // * Replaying from official server
friendRequest.Message.Unknown4 = types.NewString("") // * Replaying from official server
friendRequest.Message.GameKey = gameKey // * Maybe this is reused?
friendRequest.Message.Unknown5 = unknown6 // * Maybe this is reused?
friendRequest.Message.ExpiresOn = expireTime // * No idea why this is set as the sent time
friendRequest.Message.Unknown3 = types.NewUInt8(0) // * Replaying from official server
friendRequest.Message.Unknown4 = types.NewString("") // * Replaying from official server
friendRequest.Message.GameKey = gameKey // * Maybe this is reused?
friendRequest.Message.Unknown5 = unknown6 // * Maybe this is reused?
friendRequest.Message.ExpiresOn = expireTime // * No idea why this is set as the sent time
friendRequest.SentOn = sentTime
// * Why does this exist?? Always empty??
@@ -82,39 +82,39 @@ func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid
friendInfo.NNAInfo.PrincipalBasicInfo.NNID = types.NewString("")
friendInfo.NNAInfo.PrincipalBasicInfo.Mii = friends_wiiu_types.NewMiiV2()
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.Name = types.NewString("")
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.Unknown1 = types.NewPrimitiveU8(0)
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.Unknown2 = types.NewPrimitiveU8(0)
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.Unknown1 = types.NewUInt8(0)
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.Unknown2 = types.NewUInt8(0)
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.MiiData = types.NewBuffer([]byte{})
friendInfo.NNAInfo.PrincipalBasicInfo.Mii.Datetime = types.NewDateTime(0)
friendInfo.NNAInfo.PrincipalBasicInfo.Unknown = types.NewPrimitiveU8(0)
friendInfo.NNAInfo.Unknown1 = types.NewPrimitiveU8(0)
friendInfo.NNAInfo.Unknown2 = types.NewPrimitiveU8(0)
friendInfo.NNAInfo.PrincipalBasicInfo.Unknown = types.NewUInt8(0)
friendInfo.NNAInfo.Unknown1 = types.NewUInt8(0)
friendInfo.NNAInfo.Unknown2 = types.NewUInt8(0)
friendInfo.Presence = friends_wiiu_types.NewNintendoPresenceV2()
friendInfo.Presence.ChangedFlags = types.NewPrimitiveU32(0)
friendInfo.Presence.Online = types.NewPrimitiveBool(false)
friendInfo.Presence.ChangedFlags = types.NewUInt32(0)
friendInfo.Presence.Online = types.NewBool(false)
friendInfo.Presence.GameKey = gameKey // * Maybe this is reused?
friendInfo.Presence.Unknown1 = types.NewPrimitiveU8(0)
friendInfo.Presence.Unknown1 = types.NewUInt8(0)
friendInfo.Presence.Message = types.NewString("")
friendInfo.Presence.Unknown2 = types.NewPrimitiveU32(0)
friendInfo.Presence.Unknown3 = types.NewPrimitiveU8(0)
friendInfo.Presence.GameServerID = types.NewPrimitiveU32(0)
friendInfo.Presence.Unknown4 = types.NewPrimitiveU32(0)
friendInfo.Presence.Unknown2 = types.NewUInt32(0)
friendInfo.Presence.Unknown3 = types.NewUInt8(0)
friendInfo.Presence.GameServerID = types.NewUInt32(0)
friendInfo.Presence.Unknown4 = types.NewUInt32(0)
friendInfo.Presence.PID = types.NewPID(0)
friendInfo.Presence.GatheringID = types.NewPrimitiveU32(0)
friendInfo.Presence.GatheringID = types.NewUInt32(0)
friendInfo.Presence.ApplicationData = types.NewBuffer([]byte{0x00})
friendInfo.Presence.Unknown5 = types.NewPrimitiveU8(0)
friendInfo.Presence.Unknown6 = types.NewPrimitiveU8(0)
friendInfo.Presence.Unknown7 = types.NewPrimitiveU8(0)
friendInfo.Presence.Unknown5 = types.NewUInt8(0)
friendInfo.Presence.Unknown6 = types.NewUInt8(0)
friendInfo.Presence.Unknown7 = types.NewUInt8(0)
friendInfo.Status = friends_wiiu_types.NewComment()
friendInfo.Status.Unknown = types.NewPrimitiveU8(0)
friendInfo.Status.Unknown = types.NewUInt8(0)
friendInfo.Status.Contents = types.NewString("")
friendInfo.Status.LastChanged = types.NewDateTime(0)
friendInfo.BecameFriend = types.NewDateTime(0)
friendInfo.LastOnline = types.NewDateTime(0)
friendInfo.Unknown = types.NewPrimitiveU64(0)
friendInfo.Unknown = types.NewUInt64(0)
recipientClient, ok := globals.ConnectedUsers.Get(recipientPID)
@@ -123,15 +123,15 @@ func AddFriendRequest(err error, packet nex.PacketInterface, callID uint32, pid
friendRequestNotificationData.PrincipalInfo = senderPrincipalInfo
friendRequestNotificationData.Message = friends_wiiu_types.NewFriendRequestMessage()
friendRequestNotificationData.Message.FriendRequestID = types.NewPrimitiveU64(friendRequestID)
friendRequestNotificationData.Message.Received = types.NewPrimitiveBool(false)
friendRequestNotificationData.Message.Unknown2 = types.NewPrimitiveU8(1) // * Replaying from official server
friendRequestNotificationData.Message.FriendRequestID = types.NewUInt64(friendRequestID)
friendRequestNotificationData.Message.Received = types.NewBool(false)
friendRequestNotificationData.Message.Unknown2 = types.NewUInt8(1) // * Replaying from official server
friendRequestNotificationData.Message.Message = message
friendRequestNotificationData.Message.Unknown3 = types.NewPrimitiveU8(0) // * Replaying from server server
friendRequestNotificationData.Message.Unknown4 = types.NewString("") // * Replaying from server server
friendRequestNotificationData.Message.GameKey = gameKey // * Maybe this is reused?
friendRequestNotificationData.Message.Unknown5 = unknown6 // * Maybe this is reused?
friendRequestNotificationData.Message.ExpiresOn = expireTime // * No idea why this is set as the sent time
friendRequestNotificationData.Message.Unknown3 = types.NewUInt8(0) // * Replaying from server server
friendRequestNotificationData.Message.Unknown4 = types.NewString("") // * Replaying from server server
friendRequestNotificationData.Message.GameKey = gameKey // * Maybe this is reused?
friendRequestNotificationData.Message.Unknown5 = unknown6 // * Maybe this is reused?
friendRequestNotificationData.Message.ExpiresOn = expireTime // * No idea why this is set as the sent time
friendRequestNotificationData.SentOn = sentTime
go notifications_wiiu.SendFriendRequest(recipientClient.Connection, friendRequestNotificationData)

View File

@@ -10,7 +10,7 @@ import (
friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu"
)
func CancelFriendRequest(err error, packet nex.PacketInterface, callID uint32, id *types.PrimitiveU64) (*nex.RMCMessage, *nex.Error) {
func CancelFriendRequest(err error, packet nex.PacketInterface, callID uint32, id types.UInt64) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,7 +18,7 @@ func CancelFriendRequest(err error, packet nex.PacketInterface, callID uint32, i
connection := packet.Sender().(*nex.PRUDPConnection)
pid, err := database_wiiu.DeleteFriendRequestAndReturnFriendPID(id.Value)
pid, err := database_wiiu.DeleteFriendRequestAndReturnFriendPID(uint64(id))
if err != nil {
if err == database.ErrFriendRequestNotFound {
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidMessageID, "") // TODO - Add error message

View File

@@ -13,7 +13,7 @@ func CheckSettingStatus(err error, packet nex.PacketInterface, callID uint32) (*
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
status := types.NewPrimitiveU8(0xFF) // TODO - What is this??
status := types.NewUInt8(0xFF) // TODO - What is this??
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -9,13 +9,13 @@ import (
friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu"
)
func DeleteFriendRequest(err error, packet nex.PacketInterface, callID uint32, id *types.PrimitiveU64) (*nex.RMCMessage, *nex.Error) {
func DeleteFriendRequest(err error, packet nex.PacketInterface, callID uint32, id types.UInt64) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
}
err = database_wiiu.SetFriendRequestDenied(id.Value)
err = database_wiiu.SetFriendRequestDenied(uint64(id))
if err != nil {
if err == database.ErrFriendRequestNotFound {
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidMessageID, "") // TODO - Add error message

View File

@@ -8,7 +8,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func DeletePersistentNotification(err error, packet nex.PacketInterface, callID uint32, notifications *types.List[*friends_wiiu_types.PersistentNotification]) (*nex.RMCMessage, *nex.Error) {
func DeletePersistentNotification(err error, packet nex.PacketInterface, callID uint32, notifications types.List[friends_wiiu_types.PersistentNotification]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message

View File

@@ -12,7 +12,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func DenyFriendRequest(err error, packet nex.PacketInterface, callID uint32, id *types.PrimitiveU64) (*nex.RMCMessage, *nex.Error) {
func DenyFriendRequest(err error, packet nex.PacketInterface, callID uint32, id types.UInt64) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -20,13 +20,13 @@ func DenyFriendRequest(err error, packet nex.PacketInterface, callID uint32, id
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_wiiu.SetFriendRequestDenied(id.Value)
err = database_wiiu.SetFriendRequestDenied(uint64(id))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
senderPID, _, err := database_wiiu.GetPIDsByFriendRequestID(id.Value)
senderPID, _, err := database_wiiu.GetPIDsByFriendRequestID(uint64(id))
if err != nil {
if err == database.ErrFriendRequestNotFound {
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidMessageID, "") // TODO - Add error message
@@ -36,7 +36,7 @@ func DenyFriendRequest(err error, packet nex.PacketInterface, callID uint32, id
}
}
err = database_wiiu.SetUserBlocked(connection.PID().LegacyValue(), senderPID, 0, 0)
err = database_wiiu.SetUserBlocked(uint32(connection.PID()), senderPID, 0, 0)
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -9,29 +9,24 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func GetBasicInfo(err error, packet nex.PacketInterface, callID uint32, pids *types.List[*types.PID]) (*nex.RMCMessage, *nex.Error) {
func GetBasicInfo(err error, packet nex.PacketInterface, callID uint32, pids types.List[types.PID]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
}
infos := types.NewList[*friends_wiiu_types.PrincipalBasicInfo]()
infos.Type = friends_wiiu_types.NewPrincipalBasicInfo()
infos := types.NewList[friends_wiiu_types.PrincipalBasicInfo]()
if pids.Each(func(i int, pid *types.PID) bool {
info, err := database_wiiu.GetUserPrincipalBasicInfo(pid.LegacyValue())
for _, pid := range pids {
info, err := database_wiiu.GetUserPrincipalBasicInfo(uint32(pid))
if err != nil {
globals.Logger.Critical(err.Error())
return true
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
if info.PID.LegacyValue() != 0 {
infos.Append(info)
if info.PID != 0 {
infos = append(infos, info)
}
return false
}) {
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -9,7 +9,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func GetRequestBlockSettings(err error, packet nex.PacketInterface, callID uint32, pids *types.List[*types.PrimitiveU32]) (*nex.RMCMessage, *nex.Error) {
func GetRequestBlockSettings(err error, packet nex.PacketInterface, callID uint32, pids types.List[types.UInt32]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -17,27 +17,22 @@ func GetRequestBlockSettings(err error, packet nex.PacketInterface, callID uint3
connection := packet.Sender().(*nex.PRUDPConnection)
settings := types.NewList[*friends_wiiu_types.PrincipalRequestBlockSetting]()
settings.Type = friends_wiiu_types.NewPrincipalRequestBlockSetting()
settings := types.NewList[friends_wiiu_types.PrincipalRequestBlockSetting]()
// TODO - Improve this. Use less database_wiiu reads
if pids.Each(func(i int, pid *types.PrimitiveU32) bool {
for _, pid := range pids {
setting := friends_wiiu_types.NewPrincipalRequestBlockSetting()
setting.PID = pid
isBlocked, err := database_wiiu.IsFriendRequestBlocked(connection.PID().LegacyValue(), pid.Value)
isBlocked, err := database_wiiu.IsFriendRequestBlocked(uint32(connection.PID()), uint32(pid))
if err != nil {
globals.Logger.Critical(err.Error())
return true
return nil, nex.NewError(nex.ResultCodes.Core.Unknown, "") // TODO - Add error message
}
setting.IsBlocked = types.NewPrimitiveBool(isBlocked)
setting.IsBlocked = types.NewBool(isBlocked)
settings.Append(setting)
return false
}) {
return nil, nex.NewError(nex.ResultCodes.Core.Unknown, "") // TODO - Add error message
settings = append(settings, setting)
}
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -8,22 +8,18 @@ import (
friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu"
)
func MarkFriendRequestsAsReceived(err error, packet nex.PacketInterface, callID uint32, ids *types.List[*types.PrimitiveU64]) (*nex.RMCMessage, *nex.Error) {
func MarkFriendRequestsAsReceived(err error, packet nex.PacketInterface, callID uint32, ids types.List[types.UInt64]) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
}
if ids.Each(func(i int, id *types.PrimitiveU64) bool {
err = database_wiiu.SetFriendRequestReceived(id.Value)
for _, id := range ids {
err = database_wiiu.SetFriendRequestReceived(uint64(id))
if err != nil {
globals.Logger.Critical(err.Error())
return true
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
return false
}) {
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
}
rmcResponse := nex.NewRMCSuccess(globals.SecureEndpoint, nil)

View File

@@ -9,7 +9,7 @@ import (
friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu"
)
func RemoveBlackList(err error, packet nex.PacketInterface, callID uint32, blockedPID *types.PID) (*nex.RMCMessage, *nex.Error) {
func RemoveBlackList(err error, packet nex.PacketInterface, callID uint32, blockedPID types.PID) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -17,7 +17,7 @@ func RemoveBlackList(err error, packet nex.PacketInterface, callID uint32, block
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_wiiu.UnsetUserBlocked(connection.PID().LegacyValue(), blockedPID.LegacyValue())
err = database_wiiu.UnsetUserBlocked(uint32(connection.PID()), uint32(blockedPID))
if err != nil {
if err == database.ErrPIDNotFound {
return nil, nex.NewError(nex.ResultCodes.FPD.NotInMyBlacklist, "") // TODO - Add error message

View File

@@ -10,7 +10,7 @@ import (
friends_wiiu "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu"
)
func RemoveFriend(err error, packet nex.PacketInterface, callID uint32, pid *types.PID) (*nex.RMCMessage, *nex.Error) {
func RemoveFriend(err error, packet nex.PacketInterface, callID uint32, pid types.PID) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,7 +18,7 @@ func RemoveFriend(err error, packet nex.PacketInterface, callID uint32, pid *typ
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_wiiu.RemoveFriendship(connection.PID().LegacyValue(), pid.LegacyValue())
err = database_wiiu.RemoveFriendship(uint32(connection.PID()), uint32(pid))
if err != nil {
if err == database.ErrFriendshipNotFound {
return nil, nex.NewError(nex.ResultCodes.FPD.NotInMyFriendList, "") // TODO - Add error message
@@ -28,7 +28,7 @@ func RemoveFriend(err error, packet nex.PacketInterface, callID uint32, pid *typ
}
}
connectedUser, ok := globals.ConnectedUsers.Get(pid.LegacyValue())
connectedUser, ok := globals.ConnectedUsers.Get(uint32(pid))
if ok && connectedUser != nil {
go notifications_wiiu.SendFriendshipRemoved(connectedUser.Connection, pid)
}

View File

@@ -14,7 +14,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID uint32, nnaInfo *friends_wiiu_types.NNAInfo, presence *friends_wiiu_types.NintendoPresenceV2, birthday *types.DateTime) (*nex.RMCMessage, *nex.Error) {
func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID uint32, nnaInfo friends_wiiu_types.NNAInfo, presence friends_wiiu_types.NintendoPresenceV2, birthday types.DateTime) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -23,7 +23,7 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui
connection := packet.Sender().(*nex.PRUDPConnection)
// * Get user information
pid := connection.PID().LegacyValue()
pid := uint32(connection.PID())
connectedUser, ok := globals.ConnectedUsers.Get(pid)
if !ok || connectedUser == nil {
@@ -36,7 +36,7 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui
globals.ConnectedUsers.Set(pid, connectedUser)
}
connectedUser.PresenceV2 = presence.Copy().(*friends_wiiu_types.NintendoPresenceV2)
connectedUser.PresenceV2 = presence.Copy().(friends_wiiu_types.NintendoPresenceV2)
database_wiiu.UpdateNetworkAccountInfo(pid, nnaInfo, birthday)
@@ -88,8 +88,8 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui
// * Update user information
presence.Online = types.NewPrimitiveBool(true) // * Force online status. I have no idea why this is always false
presence.PID = connection.PID() // * WHY IS THIS SET TO 0 BY DEFAULT??
presence.Online = types.NewBool(true) // * Force online status. I have no idea why this is always false
presence.PID = connection.PID() // * WHY IS THIS SET TO 0 BY DEFAULT??
notifications_wiiu.SendPresenceUpdate(presence)
@@ -101,20 +101,20 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui
bella.Status = friends_wiiu_types.NewComment()
bella.BecameFriend = types.NewDateTime(0)
bella.LastOnline = types.NewDateTime(0)
bella.Unknown = types.NewPrimitiveU64(0)
bella.Unknown = types.NewUInt64(0)
bella.NNAInfo.PrincipalBasicInfo = friends_wiiu_types.NewPrincipalBasicInfo()
bella.NNAInfo.Unknown1 = types.NewPrimitiveU8(0)
bella.NNAInfo.Unknown2 = types.NewPrimitiveU8(0)
bella.NNAInfo.Unknown1 = types.NewUInt8(0)
bella.NNAInfo.Unknown2 = types.NewUInt8(0)
bella.NNAInfo.PrincipalBasicInfo.PID = types.NewPID(1743126339)
bella.NNAInfo.PrincipalBasicInfo.NNID = types.NewString("bells1998")
bella.NNAInfo.PrincipalBasicInfo.Mii = friends_wiiu_types.NewMiiV2()
bella.NNAInfo.PrincipalBasicInfo.Unknown = types.NewPrimitiveU8(0)
bella.NNAInfo.PrincipalBasicInfo.Unknown = types.NewUInt8(0)
bella.NNAInfo.PrincipalBasicInfo.Mii.Name = types.NewString("bella")
bella.NNAInfo.PrincipalBasicInfo.Mii.Unknown1 = types.NewPrimitiveU8(0)
bella.NNAInfo.PrincipalBasicInfo.Mii.Unknown2 = types.NewPrimitiveU8(0)
bella.NNAInfo.PrincipalBasicInfo.Mii.Unknown1 = types.NewUInt8(0)
bella.NNAInfo.PrincipalBasicInfo.Mii.Unknown2 = types.NewUInt8(0)
bella.NNAInfo.PrincipalBasicInfo.Mii.MiiData = types.NewBuffer([]byte{
0x03, 0x00, 0x00, 0x40, 0xE9, 0x55, 0xA2, 0x09,
0xE7, 0xC7, 0x41, 0x82, 0xD9, 0x7D, 0x0B, 0x2D,
@@ -131,38 +131,38 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui
})
bella.NNAInfo.PrincipalBasicInfo.Mii.Datetime = types.NewDateTime(0)
bella.Presence.ChangedFlags = types.NewPrimitiveU32(0x1EE)
bella.Presence.Online = types.NewPrimitiveBool(true)
bella.Presence.ChangedFlags = types.NewUInt32(0x1EE)
bella.Presence.Online = types.NewBool(true)
bella.Presence.GameKey = friends_wiiu_types.NewGameKey()
bella.Presence.Unknown1 = types.NewPrimitiveU8(0)
bella.Presence.Unknown1 = types.NewUInt8(0)
bella.Presence.Message = types.NewString("Testing")
//bella.Presence.Unknown2 = 2
bella.Presence.Unknown2 = types.NewPrimitiveU32(0)
bella.Presence.Unknown2 = types.NewUInt32(0)
//bella.Presence.Unknown3 = 2
bella.Presence.Unknown3 = types.NewPrimitiveU8(0)
bella.Presence.Unknown3 = types.NewUInt8(0)
//bella.Presence.GameServerID = 0x1010EB00
bella.Presence.GameServerID = types.NewPrimitiveU32(0)
bella.Presence.GameServerID = types.NewUInt32(0)
//bella.Presence.Unknown4 = 3
bella.Presence.Unknown4 = types.NewPrimitiveU32(0)
bella.Presence.Unknown4 = types.NewUInt32(0)
bella.Presence.PID = types.NewPID(1743126339)
//bella.Presence.GatheringID = 1743126339 // test fake ID
bella.Presence.GatheringID = types.NewPrimitiveU32(0)
bella.Presence.GatheringID = types.NewUInt32(0)
//bella.Presence.ApplicationData, _ = hex.DecodeString("0000200300000000000000001843ffe567000000")
bella.Presence.ApplicationData = types.NewBuffer([]byte{0x0})
bella.Presence.Unknown5 = types.NewPrimitiveU8(0)
bella.Presence.Unknown6 = types.NewPrimitiveU8(0)
bella.Presence.Unknown7 = types.NewPrimitiveU8(0)
bella.Presence.Unknown5 = types.NewUInt8(0)
bella.Presence.Unknown6 = types.NewUInt8(0)
bella.Presence.Unknown7 = types.NewUInt8(0)
//bella.Presence.GameKey.TitleID = 0x000500001010EC00
bella.Presence.GameKey.TitleID = types.NewPrimitiveU64(0)
bella.Presence.GameKey.TitleID = types.NewUInt64(0)
//bella.Presence.GameKey.TitleVersion = 64
bella.Presence.GameKey.TitleVersion = types.NewPrimitiveU16(0)
bella.Presence.GameKey.TitleVersion = types.NewUInt16(0)
bella.Status.Unknown = types.NewPrimitiveU8(0)
bella.Status.Unknown = types.NewUInt8(0)
bella.Status.Contents = types.NewString("test")
bella.Status.LastChanged = types.NewDateTime(0)
friendList.Append(bella)
friendList = append(friendList, bella)
}
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -173,9 +173,9 @@ func UpdateAndGetAllInformation(err error, packet nex.PacketInterface, callID ui
friendRequestsOut.WriteTo(rmcResponseStream)
friendRequestsIn.WriteTo(rmcResponseStream)
blockList.WriteTo(rmcResponseStream)
types.NewPrimitiveBool(false).WriteTo(rmcResponseStream) // * Unknown
types.NewBool(false).WriteTo(rmcResponseStream) // * Unknown
notifications.WriteTo(rmcResponseStream)
types.NewPrimitiveBool(false).WriteTo(rmcResponseStream) // * Unknown
types.NewBool(false).WriteTo(rmcResponseStream) // * Unknown
rmcResponseBody := rmcResponseStream.Bytes()

View File

@@ -9,7 +9,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment *friends_wiiu_types.Comment) (*nex.RMCMessage, *nex.Error) {
func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment friends_wiiu_types.Comment) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -17,7 +17,7 @@ func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment
connection := packet.Sender().(*nex.PRUDPConnection)
changed, err := database_wiiu.UpdateUserComment(connection.PID().LegacyValue(), comment.Contents.Value)
changed, err := database_wiiu.UpdateUserComment(uint32(connection.PID()), string(comment.Contents))
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message
@@ -25,7 +25,7 @@ func UpdateComment(err error, packet nex.PacketInterface, callID uint32, comment
rmcResponseStream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
types.NewPrimitiveU64(changed).WriteTo(rmcResponseStream) // TODO - This is ugly
types.NewUInt64(changed).WriteTo(rmcResponseStream) // TODO - This is ugly
rmcResponseBody := rmcResponseStream.Bytes()

View File

@@ -8,7 +8,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, principalPreference *friends_wiiu_types.PrincipalPreference) (*nex.RMCMessage, *nex.Error) {
func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, principalPreference friends_wiiu_types.PrincipalPreference) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -16,7 +16,7 @@ func UpdatePreference(err error, packet nex.PacketInterface, callID uint32, prin
connection := packet.Sender().(*nex.PRUDPConnection)
err = database_wiiu.UpdateUserPrincipalPreference(connection.PID().LegacyValue(), principalPreference)
err = database_wiiu.UpdateUserPrincipalPreference(uint32(connection.PID()), principalPreference)
if err != nil {
globals.Logger.Critical(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.Unknown, "") // TODO - Add error message

View File

@@ -10,7 +10,7 @@ import (
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
)
func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presence *friends_wiiu_types.NintendoPresenceV2) (*nex.RMCMessage, *nex.Error) {
func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presence friends_wiiu_types.NintendoPresenceV2) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.FPD.InvalidArgument, "") // TODO - Add error message
@@ -18,10 +18,10 @@ func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presen
connection := packet.Sender().(*nex.PRUDPConnection)
pid := connection.PID().LegacyValue()
pid := uint32(connection.PID())
presence.Online = types.NewPrimitiveBool(true) // * Force online status. I have no idea why this is always false
presence.PID = connection.PID() // * WHY IS THIS SET TO 0 BY DEFAULT??
presence.Online = types.NewBool(true) // * Force online status. I have no idea why this is always false
presence.PID = connection.PID() // * WHY IS THIS SET TO 0 BY DEFAULT??
connectedUser, ok := globals.ConnectedUsers.Get(pid)
@@ -36,7 +36,7 @@ func UpdatePresence(err error, packet nex.PacketInterface, callID uint32, presen
globals.ConnectedUsers.Set(pid, connectedUser)
}
connectedUser.PresenceV2 = presence.Copy().(*friends_wiiu_types.NintendoPresenceV2)
connectedUser.PresenceV2 = presence.Copy().(friends_wiiu_types.NintendoPresenceV2)
notifications_wiiu.SendPresenceUpdate(presence)

View File

@@ -12,7 +12,7 @@ import (
secure_connection "github.com/PretendoNetwork/nex-protocols-go/v2/secure-connection"
)
func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs *types.List[*types.StationURL], hCustomData *types.AnyDataHolder) (*nex.RMCMessage, *nex.Error) {
func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs types.List[types.StationURL], hCustomData types.DataHolder) (*nex.RMCMessage, *nex.Error) {
if err != nil {
globals.Logger.Error(err.Error())
return nil, nex.NewError(nex.ResultCodes.Core.InvalidArgument, "")
@@ -23,14 +23,14 @@ func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs
retval := types.NewQResultSuccess(nex.ResultCodes.Core.Unknown)
// TODO - Validate loginData
pid := connection.PID().LegacyValue()
pid := uint32(connection.PID())
user := friends_types.NewConnectedUser()
user.PID = pid
user.Connection = connection
lastOnline := types.NewDateTime(0).Now()
loginDataType := hCustomData.TypeName.Value
loginDataType := hCustomData.Object.DataObjectID().(types.String)
switch loginDataType {
case "NintendoLoginData":
@@ -54,22 +54,22 @@ func RegisterEx(err error, packet nex.PacketInterface, callID uint32, vecMyURLs
retval = types.NewQResultError(nex.ResultCodes.Authentication.ValidationFailed)
}
pidConnectionID := types.NewPrimitiveU32(0)
pidConnectionID := types.NewUInt32(0)
urlPublic := types.NewString("")
if retval.IsSuccess() {
globals.ConnectedUsers.Set(pid, user)
localStation, _ := vecMyURLs.Get(0)
localStation := vecMyURLs[0]
address := connection.Address().(*net.UDPAddr)
localStation.SetAddress(address.IP.String())
localStation.SetPortNumber(uint16(address.Port))
localStationURL := localStation.EncodeToString()
localStationURL := localStation.URL()
pidConnectionID = types.NewPrimitiveU32(connection.ID)
pidConnectionID = types.NewUInt32(connection.ID)
urlPublic = types.NewString(localStationURL)
}

View File

@@ -27,7 +27,7 @@ func StartSecureServer() {
globals.SecureEndpoint.AccountDetailsByUsername = globals.AccountDetailsByUsername
globals.SecureEndpoint.OnConnectionEnded(func(connection *nex.PRUDPConnection) {
pid := connection.PID().LegacyValue()
pid := uint32(connection.PID())
user, ok := globals.ConnectedUsers.Get(pid)
if !ok || user == nil {

View File

@@ -8,7 +8,6 @@ import (
nex "github.com/PretendoNetwork/nex-go/v2"
"github.com/PretendoNetwork/nex-go/v2/constants"
"github.com/PretendoNetwork/nex-go/v2/types"
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications"
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
@@ -18,11 +17,10 @@ func SendCommentUpdate(connection *nex.PRUDPConnection, comment string) {
notificationEvent.StrParam = types.NewString(comment)
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(3)
eventObject.Type = types.NewUInt32(3)
eventObject.SenderPID = connection.PID()
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoNotificationEventGeneral")
eventObject.DataHolder.ObjectData = notificationEvent.Copy()
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -36,7 +34,7 @@ func SendCommentUpdate(connection *nex.PRUDPConnection, comment string) {
notificationRequestBytes := notificationRequest.Bytes()
friendsList, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendsList, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
}
@@ -45,8 +43,8 @@ func SendCommentUpdate(connection *nex.PRUDPConnection, comment string) {
return
}
friendsList.Each(func(i int, friend *friends_3ds_types.FriendRelationship) bool {
connectedUser, ok := globals.ConnectedUsers.Get(friend.PID.LegacyValue())
for _, friend := range friendsList {
connectedUser, ok := globals.ConnectedUsers.Get(uint32(friend.PID))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)
@@ -62,7 +60,5 @@ func SendCommentUpdate(connection *nex.PRUDPConnection, comment string) {
globals.SecureServer.Send(requestPacket)
}
return false
})
}
}

View File

@@ -13,13 +13,12 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendFavoriteUpdate(connection *nex.PRUDPConnection, gameKey *friends_3ds_types.GameKey) {
func SendFavoriteUpdate(connection *nex.PRUDPConnection, gameKey friends_3ds_types.GameKey) {
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(2)
eventObject.Type = types.NewUInt32(2)
eventObject.SenderPID = connection.PID()
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("GameKey")
eventObject.DataHolder.ObjectData = gameKey.Copy()
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = gameKey.Copy().(friends_3ds_types.GameKey)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -33,7 +32,7 @@ func SendFavoriteUpdate(connection *nex.PRUDPConnection, gameKey *friends_3ds_ty
notificationRequestBytes := notificationRequest.Bytes()
friendsList, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendsList, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
}
@@ -42,8 +41,8 @@ func SendFavoriteUpdate(connection *nex.PRUDPConnection, gameKey *friends_3ds_ty
return
}
friendsList.Each(func(i int, friend *friends_3ds_types.FriendRelationship) bool {
connectedUser, ok := globals.ConnectedUsers.Get(friend.PID.LegacyValue())
for _, friend := range friendsList {
connectedUser, ok := globals.ConnectedUsers.Get(uint32(friend.PID))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)
@@ -59,7 +58,5 @@ func SendFavoriteUpdate(connection *nex.PRUDPConnection, gameKey *friends_3ds_ty
globals.SecureServer.Send(requestPacket)
}
return false
})
}
}

View File

@@ -9,18 +9,17 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendFriendshipCompleted(connection *nex.PRUDPConnection, senderPID *types.PID) {
func SendFriendshipCompleted(connection *nex.PRUDPConnection, senderPID types.PID) {
notificationEvent := nintendo_notifications_types.NewNintendoNotificationEventGeneral()
notificationEvent.U32Param = types.NewPrimitiveU32(0)
notificationEvent.U64Param1 = types.NewPrimitiveU64(0) // * Local friend code of sender
notificationEvent.U64Param2 = types.NewPrimitiveU64(types.NewDateTime(0).Now().Value()) // * Friendship timestamp
notificationEvent.U32Param = types.NewUInt32(0)
notificationEvent.U64Param1 = types.NewUInt64(0) // * Local friend code of sender
notificationEvent.U64Param2 = types.NewUInt64(uint64(types.NewDateTime(0).Now())) // * Friendship timestamp
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(7)
eventObject.Type = types.NewUInt32(7)
eventObject.SenderPID = senderPID
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoNotificationEventGeneral")
eventObject.DataHolder.ObjectData = notificationEvent.Copy()
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -8,7 +8,6 @@ import (
nex "github.com/PretendoNetwork/nex-go/v2"
"github.com/PretendoNetwork/nex-go/v2/constants"
"github.com/PretendoNetwork/nex-go/v2/types"
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications"
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
@@ -17,11 +16,10 @@ func SendMiiUpdateNotification(connection *nex.PRUDPConnection) {
notificationEvent := nintendo_notifications_types.NewNintendoNotificationEventGeneral()
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(5)
eventObject.Type = types.NewUInt32(5)
eventObject.SenderPID = connection.PID()
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoNotificationEventGeneral")
eventObject.DataHolder.ObjectData = notificationEvent.Copy()
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -35,7 +33,7 @@ func SendMiiUpdateNotification(connection *nex.PRUDPConnection) {
notificationRequestBytes := notificationRequest.Bytes()
friendsList, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendsList, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
}
@@ -44,8 +42,8 @@ func SendMiiUpdateNotification(connection *nex.PRUDPConnection) {
return
}
friendsList.Each(func(i int, friend *friends_3ds_types.FriendRelationship) bool {
connectedUser, ok := globals.ConnectedUsers.Get(friend.PID.LegacyValue())
for _, friend := range friendsList {
connectedUser, ok := globals.ConnectedUsers.Get(uint32(friend.PID))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)
@@ -61,7 +59,5 @@ func SendMiiUpdateNotification(connection *nex.PRUDPConnection) {
globals.SecureServer.Send(requestPacket)
}
return false
})
}
}

View File

@@ -13,13 +13,12 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendPresenceUpdate(connection *nex.PRUDPConnection, presence *friends_3ds_types.NintendoPresence) {
func SendPresenceUpdate(connection *nex.PRUDPConnection, presence friends_3ds_types.NintendoPresence) {
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(1)
eventObject.Type = types.NewUInt32(1)
eventObject.SenderPID = connection.PID()
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoPresence")
eventObject.DataHolder.ObjectData = presence.Copy()
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = presence.Copy().(friends_3ds_types.NintendoPresence)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -33,7 +32,7 @@ func SendPresenceUpdate(connection *nex.PRUDPConnection, presence *friends_3ds_t
notificationRequestBytes := notificationRequest.Bytes()
friendsList, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendsList, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
}
@@ -42,8 +41,8 @@ func SendPresenceUpdate(connection *nex.PRUDPConnection, presence *friends_3ds_t
return
}
friendsList.Each(func(i int, friend *friends_3ds_types.FriendRelationship) bool {
connectedUser, ok := globals.ConnectedUsers.Get(friend.PID.LegacyValue())
for _, friend := range friendsList {
connectedUser, ok := globals.ConnectedUsers.Get(uint32(friend.PID))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)
@@ -59,7 +58,5 @@ func SendPresenceUpdate(connection *nex.PRUDPConnection, presence *friends_3ds_t
globals.SecureServer.Send(requestPacket)
}
return false
})
}
}

View File

@@ -8,13 +8,12 @@ import (
nex "github.com/PretendoNetwork/nex-go/v2"
"github.com/PretendoNetwork/nex-go/v2/constants"
"github.com/PretendoNetwork/nex-go/v2/types"
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications"
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendUserWentOfflineGlobally(connection *nex.PRUDPConnection) {
friendsList, err := database_3ds.GetUserFriends(connection.PID().LegacyValue())
friendsList, err := database_3ds.GetUserFriends(uint32(connection.PID()))
if err != nil && err != sql.ErrNoRows {
globals.Logger.Critical(err.Error())
}
@@ -23,22 +22,19 @@ func SendUserWentOfflineGlobally(connection *nex.PRUDPConnection) {
return
}
friendsList.Each(func(i int, friend *friends_3ds_types.FriendRelationship) bool {
for _, friend := range friendsList {
SendUserWentOffline(connection, friend.PID)
return false
})
}
}
func SendUserWentOffline(connection *nex.PRUDPConnection, pid *types.PID) {
func SendUserWentOffline(connection *nex.PRUDPConnection, pid types.PID) {
notificationEvent := nintendo_notifications_types.NewNintendoNotificationEventGeneral()
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(10)
eventObject.Type = types.NewUInt32(10)
eventObject.SenderPID = connection.PID()
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoNotificationEventGeneral")
eventObject.DataHolder.ObjectData = notificationEvent.Copy()
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = notificationEvent.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -52,7 +48,7 @@ func SendUserWentOffline(connection *nex.PRUDPConnection, pid *types.PID) {
notificationRequestBytes := notificationRequest.Bytes()
connectedUser, ok := globals.ConnectedUsers.Get(pid.LegacyValue())
connectedUser, ok := globals.ConnectedUsers.Get(uint32(pid))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)

View File

@@ -10,13 +10,12 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendFriendRequest(connection *nex.PRUDPConnection, friendRequestNotificationData *friends_wiiu_types.FriendRequest) {
func SendFriendRequest(connection *nex.PRUDPConnection, friendRequestNotificationData friends_wiiu_types.FriendRequest) {
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(27)
eventObject.SenderPID = friendRequestNotificationData.PrincipalInfo.PID.Copy().(*types.PID)
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("FriendRequest")
eventObject.DataHolder.ObjectData = friendRequestNotificationData.Copy()
eventObject.Type = types.NewUInt32(27)
eventObject.SenderPID = friendRequestNotificationData.PrincipalInfo.PID.Copy().(types.PID)
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = friendRequestNotificationData.Copy().(friends_wiiu_types.FriendRequest)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -10,13 +10,12 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendFriendRequestAccepted(connection *nex.PRUDPConnection, friendInfo *friends_wiiu_types.FriendInfo) {
func SendFriendRequestAccepted(connection *nex.PRUDPConnection, friendInfo friends_wiiu_types.FriendInfo) {
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(30)
eventObject.SenderPID = friendInfo.NNAInfo.PrincipalBasicInfo.PID.Copy().(*types.PID)
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("FriendInfo")
eventObject.DataHolder.ObjectData = friendInfo.Copy()
eventObject.Type = types.NewUInt32(30)
eventObject.SenderPID = friendInfo.NNAInfo.PrincipalBasicInfo.PID.Copy().(types.PID)
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = friendInfo.Copy().(friends_wiiu_types.FriendInfo)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -9,15 +9,14 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendFriendshipRemoved(connection *nex.PRUDPConnection, senderPID *types.PID) {
func SendFriendshipRemoved(connection *nex.PRUDPConnection, senderPID types.PID) {
nintendoNotificationEventGeneral := nintendo_notifications_types.NewNintendoNotificationEventGeneral()
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(26)
eventObject.SenderPID = senderPID.Copy().(*types.PID)
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoNotificationEventGeneral")
eventObject.DataHolder.ObjectData = nintendoNotificationEventGeneral.Copy()
eventObject.Type = types.NewUInt32(26)
eventObject.SenderPID = senderPID.Copy().(types.PID)
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = nintendoNotificationEventGeneral.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())

View File

@@ -1,8 +1,6 @@
package notifications_wiiu
import (
"fmt"
"github.com/PretendoNetwork/friends/database"
database_wiiu "github.com/PretendoNetwork/friends/database/wiiu"
"github.com/PretendoNetwork/friends/globals"
@@ -14,13 +12,12 @@ import (
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendPresenceUpdate(presence *friends_wiiu_types.NintendoPresenceV2) {
func SendPresenceUpdate(presence friends_wiiu_types.NintendoPresenceV2) {
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(24)
eventObject.SenderPID = presence.PID.Copy().(*types.PID)
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoPresenceV2")
eventObject.DataHolder.ObjectData = presence.Copy()
eventObject.Type = types.NewUInt32(24)
eventObject.SenderPID = presence.PID.Copy().(types.PID)
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = presence.Copy().(friends_wiiu_types.NintendoPresenceV2)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -34,7 +31,7 @@ func SendPresenceUpdate(presence *friends_wiiu_types.NintendoPresenceV2) {
notificationRequestBytes := notificationRequest.Bytes()
friendList, err := database_wiiu.GetUserFriendList(presence.PID.LegacyValue())
friendList, err := database_wiiu.GetUserFriendList(uint32(presence.PID))
if err != nil && err != database.ErrEmptyList {
globals.Logger.Critical(err.Error())
}
@@ -43,37 +40,48 @@ func SendPresenceUpdate(presence *friends_wiiu_types.NintendoPresenceV2) {
return
}
// * Lazy
friends := friendList.Slice()
// TODO - Not needed?
friends := friendList.Copy().(types.List[friends_wiiu_types.FriendInfo])
for i := 0; i < len(friends); i++ {
friend := friends[i]
if friend == nil || friend.NNAInfo == nil || friend.NNAInfo.PrincipalBasicInfo == nil {
// TODO - Fix this
pid := presence.PID
var friendPID uint32 = 0
/*
if friend == nil || friend.NNAInfo == nil || friend.NNAInfo.PrincipalBasicInfo == nil {
// TODO - Fix this
pid := presence.PID
var friendPID uint32 = 0
if friend != nil && friend.Presence != nil {
// TODO - Better track the bad users PID
friendPID = friend.Presence.PID.LegacyValue()
}
globals.Logger.Error(fmt.Sprintf("User %d has friend %d with bad presence data", pid, friendPID))
if friend == nil {
globals.Logger.Error(fmt.Sprintf("%d friendList[i] nil", friendPID))
} else if friend.NNAInfo == nil {
globals.Logger.Error(fmt.Sprintf("%d friendList[i].NNAInfo is nil", friendPID))
} else if friend.NNAInfo.PrincipalBasicInfo == nil {
globals.Logger.Error(fmt.Sprintf("%d friendList[i].NNAInfo.PrincipalBasicInfo is nil", friendPID))
if friend != nil && friend.Presence != nil {
// TODO - Better track the bad users PID
friendPID = friend.Presence.PID
}
globals.Logger.Error(fmt.Sprintf("User %d has friend %d with bad presence data", pid, friendPID))
if friend == nil {
globals.Logger.Error(fmt.Sprintf("%d friendList[i] nil", friendPID))
} else if friend.NNAInfo == nil {
globals.Logger.Error(fmt.Sprintf("%d friendList[i].NNAInfo is nil", friendPID))
} else if friend.NNAInfo.PrincipalBasicInfo == nil {
globals.Logger.Error(fmt.Sprintf("%d friendList[i].NNAInfo.PrincipalBasicInfo is nil", friendPID))
}
continue
}
*/
// * This is meant to replace the commented out check.
// * The check was meant to catch cases where friend
// * presences would be nil, but now we no longer use
// * pointers so that can't ever happen. Instead, check
// * for the default value(s)
if friend.NNAInfo.PrincipalBasicInfo.PID == 0 {
continue
}
friendPID := friend.NNAInfo.PrincipalBasicInfo.PID
connectedUser, ok := globals.ConnectedUsers.Get(friendPID.LegacyValue())
connectedUser, ok := globals.ConnectedUsers.Get(uint32(friendPID))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)

View File

@@ -7,13 +7,12 @@ import (
nex "github.com/PretendoNetwork/nex-go/v2"
"github.com/PretendoNetwork/nex-go/v2/constants"
"github.com/PretendoNetwork/nex-go/v2/types"
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
nintendo_notifications "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications"
nintendo_notifications_types "github.com/PretendoNetwork/nex-protocols-go/v2/nintendo-notifications/types"
)
func SendUserWentOfflineGlobally(connection *nex.PRUDPConnection) {
friendsList, err := database_wiiu.GetUserFriendList(connection.PID().LegacyValue())
friendsList, err := database_wiiu.GetUserFriendList(uint32(connection.PID()))
if err != nil && err != database.ErrEmptyList {
globals.Logger.Critical(err.Error())
}
@@ -22,28 +21,26 @@ func SendUserWentOfflineGlobally(connection *nex.PRUDPConnection) {
return
}
friendsList.Each(func(i int, friend *friends_wiiu_types.FriendInfo) bool {
for _, friend := range friendsList {
SendUserWentOffline(connection, friend.NNAInfo.PrincipalBasicInfo.PID)
return false
})
}
}
func SendUserWentOffline(connection *nex.PRUDPConnection, pid *types.PID) {
func SendUserWentOffline(connection *nex.PRUDPConnection, pid types.PID) {
lastOnline := types.NewDateTime(0).Now()
nintendoNotificationEventGeneral := nintendo_notifications_types.NewNintendoNotificationEventGeneral()
nintendoNotificationEventGeneral.U32Param = types.NewPrimitiveU32(0)
nintendoNotificationEventGeneral.U64Param1 = types.NewPrimitiveU64(0)
nintendoNotificationEventGeneral.U64Param2 = types.NewPrimitiveU64(lastOnline.Value())
nintendoNotificationEventGeneral.U32Param = types.NewUInt32(0)
nintendoNotificationEventGeneral.U64Param1 = types.NewUInt64(0)
nintendoNotificationEventGeneral.U64Param2 = types.NewUInt64(uint64(lastOnline))
nintendoNotificationEventGeneral.StrParam = types.NewString("")
eventObject := nintendo_notifications_types.NewNintendoNotificationEvent()
eventObject.Type = types.NewPrimitiveU32(10)
eventObject.SenderPID = connection.PID().Copy().(*types.PID)
eventObject.DataHolder = types.NewAnyDataHolder()
eventObject.DataHolder.TypeName = types.NewString("NintendoNotificationEventGeneral")
eventObject.DataHolder.ObjectData = nintendoNotificationEventGeneral.Copy()
eventObject.Type = types.NewUInt32(10)
eventObject.SenderPID = connection.PID().Copy().(types.PID)
eventObject.DataHolder = types.NewDataHolder()
eventObject.DataHolder.Object = nintendoNotificationEventGeneral.Copy().(nintendo_notifications_types.NintendoNotificationEventGeneral)
stream := nex.NewByteStreamOut(globals.SecureEndpoint.LibraryVersions(), globals.SecureEndpoint.ByteStreamSettings())
@@ -57,7 +54,7 @@ func SendUserWentOffline(connection *nex.PRUDPConnection, pid *types.PID) {
notificationRequestBytes := notificationRequest.Bytes()
connectedUser, ok := globals.ConnectedUsers.Get(pid.LegacyValue())
connectedUser, ok := globals.ConnectedUsers.Get(uint32(pid))
if ok && connectedUser != nil {
requestPacket, _ := nex.NewPRUDPPacketV0(globals.SecureEndpoint.Server, connectedUser.Connection, nil)

View File

@@ -10,8 +10,8 @@ type ConnectedUser struct {
PID uint32
Platform Platform
Connection *nex.PRUDPConnection
Presence *friends_3ds_types.NintendoPresence
PresenceV2 *friends_wiiu_types.NintendoPresenceV2
Presence friends_3ds_types.NintendoPresence
PresenceV2 friends_wiiu_types.NintendoPresenceV2
}
func NewConnectedUser() *ConnectedUser {

View File

@@ -10,13 +10,13 @@ import (
type FriendUser struct {
NNID string
PID uint32
Comment *friends_wiiu_types.Comment
FriendRequestsOut []*friends_wiiu_types.FriendRequest
FriendRequestsIn []*friends_wiiu_types.FriendRequest
BlockedUsers []*friends_wiiu_types.BlacklistedPrincipal
LastOnline *types.DateTime
ActiveTitle *friends_wiiu_types.GameKey
Notifications []*friends_wiiu_types.PersistentNotification
Comment friends_wiiu_types.Comment
FriendRequestsOut []friends_wiiu_types.FriendRequest
FriendRequestsIn []friends_wiiu_types.FriendRequest
BlockedUsers []friends_wiiu_types.BlacklistedPrincipal
LastOnline types.DateTime
ActiveTitle friends_wiiu_types.GameKey
Notifications []friends_wiiu_types.PersistentNotification
}
func (friendUser *FriendUser) FromPID(pid uint32) {