/// <summary>
        /// unzip request
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private static object UnzipToken(HttpContextBase context)
        {
            var data     = GetPostData(context);
            var unzipper = new TokenUnzipper(data.root, data.category, data.token, data.replaceWithValue);

            return(unzipper.Unzip(data.preview));
        }
        /// <summary>
        /// Handles a token being deleted, either unzips the token or the entire token collection
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void OnItemDeleting(object sender, EventArgs e)
        {
            var item = Event.ExtractParameter <Item>(e, 0);

            if (item == null)
            {
                return;
            }
            if (item.Template.IsDerived(new ID(Constants.TokenTemplateBaseId)))
            {
                var parent = item.Parent;
                while (parent != null &&
                       !TemplateManager.GetTemplate(parent).IsDerived(new ID(Constants.TokenCollectionTemplateBaseId)))
                {
                    parent = parent.Parent;
                }
                if (parent == null)
                {
                    return;
                }
                var collection =
                    TokenKeeper.CurrentKeeper.GetTokenCollections().FirstOrDefault(x => x.GetBackingItemId() == parent.ID);
                if (collection == null)
                {
                    return;
                }
                var token = collection.GetTokens().FirstOrDefault(x => x.GetBackingItemId() == item.ID);
                if (token != null)
                {
                    TokenUnzipper unzipper = new TokenUnzipper("{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}",
                                                               collection.GetCollectionLabel(), token.Token, true);
                    unzipper.Unzip();
                    collection.RemoveToken(token.Token);
                }
                else
                {
                    collection.ResetTokenCache();
                }
            }
            else if (item.Template.IsDerived(new ID(Constants.TokenCollectionTemplateBaseId)))
            {
                var sitecoreTokenCollection =
                    TokenKeeper.CurrentKeeper.GetTokenCollections().FirstOrDefault(x => x.GetBackingItemId() == item.ID);
                if (sitecoreTokenCollection == null)
                {
                    return;
                }
                var tokens = sitecoreTokenCollection.GetTokens().ToList();
                foreach (var token in tokens)
                {
                    TokenUnzipper unzipper = new TokenUnzipper("{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}", sitecoreTokenCollection.GetCollectionLabel(), token.Token, true);
                    unzipper.Unzip();
                }
                TokenKeeper.CurrentKeeper.RemoveCollection(sitecoreTokenCollection.GetCollectionLabel());
            }
        }