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
-
.client_request(dellin_class, params = {}) ⇒ Object
метод для запроса на ресурс “dellin.ru”, принимает класс (какую сущность мы хотим получить) и параметры - тело запроса (data).
-
.configure! ⇒ Object
Приложение можно сконфигурировать, для конфикурации необходимо указать в константе DellinInfo::API::PATH путь до файла yml где ключ - название класса в snakecase, а значение - пара (параметр - значение) Например Client: app_key: 1234 Все основные настройки хранятся в отдельном файле, данный метод рализует конфигурацию всех классов модуля.
-
.find_orders(params = {}) ⇒ Object
метод поиска накладных по неполным данным параметры метода есть в readme метод возвращает коллецию заказов, объект класса DellinInfo::API::OrderCollection.
-
.reference(type) ⇒ Object
Данный метод получает ссылку на csv с данными справочников Деловых линиях dev.dellin.ru/api/public/tables/ и хэш, по которому можно отследить актуальность данных возвращается объект класса DellinInfo::API::Reference.
-
.set_time! ⇒ Object
метод для установки время по умолчанию (неделя).
-
.status_oder(id_oder) ⇒ Object
метод проверяющий статусы накладной по номеру.
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.} 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 |