module DellinInfo::API

Constants

PATH

Public Class Methods

client_request(dellin_class, params = {}) click to toggle source

метод для запроса на ресурс “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
configure!() click to toggle source

Приложение можно сконфигурировать, для конфикурации необходимо указать в константе 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
find_orders(params = {}) click to toggle source

метод поиска накладных по неполным данным параметры метода есть в 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
reference(type) click to toggle source

Данный метод получает ссылку на 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
set_time!() click to toggle source

метод для установки время по умолчанию (неделя)

# 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
status_oder(id_oder) click to toggle source

метод проверяющий статусы накладной по номеру

# 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