-
-
Save tomfurrier/49f30b5628c2ce3d64eca51994f09e48 to your computer and use it in GitHub Desktop.
InviteToParty
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <summary> | |
/// Invites Player to the caller's Party Group. If no Party Group exists yet, it creates it. | |
/// </summary> | |
public static class InviteToParty | |
{ | |
[FunctionName("InviteToParty")] | |
public static async Task<dynamic> Run( | |
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, | |
ILogger log) | |
{ | |
var context = await SharedLogic.InitializeFunction(req, log); | |
ListMembershipRequest listMembershipRequest = new ListMembershipRequest() | |
{ | |
AuthenticationContext = context.PlayFabAuthenticationContext, | |
Entity = context.CallerEntity | |
}; | |
var listMembershipResponse = await PlayFabGroupsAPI.ListMembershipAsync(listMembershipRequest); | |
var groupWithRoles = listMembershipResponse.Result.Groups.SingleOrDefault(g => g.GroupName.StartsWith(Constants.PartyGroupPrefix)); | |
var group = groupWithRoles?.Group; | |
// Create group if it does not exist | |
if (group == null) | |
{ | |
var createGroupRequest = new CreateGroupRequest() | |
{ | |
AuthenticationContext = context.PlayFabAuthenticationContext, | |
Entity = context.CallerEntity, | |
GroupName = $"{Constants.PartyGroupPrefix}{context.CallerEntity.Id}", | |
}; | |
var createGroupResult = await PlayFabGroupsAPI.CreateGroupAsync(createGroupRequest); | |
log.LogInformation($"createGroupResult: {JsonConvert.SerializeObject(createGroupResult)}"); | |
if (createGroupResult.Error != null) | |
{ | |
log.LogCritical(createGroupResult.Error.ErrorMessage); | |
return new { Success = false, ErrorMessage = createGroupResult.Error.ErrorMessage }; | |
} | |
group = createGroupResult.Result.Group; | |
} | |
var getUserAccountInfoRequest = new GetUserAccountInfoRequest() | |
{ | |
AuthenticationContext = context.PlayFabAuthenticationContext, | |
PlayFabId = context.FunctionArgument.FriendPlayFabMasterId | |
}; | |
var getUserAccountInfoResult = await PlayFabServerAPI.GetUserAccountInfoAsync(getUserAccountInfoRequest); | |
if (getUserAccountInfoResult.Error != null) | |
{ | |
log.LogCritical(getUserAccountInfoResult.Error.ErrorMessage); | |
return new { Success = false, ErrorMessage = getUserAccountInfoResult.Error.ErrorMessage }; | |
} | |
var friendEntity = ClassConverter<PlayFab.ServerModels.EntityKey, PlayFab.GroupsModels.EntityKey>.Convert(getUserAccountInfoResult.Result.UserInfo.TitleInfo.TitlePlayerAccount); | |
var inviteToGroupRequest = new InviteToGroupRequest() | |
{ | |
AuthenticationContext = context.PlayFabAuthenticationContext, | |
Group = group, | |
Entity = friendEntity | |
}; | |
log.LogInformation($"inviteToGroupRequest: {JsonConvert.SerializeObject(inviteToGroupRequest)}"); | |
var inviteToGroupResult = await PlayFabGroupsAPI.InviteToGroupAsync(inviteToGroupRequest); | |
log.LogInformation($"inviteToGroupResult: {JsonConvert.SerializeObject(inviteToGroupResult)}"); | |
if (inviteToGroupResult.Error != null) | |
{ | |
log.LogCritical(inviteToGroupResult.Error.ErrorMessage); | |
return new { Success = false, ErrorMessage = inviteToGroupResult.Error.ErrorMessage }; | |
} | |
return new { Success = true, Group = group }; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment