/// <summary>
        ///
        /// </summary>
        /// <param name="verb"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        private static WebRequest GetWebRequest(RESTVerb verb, TKey id)
        {
            // setup request
            var url     = _verbToUrlMapping[verb](id);
            var request = BaseWebRequest(url);

            request.Method = VerbToRequestMethod.Mapping[verb];
            return(request);
        }
        /// <summary>
        /// Changes the given item doing the given verb on it.  Send the item to a REST url
        /// </summary>
        /// <param name="verb"></param>
        /// <param name="item"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public TType ProcessItem(RESTVerb verb, TType item, TKey id)
        {
            var request = GetWebRequest(verb, id);

            AddItemToRequest(item, request);
            var result = SendRequest(request);

            return(result);
        }