module DellinInfo::API
Constants
- PATH
Public Class Methods
метод для запроса на ресурс “dellin.ru”, принимает класс (какую сущность мы хотим получить) и параметры - тело запроса (data)
# File lib/dellin_info_api.rb, line 68 def self.client_request(dellin_class, params = {}) client = Client.new() data = client.request(dellin_class.config['partial_url'], params).body begin JSON.parse data rescue JSON::ParserError => e return {'errormsg' => 'Похоже сервер Деловых Линий чем-то занят и не может сейчас ответить, попробуйте повторить запрос позже', 'json_err' => e.message} end end
Приложение можно сконфигурировать, для конфикурации необходимо указать в константе DellinInfo::API::PATH
путь до файла yml где ключ - название класса в snakecase, а значение - пара (параметр - значение) Например Client:
app_key: 1234
Все основные настройки хранятся в отдельном файле, данный метод рализует конфигурацию всех классов модуля
# File lib/dellin_info_api.rb, line 22 def self.configure! YAML.load_file(PATH).each_pair do |config_class, params| params.each_pair do |param, value| "DellinInfo::API::#{config_class.camelize}".constantize.config[param] = value end end end
метод поиска накладных по неполным данным параметры метода есть в readme метод возвращает коллецию заказов, объект класса DellinInfo::API::OrderCollection
# File lib/dellin_info_api.rb, line 47 def self.find_orders(params = {}) if params[:date_start].nil? set_time! params[:date_start] = @start_date params[:date_end] = @end_day end data = client_request(OrderCollection, params) OrderCollection.new data end
Данный метод получает ссылку на csv с данными справочников Деловых линиях dev.dellin.ru/api/public/tables/ и хэш, по которому можно отследить актуальность данных возвращается объект класса DellinInfo::API::Reference
# File lib/dellin_info_api.rb, line 35 def self.reference(type) type = type.to_sym url_type = Reference::TYPE[type] data = client_request(url_type) Reference.new(data) end
метод для установки время по умолчанию (неделя)
# File lib/dellin_info_api.rb, line 80 def self.set_time! @start_date = 6.day.ago.strftime('%Y-%m-%d') @end_day = Time.now.strftime('%Y-%m-%d') end
метод проверяющий статусы накладной по номеру
# File lib/dellin_info_api.rb, line 60 def self.status_oder(id_oder) data = client_request(OrderStatus, docid: id_oder) DellinInfo::API::OrderStatus.new data end