First pass at members resource controller
This commit is contained in:
14
Aurora/Services/Server/Controllers/EventController.cs
Normal file
14
Aurora/Services/Server/Controllers/EventController.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Aurora.Proto.PartyV2;
|
||||
|
||||
namespace Aurora.Services.Server.Controllers
|
||||
{
|
||||
public partial class RemotePartyController : RemotePartyService.RemotePartyServiceBase
|
||||
{
|
||||
public override Task GetEvents(GetEventsRequest request, Grpc.Core.IServerStreamWriter<BaseEvent> responseStream, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Aurora.Proto.PartyV2;
|
||||
using Aurora.Proto.General;
|
||||
|
||||
namespace Aurora.Services.Server.Controllers
|
||||
{
|
||||
public partial class RemotePartyController : RemotePartyService.RemotePartyServiceBase
|
||||
{
|
||||
public override Task<ListEventSubscriptionsResponse> ListEventSubscriptions(ListEventSubscriptionsRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task<EventSubscription> CreateEventSubscription(CreateEventSubscriptionRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task<Empty> DeleteEventSubscription(DeleteEventSubscriptionRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task<Empty> DeleteAllEventSubscriptions(DeleteAllEventSubscriptionsRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
29
Aurora/Services/Server/Controllers/MediaController.cs
Normal file
29
Aurora/Services/Server/Controllers/MediaController.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Aurora.Proto.PartyV2;
|
||||
|
||||
namespace Aurora.Services.Server.Controllers
|
||||
{
|
||||
public partial class RemotePartyController : RemotePartyService.RemotePartyServiceBase
|
||||
{
|
||||
public override Task<ListMediaResponse> ListMedia(ListMediaRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task<RemoteMedia> GetMedia(GetMediaRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task StreamMedia(StreamMediaRequest request, Grpc.Core.IServerStreamWriter<Proto.General.Chunk> responseStream, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task SyncMedia(SyncMediaRequest request, Grpc.Core.IServerStreamWriter<Sync> responseStream, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
112
Aurora/Services/Server/Controllers/MemberController.cs
Normal file
112
Aurora/Services/Server/Controllers/MemberController.cs
Normal file
@ -0,0 +1,112 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using Aurora.Proto.PartyV2;
|
||||
using Aurora.Proto.General;
|
||||
using Aurora.Utils;
|
||||
using Grpc.Core;
|
||||
|
||||
namespace Aurora.Services.Server.Controllers
|
||||
{
|
||||
public partial class RemotePartyController : RemotePartyService.RemotePartyServiceBase
|
||||
{
|
||||
private SortedList<string, Member> _memberList;
|
||||
|
||||
public override Task<ListMembersResponse> ListMembers(ListMembersRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
//Ignoring parent field because there is only one instance of the party
|
||||
ListMembersResponse resp = new ListMembersResponse();
|
||||
|
||||
//Determine start idx
|
||||
int startIdx = 0;
|
||||
if (!string.IsNullOrEmpty(request.PageToken))
|
||||
{
|
||||
startIdx = _memberList.IndexOfKey(request.PageToken) + 1;
|
||||
}
|
||||
|
||||
//Gather page
|
||||
List<Member> members = (List<Member>)_memberList.Values;
|
||||
resp.Members.AddRange(members.GetRange(startIdx, request.PageSize));
|
||||
|
||||
//Set next page token
|
||||
resp.NextPageToken = resp.Members[(startIdx + request.PageSize) - 1].Name;
|
||||
|
||||
return Task.FromResult(resp);
|
||||
}
|
||||
|
||||
public override Task<Member> GetMember(GetMemberRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
_memberList.TryGetValue(request.Name, out Member member);
|
||||
|
||||
if (member == null)
|
||||
{
|
||||
throw new KeyNotFoundException();
|
||||
}
|
||||
|
||||
return Task.FromResult(member);
|
||||
}
|
||||
|
||||
public override Task<Member> UpdateMember(UpdateMemberRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override Task<Member> CreateMember(CreateMemberRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
//Generate Guid
|
||||
string memberNameGuid = HashUtil.GetHashGuid(new string[] { context.Peer, request.Member.UserName }).ToString();
|
||||
string resourceName = string.Format("{0}/members/{1}", request.Parent, memberNameGuid);
|
||||
//Check if already added
|
||||
if (_memberList.ContainsKey(resourceName))
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.AlreadyExists, "Member already exists"));
|
||||
}
|
||||
|
||||
request.Member.Name = resourceName;
|
||||
|
||||
_memberList.Add(resourceName, request.Member);
|
||||
|
||||
BaseEvent @event = new BaseEvent
|
||||
{
|
||||
EventType = EventType.MemberCreated,
|
||||
MemberCreatedEvent = new MemberCreatedEvent
|
||||
{
|
||||
Member = request.Member,
|
||||
}
|
||||
};
|
||||
|
||||
//Fire event manager event
|
||||
this._eventManager.FireEvent(@event);
|
||||
|
||||
return Task.FromResult(request.Member);
|
||||
}
|
||||
|
||||
public override Task<Empty> DeleteMember(DeleteMemberRequest request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
string memberResourceName = request.Name;
|
||||
//Check if member exists
|
||||
if (!_memberList.ContainsKey(request.Name))
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.NotFound, "Member not found"));
|
||||
}
|
||||
|
||||
_memberList.Remove(memberResourceName);
|
||||
|
||||
BaseEvent @event = new BaseEvent
|
||||
{
|
||||
EventType = EventType.MemberDeleted,
|
||||
MemberDeletedEvent = new MemberDeletedEvent
|
||||
{
|
||||
MemberName = memberResourceName,
|
||||
}
|
||||
};
|
||||
|
||||
_eventManager.FireEvent(@event);
|
||||
_eventManager.RemoveAllSubscriptions(memberResourceName);
|
||||
_eventManager.CancelEventStream(memberResourceName);
|
||||
|
||||
return Task.FromResult(new Empty());
|
||||
}
|
||||
}
|
||||
}
|
56
Aurora/Services/Server/Controllers/PartyController.cs
Normal file
56
Aurora/Services/Server/Controllers/PartyController.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using Aurora.Proto.PartyV2;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
|
||||
|
||||
namespace Aurora.Services.Server.Controllers
|
||||
{
|
||||
public partial class RemotePartyController : RemotePartyService.RemotePartyServiceBase
|
||||
{
|
||||
private string _displayName;
|
||||
private string _description;
|
||||
private Member _hostMember;
|
||||
private DateTime _startDateTime;
|
||||
|
||||
private EventManager.EventManager _eventManager;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for partial class
|
||||
/// </summary>
|
||||
public RemotePartyController(string partyName, string description)
|
||||
{
|
||||
this._startDateTime = DateTime.Now;
|
||||
this._displayName = partyName;
|
||||
this._description = description;
|
||||
this._memberList = new SortedList<string, Member>();
|
||||
|
||||
string userName = SettingsService.Instance.Username;
|
||||
|
||||
this._eventManager = new EventManager.EventManager();
|
||||
|
||||
this._hostMember = new Member()
|
||||
{
|
||||
Name = userName,
|
||||
UserName = userName,
|
||||
IpAddress = ServerService.GetLocalIPAddress(),
|
||||
};
|
||||
}
|
||||
|
||||
public override Task<Party> GetParty(Proto.General.Empty request, Grpc.Core.ServerCallContext context)
|
||||
{
|
||||
Party party = new Party()
|
||||
{
|
||||
Name = "party/party1",
|
||||
DisplayName = this._displayName,
|
||||
Description = this._description,
|
||||
HostIp = ServerService.GetLocalIPAddress(),
|
||||
HostMember = this._hostMember,
|
||||
CreatedOn = Timestamp.FromDateTime(_startDateTime)
|
||||
};
|
||||
|
||||
return Task.FromResult(party);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user