Files
SPT-Server-Build/Libraries/Core/Callbacks/ProfileCallbacks.cs
T
2025-01-19 17:45:48 +00:00

147 lines
4.7 KiB
C#

using SptCommon.Annotations;
using Core.Controllers;
using Core.Models.Eft.Common;
using Core.Models.Eft.Launcher;
using Core.Models.Eft.Profile;
using Core.Utils;
namespace Core.Callbacks;
[Injectable]
public class ProfileCallbacks(
HttpResponseUtil _httpResponse,
TimeUtil _timeUtil,
ProfileController _profileController
)
{
/**
* Handle client/game/profile/create
*/
public string CreateProfile(string url, ProfileCreateRequestData info, string sessionID)
{
var id = _profileController.CreateProfile(info, sessionID);
return _httpResponse.GetBody(new CreateProfileResponse { UserId = id });
}
/**
* Handle client/game/profile/list
* Get the complete player profile (scav + pmc character)
*/
public string GetProfileData(string url, EmptyRequestData info, string sessionID)
{
return _httpResponse.GetBody(_profileController.GetCompleteProfile(sessionID));
}
/**
* Handle client/game/profile/savage/regenerate
* Handle the creation of a scav profile for player
* Occurs post-raid and when profile first created immediately after character details are confirmed by player
* @param url
* @param info empty
* @param sessionID Session id
* @returns Profile object
*/
public string RegenerateScav(string url, EmptyRequestData info, string sessionID)
{
return _httpResponse.GetBody(new List<PmcData> { _profileController.GeneratePlayerScav(sessionID) });
}
/**
* Handle client/game/profile/voice/change event
*/
public string ChangeVoice(string url, ProfileChangeVoiceRequestData info, string sessionID)
{
_profileController.ChangeVoice(info, sessionID);
return _httpResponse.NullResponse();
}
/**
* Handle client/game/profile/nickname/change event
* Client allows player to adjust their profile name
*/
public string ChangeNickname(string url, ProfileChangeNicknameRequestData info, string sessionID)
{
var output = _profileController.ChangeNickname(info, sessionID);
return output switch
{
"taken" => _httpResponse.GetBody<object?>(null, 255, "The nickname is already in use"),
"tooshort" => _httpResponse.GetBody<object?>(null, 1, "The nickname is too short"),
_ => _httpResponse.GetBody<object>(new { status = 0, nicknamechangedate = _timeUtil.GetTimeStamp() })
};
}
/**
* Handle client/game/profile/nickname/validate
*/
public string ValidateNickname(string url, ValidateNicknameRequestData info, string sessionID)
{
var output = _profileController.ValidateNickname(info, sessionID);
return output switch
{
"taken" => _httpResponse.GetBody<object?>(null, 255, "225 - "),
"tooshort" => _httpResponse.GetBody<object?>(null, 256, "256 - "),
_ => _httpResponse.GetBody(new { status = "ok" })
};
}
/**
* Handle client/game/profile/nickname/reserved
*/
public string GetReservedNickname(string url, EmptyRequestData info, string sessionID)
{
return _httpResponse.GetBody("SPTarkov");
}
/**
* Handle client/profile/status
* Called when creating a character when choosing a character face/voice
*/
public string GetProfileStatus(string url, EmptyRequestData info, string sessionID)
{
return _httpResponse.GetBody(_profileController.GetProfileStatus(sessionID));
}
/**
* Handle client/profile/view
* Called when viewing another players profile
*/
public string GetOtherProfile(string url, GetOtherProfileRequest request, string sessionID)
{
return _httpResponse.GetBody(_profileController.GetOtherProfile(sessionID, request));
}
/**
* Handle client/profile/settings
*/
public string GetProfileSettings(string url, GetProfileSettingsRequest info, string sessionID)
{
return _httpResponse.GetBody(_profileController.SetChosenProfileIcon(sessionID, info));
}
/**
* Handle client/game/profile/search
*/
public string SearchFriend(string url, SearchFriendRequestData info, string sessionID)
{
return _httpResponse.GetBody(_profileController.GetFriends(info, sessionID));
}
/**
* Handle launcher/profile/info
*/
public string GetMiniProfile(string url, GetMiniProfileRequestData info, string sessionID)
{
return _httpResponse.NoBody(_profileController.GetMiniProfile(sessionID));
}
/**
* Handle /launcher/profiles
*/
public string GetAllMiniProfiles(string url, EmptyRequestData info, string sessionID)
{
return _httpResponse.NoBody(_profileController.GetMiniProfiles());
}
}