/// <summary>
        /// Posts async.
        /// </summary>
        /// <typeparam name="TRequest">The TRequest.</typeparam>
        /// <typeparam name="TResponse">The TResponse.</typeparam>
        /// <param name="description">The description.</param>
        /// <param name="requestUri">The requestUri.</param>
        /// <param name="requestContent">The requestContent.</param>
        /// <param name="cancellationToken">The cancellationToken.</param>
        /// <param name="dataInterchangeFormat">The dataInterchangeFormat.</param>
        /// <param name="applicableProvider">The applicableProvider.</param>
        /// <param name="jsonSerializerSettings">The jsonSerializerSettings.</param>
        /// <returns>Task{TResponse}.</returns>
        public Task <TResponse> PostAsync <TRequest, TResponse>(string description,
                                                                Uri requestUri,
                                                                TRequest requestContent,
                                                                CancellationToken cancellationToken,
                                                                DataInterchangeFormat dataInterchangeFormat,
                                                                string applicableProvider,
                                                                JsonSerializerSettings jsonSerializerSettings = null)
        {
            StringContent serializedRequestContent = new StringContent("");
            int           dataInterchangeFormatInt = Convert.ToInt32(dataInterchangeFormat);

            if (dataInterchangeFormatInt == 0)
            {
                serializedRequestContent = SerializeAsJsonString(requestContent, jsonSerializerSettings);
            }
            else if (dataInterchangeFormatInt == 1)
            {
                serializedRequestContent = SerializeAsXmlString(requestContent);
            }
            else
            {
                throw new ArgumentException("Method parameter 'dataInterchangeFormat' must have a value of 'xml' or 'json'.", nameof(dataInterchangeFormat));
            }

            return(CallApiAsync <TResponse>(description,
                                            client => CheckForWebException(description, client.PostAsync(requestUri, serializedRequestContent, cancellationToken)),
                                            applicableProvider));
        }
 public IDataInterchangeFormatter CreateFormatter(DataInterchangeFormat format)
 {
     IDataInterchangeFormatter retVal;
     switch (format)
     {
         default:
             retVal = new Utf8Formatter();
             break;
     }
     return retVal;
 }