/*
         * Parameters:
         * 0: channel id
         * 1: page number
         * 2: page size
         * 3: include non-published? 1 or 0
         */
        private void GetItemsByChannel(HydraRequest request)
        {
            int channelId = int.Parse(request.Parameters[0]);

            Channel channel = Channel.ChannelGetById(channelId);
            List <ChannelMessage> messages = ChannelMessage.GetMessagesForChannel(channel);

            HydraArray array = new HydraArray();

            foreach (ChannelMessage message in messages)
            {
                HydraHashMap map = new HydraHashMap();

                foreach (var str in message.Strings)
                {
                    map.Items.Add(str.Key, new HydraUtf8String(str.Value));
                }

                array.Items.Add(new HydraHashMap(new Dictionary <string, IHydraItem>()
                {
                    { "input", map }
                }));
            }

            HydraResponse response = new HydraResponse(Connection, array);

            response.Send();
        }
        /*
         * Parameters:
         * 0: channel owner
         */
        private void GetChannelsByOwner(HydraRequest request)
        {
            ChannelOwner owner = (ChannelOwner)int.Parse(request.Parameters[0]);

            Game    game    = Game.GetFromApiKey(request.ApiKey);
            Channel channel = Channel.ChannelGetByOwner(game, owner);

            HydraArray array = new HydraArray(new List <IHydraItem>()
            {
                new HydraInt64(channel.ID),
            });

            HydraResponse response = new HydraResponse(Connection, array);

            response.Send();
        }
        private void ListSelectedForOwner(HydraRequest request)
        {
            int    userId   = int.Parse(request.Parameters[0]);
            int    pageNo   = int.Parse(request.Parameters[1]);
            int    maxItems = int.Parse(request.Parameters[2]);
            string itemType = request.Parameters[3];

            var characters = Character.GetCharacters(pageNo, maxItems);

            Console.WriteLine("Sending characters to game (max {0}):", maxItems);

            HydraArray array = new HydraArray();

            foreach (Character character in characters)
            {
                Console.WriteLine("{0} - {1}", character.ID, character.Name);
                HydraHashMap map = new HydraHashMap(new Dictionary <string, IHydraItem>()
                {
                    { "meta_data", new HydraHashMap(new Dictionary <string, IHydraItem>()
                        {
                            { "Name", new HydraUtf8String(character.Name) },
                            { "Avatar", new HydraBinary(character.AvatarData) },
                            { "Avatar Version", new HydraInt32(character.AvatarVersion) }
                        }
                                                    ) }
                });

                array.Items.Add(map);
            }

            Console.WriteLine();

            HydraResponse response = new HydraResponse(Connection, array);

            response.Send();
        }