/*
* Copyright (C) 2008-2015 TrinityCore
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*/
#ifndef FriendsPackets_h__
#define FriendsPackets_h__
#include "PacketsBase.h"
namespace Battlenet
{
namespace Friends
{
enum Opcode
{
CMSG_FRIEND_INVITE = 0x01, // Not implemented
CMSG_FRIEND_INVITE_RESPONSE = 0x02, // Not implemented
CMSG_FRIEND_REMOVE = 0x04, // Not implemented
CMSG_FRIEND_NOTE = 0x05, // Not implemented
CMSG_TOONS_OF_FRIEND_REQUEST = 0x06, // Not implemented
CMSG_BLOCK_ADD = 0x08, // Not implemented
CMSG_BLOCK_REMOVE = 0x0A, // Not implemented
CMSG_GET_FRIENDS_OF_FRIEND = 0x0B, // Not implemented
CMSG_GET_SOCIAL_NETWORK_FRIENDS = 0x0D, // Won't support
CMSG_SOCIAL_NETWORK_CONNECT = 0x0F, // Won't support
CMSG_SOCIAL_NETWORK_DISCONNECT = 0x11, // Won't support
CMSG_SOCIAL_NETWORK_CHECK_CONNECTED = 0x13,
CMSG_REALID_FRIEND_INVITE = 0x16, // Not implemented
SMSG_FRIEND_INVITE_NOTIFY = 0x01, // Not implemented
SMSG_FRIEND_INVITE_RESULT = 0x03, // Not implemented
SMSG_TOONS_OF_FRIEND_NOTIFY = 0x06, // Not implemented
SMSG_BLOCK_INVITE_NOTIFY = 0x07, // Not implemented
SMSG_BLOCK_ADD_FAILURE = 0x09, // Not implemented
SMSG_FRIENDS_OF_FRIEND = 0x0C, // Not implemented
SMSG_SOCIAL_NETWORK_FRIENDS = 0x0E, // Won't support
SMSG_SOCIAL_NETWORK_CONNECT_RESULT = 0x10, // Won't support
SMSG_SOCIAL_NETWORK_DISCONNECT_RESULT = 0x12, // Won't support
SMSG_SOCIAL_NETWORK_CHECK_CONNECTED_RESULT = 0x14,
SMSG_MAX_FRIENDS_NOTIFY = 0x15, // Not implemented
SMSG_FRIENDS_LIST_NOTIFY_3 = 0x18 // Not implemented
};
class GetFriendsOfFriend final : public ClientPacket
{
public:
GetFriendsOfFriend(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
{
ASSERT(header == PacketHeader(CMSG_GET_FRIENDS_OF_FRIEND, FRIENDS) && "Invalid packet header for GetFriendsOfFriend");
}
void Read() override;
std::string ToString() const override;
};
class SocialNetworkCheckConnected final : public ClientPacket
{
public:
SocialNetworkCheckConnected(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
{
ASSERT(header == PacketHeader(CMSG_SOCIAL_NETWORK_CHECK_CONNECTED, FRIENDS) && "Invalid packet header for SocialNetworkCheckConnected");
}
void Read() override;
std::string ToString() const override;
void CallHandler(Session* session) override;
uint32 SocialNetworkId = 0;
};
class RealIdFriendInvite final : public ClientPacket
{
public:
RealIdFriendInvite(PacketHeader const& header, BitStream& stream) : ClientPacket(header, stream)
{
ASSERT(header == PacketHeader(CMSG_REALID_FRIEND_INVITE, FRIENDS) && "Invalid packet header for RealIdFriendInvite");
}
void Read() override;
std::string ToString() const override;
std::string Email;
std::string Message;
};
class FriendInviteResult final : public ServerPacket
{
public:
FriendInviteResult() : ServerPacket(PacketHeader(SMSG_FRIEND_INVITE_RESULT, FRIENDS))
{
}
void Write() override;
std::string ToString() const override;
};
class FriendsOfFriend final : public ServerPacket
{
public:
FriendsOfFriend() : ServerPacket(PacketHeader(SMSG_FRIENDS_OF_FRIEND, FRIENDS))
{
}
void Write() override;
std::string ToString() const override;
};
class SocialNetworkCheckConnectedResult final : public ServerPacket
{
public:
SocialNetworkCheckConnectedResult() : ServerPacket(PacketHeader(SMSG_SOCIAL_NETWORK_CHECK_CONNECTED_RESULT, FRIENDS)),
Result(4601), SocialNetworkId(0) // 4601 = The Facebook add friend service is unavailable right now. Please try again later.
{
}
void Write() override;
std::string ToString() const override;
uint16 Result;
uint32 SocialNetworkId;
};
}
}
#endif // FriendsPackets_h__