/// <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)); }
/// <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)); }