Пример #1
0
        /// <summary>
        /// Выполняет POST-запрос к API.
        /// </summary>
        /// <param name="method">Имя метода текущего модуля.</param>
        /// <param name="obj">Данные запроса.</param>
        /// <remarks>Т.к. API одинаково поддерживает все типы запросов используется самый универсальный метод.</remarks>
        /// <returns>Строка в формате json.</returns>
        protected string SendRequest(string method, IJsonConvertable obj)
        {
            if (string.IsNullOrWhiteSpace(method))
            {
                throw new ArgumentException(Resources.EmptyModuleName);
            }

            var request = provider.CreateRequest(Token, QueriesProvider.RequestMethod.POST, method);

            provider.SetData(request, obj?.ToJson());

            var response = provider.ReadResponse(request);

            return(provider.ReadResponseAsString(response));
        }
Пример #2
0
        /// <summary>
        /// Recursively translates an object into json.
        /// </summary>
        /// <param name="arg">The object to translate.</param>
        /// <returns>The translated Json arg.</returns>
        private static JToken RecurisveTranslate(object arg)
        {
            // Try Json convertible
            IJsonConvertable jsonArg = arg as IJsonConvertable;

            if (jsonArg != null)
            {
                return(jsonArg.ToJson());
            }

            // Try collection
            IEnumerable <object> arrayArg = arg as IEnumerable <object>;

            if (arrayArg != null)
            {
                return(new JArray(arrayArg.Select(x => (object)RecurisveTranslate(x)).ToArray()));
            }

            // Try object value
            return(new JValue(arg));
        }