Ejemplo n.º 1
0
 /// <summary>
 /// Create the normal beacon message
 /// </summary>
 /// <returns></returns>
 protected Message InstructorMakeBeaconMessage()
 {
     using (Synchronizer.Lock(this.m_Model.Participant.SyncRoot)) {
         using (Synchronizer.Lock(this.m_Model.Participant.Role.SyncRoot)) {
             Message         role       = RoleMessage.ForRole(this.m_Model.Participant.Role);
             InstructorModel instructor = ((InstructorModel)this.m_Model.Participant.Role);
             if (instructor.CurrentPresentation != null)
             {
                 role.InsertChild(new InstructorCurrentPresentationChangedMessage(instructor.CurrentPresentation));
             }
             if (instructor.CurrentDeckTraversal != null)
             {
                 using (Synchronizer.Lock(instructor.CurrentDeckTraversal.SyncRoot)) {
                     Message traversal   = new InstructorCurrentDeckTraversalChangedMessage(instructor.CurrentDeckTraversal);
                     Message predecessor = traversal.Predecessor;
                     traversal.Predecessor = new SlideInformationMessage(instructor.CurrentDeckTraversal.Current.Slide);
                     traversal.Predecessor.InsertChild(new TableOfContentsEntryMessage(instructor.CurrentDeckTraversal.Current));
                     traversal.Predecessor.AddOldestPredecessor(predecessor);
                     role.InsertChild(traversal);
                 }
             }
             return(role);
         }
     }
 }
Ejemplo n.º 2
0
        public HttpResponseMessage Post(TokenDTO token)
        {
            HttpResponseMessage responseMessage;
            bool valid;

            if (token.Token == null)
            {
                valid = false;
            }
            else
            {
                valid = auth.VerifyTokenDate(token.Token);
                //  valid = true;
            }

            if (!valid)
            {
                // Token invalid
                var json = new JSendMessage("fail", "Invalid Authorization Key");
                responseMessage = Request.CreateResponse(HttpStatusCode.Forbidden, json);
            }
            else
            {
                string role = tokens.GetRoleByToken(token.Token);
                // string role = "admin";
                var json = new RoleMessage(role);
                responseMessage = Request.CreateResponse(HttpStatusCode.OK, json);
            }

            return(responseMessage);
        }
Ejemplo n.º 3
0
    public async Task RemoveRoleReactionAsync(DiscordMessage message, DiscordEmoji emoji)
    {
        RoleMessage tracked = await GetTrackedMessageAsync(message) ?? throw new ArgumentException("Message is not tracked.", nameof(message));

        tracked.Roles.Remove(emoji.Name);
        await _roleMessages.ReplaceOneAsync(Builders <RoleMessage> .Filter.Eq(m => m.Id, tracked.Id), tracked);
    }
Ejemplo n.º 4
0
    public void UpdateRole(int role)
    {
        if (IsConnected())
        {
            // update local player.
            players[serverAssignedId].SetRole(role);

            var roleMessage = new RoleMessage();
            roleMessage.role = role;
            client.Send(CustomNetMsg.Role, roleMessage);
        }
    }
Ejemplo n.º 5
0
    public async Task InitReactionsAsync(CommandContext context, DiscordMessage message)
    {
        RoleMessage tracked = await _service.GetTrackedMessageAsync(message);

        foreach (string reaction in tracked.Roles.Keys)
        {
            if (!DiscordEmoji.TryFromUnicode(context.Client, reaction, out DiscordEmoji emoji))
            {
                DiscordEmoji.TryFromName(context.Client, $":{reaction}:", out emoji);
            }

            await message.CreateReactionAsync(emoji);
        }

        await message.RespondAsync("Reactions initialized.");
    }
Ejemplo n.º 6
0
        public MyMessage Get()
        {
            AuthModel authModel = new AuthModel();

            var         header  = Request.Headers.SingleOrDefault(x => x.Key == "token");
            bool        isAdmin = authModel.VerifyAdminToken(header.Value.First());
            RoleMessage msg;

            if (isAdmin)
            {
                msg = new RoleMessage("admin");
                return(msg);
            }
            else
            {
                msg = new RoleMessage("user");
                return(msg);
            }
        }
Ejemplo n.º 7
0
    void GotRole(NetworkMessage netMsg)
    {
        var msg = netMsg.ReadMessage <RoleMessage>();

        players[netMsg.conn.connectionId].SetRole(msg.role);


        if (lobbyGui != null)
        {
            lobbyGui.UpdateUI(players);
        }

        // broadcast
        var roleMessage = new RoleMessage();

        roleMessage.id   = netMsg.conn.connectionId;
        roleMessage.role = msg.role;
        NetworkServer.SendToAll(CustomNetMsg.Role, roleMessage);
    }
Ejemplo n.º 8
0
        /// <summary>
        /// If current role is public, then resend RoleMessage and GroupMessage for reconnection
        /// </summary>
        private void SendRoleAndGroupMessage(TCPMessageSender sender)
        {
            using (Synchronizer.Lock(this.m_Model.Participant.SyncRoot)) {
                if (this.m_Model.Participant.Role is PublicModel)
                {
                    //Send RoleMessage
                    UW.ClassroomPresenter.Network.Messages.Message message = RoleMessage.ForRole(this.m_Model.Participant.Role);
                    message.Group = Group.AllParticipant;
                    sender.Send(message);

                    //Send GroupMessage
                    foreach (Group group in this.m_Model.Participant.Groups)
                    {
                        message       = new ParticipantGroupAddedMessage(group);
                        message.Group = Group.AllParticipant;
                        sender.Send(message);
                    }
                }
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Even though we are not an instructor, here we fake an instructor beacon message for the purpose of unicast to multicast
        /// bridging.
        /// </summary>
        /// <returns></returns>
        protected Message NonInstructorMakeBeaconMessage()
        {
            InstructorModel instructor = new InstructorModel(m_NonInstructorId);
            Message         role       = RoleMessage.ForRole(instructor);

            using (Synchronizer.Lock(this.m_Model.Workspace)) {
                if (this.m_Model.Workspace.CurrentPresentation != null)
                {
                    using (Synchronizer.Lock(this.m_Model.Workspace.CurrentPresentation.SyncRoot)) {
                        if (this.m_Model.Workspace.CurrentPresentation.Value != null)
                        {
                            role.InsertChild(new InstructorCurrentPresentationChangedMessage(this.m_Model.Workspace.CurrentPresentation));
                        }
                    }
                }

                if (this.m_Model.Workspace.CurrentDeckTraversal != null)
                {
                    using (Synchronizer.Lock(this.m_Model.Workspace.CurrentDeckTraversal.SyncRoot)) {
                        if (this.m_Model.Workspace.CurrentDeckTraversal.Value != null)
                        {
                            Message traversal   = new InstructorCurrentDeckTraversalChangedMessage(this.m_Model.Workspace.CurrentDeckTraversal.Value, false);
                            Message predecessor = traversal.Predecessor;
                            using (Synchronizer.Lock((~this.m_Model.Workspace.CurrentDeckTraversal).SyncRoot)) {
                                using (Synchronizer.Lock((~this.m_Model.Workspace.CurrentDeckTraversal).Current.SyncRoot)) {
                                    traversal.Predecessor = new SlideInformationMessage((~this.m_Model.Workspace.CurrentDeckTraversal).Current.Slide);
                                    TableOfContentsModel.Entry entry = (~this.m_Model.Workspace.CurrentDeckTraversal).Current;
                                    if (entry != null)
                                    {
                                        traversal.Predecessor.InsertChild(new TableOfContentsEntryMessage(entry));
                                    }
                                    traversal.Predecessor.AddOldestPredecessor(predecessor);
                                    role.InsertChild(traversal);
                                }
                            }
                        }
                    }
                }
            }
            return(role);
        }
Ejemplo n.º 10
0
    public async Task TrackNewRoleReactionAsync(DiscordMessage message, DiscordEmoji emoji, DiscordRole role)
    {
        RoleMessage tracked = await GetTrackedMessageAsync(message);

        if (tracked is null)
        {
            tracked = new(message);
            await _roleMessages.InsertOneAsync(tracked);
        }

        if (tracked.Roles.Count >= RoleMessage.MaxReactionsPerMessage)
        {
            throw new ArgumentOutOfRangeException(nameof(message), "Cannot track more reactions for this message.");
        }

        if (tracked.Roles.ContainsKey(emoji.Name))
        {
            throw new ArgumentException("This Emoji is already used for another role.", nameof(emoji));
        }

        tracked.Roles.Add(emoji.Name, role.Id);
        await _roleMessages.ReplaceOneAsync(Builders <RoleMessage> .Filter.Eq(m => m.Id, tracked.Id), tracked);
    }
Ejemplo n.º 11
0
    public async Task <ulong> GetTrackedRoleIdAsync(DiscordMessage message, DiscordEmoji emoji)
    {
        RoleMessage tracked = await GetTrackedMessageAsync(message);

        return(tracked?.Roles.GetValueOrDefault <string, ulong>(emoji.Name, 0) ?? 0);
    }