Module: DellinInfo::API

Defined in:
lib/dellin_info_api.rb,
lib/dellininfo/order.rb,
lib/dellininfo/client.rb,
lib/dellininfo/reference.rb,
lib/dellininfo/order_status.rb,
lib/dellininfo/order_collection.rb

Defined Under Namespace

Classes: Client, Order, OrderCollection, OrderStatus, Reference

Constant Summary collapse

PATH =
'path to config.yml'

Class Method Summary collapse

Class Method Details

.client_request(dellin_class, params = {}) ⇒ Object

метод для запроса на ресурс “dellin.ru”, принимает класс (какую сущность мы хотим получить) и параметры - тело запроса (data)



68
69
70
71
72
73
74
75
76
77
# 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!Object

Приложение можно сконфигурировать, для конфикурации необходимо указать в константе DellinInfo::API::PATH путь до файла yml где ключ - название класса в snakecase, а значение - пара (параметр - значение) Например Client:

app_key: 1234

Все основные настройки хранятся в отдельном файле, данный метод рализует конфигурацию всех классов модуля



22
23
24
25
26
27
28
# 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 = {}) ⇒ Object

метод поиска накладных по неполным данным параметры метода есть в readme метод возвращает коллецию заказов, объект класса DellinInfo::API::OrderCollection



47
48
49
50
51
52
53
54
55
56
# 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) ⇒ Object

Данный метод получает ссылку на csv с данными справочников Деловых линиях dev.dellin.ru/api/public/tables/ и хэш, по которому можно отследить актуальность данных возвращается объект класса DellinInfo::API::Reference



35
36
37
38
39
40
41
# 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!Object

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



80
81
82
83
# 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) ⇒ Object

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



60
61
62
63
64
# 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