dellin_info_api 0.0.3 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dellin_info_api.rb +15 -10
- data/lib/dellininfo/client.rb +1 -2
- data/lib/dellininfo/order.rb +1 -2
- data/lib/dellininfo/order_collection.rb +5 -6
- data/lib/dellininfo/order_status.rb +1 -3
- data/lib/dellininfo/reference.rb +1 -1
- data/{lib/dellininfo/valide_data.rb → service/service_response_data.rb} +6 -23
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e576fd5495cd3edaef48d9a6eb05a82943236c42
|
4
|
+
data.tar.gz: 0e3f131db2b26e4cb4456627c5a140a4e0e5a1dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4cc7f0e8404322f66b704aecf3a191fb56624d8725707a198e7d8ef7cb80f759e26f6b783b2640b4cb101f6b7e13495412b05e36611ca6b137314b8f4fb7571
|
7
|
+
data.tar.gz: 6afd0e339b3b18a6cb19b5b4e4a6dbff70f921400b93058b48e494fa80efe0b136617cdb175bdfa5c26cfddf5c5401986b5648647a12403b627fa15dcca2b4b2
|
data/lib/dellin_info_api.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'active_support/all'
|
3
3
|
require 'date'
|
4
|
-
require_relative '
|
4
|
+
require_relative '../service/service_response_data'
|
5
|
+
require_relative 'dellininfo/base_api'
|
5
6
|
require_relative 'dellininfo/client'
|
6
7
|
require_relative 'dellininfo/reference'
|
7
8
|
require_relative 'dellininfo/order_collection'
|
@@ -10,15 +11,15 @@ require_relative 'dellininfo/order_status'
|
|
10
11
|
module DellinInfo
|
11
12
|
module API
|
12
13
|
|
13
|
-
|
14
|
-
# где ключ - название класса в snakecase, а значение - пара (параметр - значение)
|
15
|
-
PATH = 'path to config.yml'
|
16
|
-
|
14
|
+
PATH = 'path to config.yml'
|
17
15
|
|
18
16
|
|
17
|
+
# Приложение можно сконфигурировать, для конфикурации необходимо указать в константе DellinInfo::API::PATH путь до файла yml
|
18
|
+
# где ключ - название класса в snakecase, а значение - пара (параметр - значение)
|
19
|
+
# Например Client:
|
20
|
+
# app_key: 1234
|
19
21
|
# Все основные настройки хранятся в отдельном файле, данный метод рализует конфигурацию всех классов модуля
|
20
22
|
def self.configure!
|
21
|
-
|
22
23
|
YAML.load_file(PATH).each_pair do |config_class, params|
|
23
24
|
params.each_pair do |param, value|
|
24
25
|
"DellinInfo::API::#{config_class.camelize}".constantize.config[param] = value
|
@@ -39,8 +40,11 @@ module DellinInfo
|
|
39
40
|
Reference.new(data)
|
40
41
|
end
|
41
42
|
|
43
|
+
|
42
44
|
# метод поиска накладных по неполным данным
|
43
|
-
|
45
|
+
# параметры метода есть в readme
|
46
|
+
# метод возвращает коллецию заказов, объект класса DellinInfo::API::OrderCollection
|
47
|
+
def self.find_orders(params = {})
|
44
48
|
if params[:date_start].nil?
|
45
49
|
set_time!
|
46
50
|
params[:date_start] = @start_date
|
@@ -51,6 +55,7 @@ module DellinInfo
|
|
51
55
|
|
52
56
|
end
|
53
57
|
|
58
|
+
|
54
59
|
# метод проверяющий статусы накладной по номеру
|
55
60
|
def self.status_oder(id_oder)
|
56
61
|
data = client_request(OrderStatus, docid: id_oder)
|
@@ -58,6 +63,8 @@ module DellinInfo
|
|
58
63
|
|
59
64
|
end
|
60
65
|
|
66
|
+
# метод для запроса на ресурс "dellin.ru", принимает класс (какую сущность мы хотим получить)
|
67
|
+
# и параметры - тело запроса (data)
|
61
68
|
def self.client_request(dellin_class, params = {})
|
62
69
|
client = Client.new()
|
63
70
|
data = client.request(dellin_class.config['partial_url'], params).body
|
@@ -65,12 +72,10 @@ module DellinInfo
|
|
65
72
|
|
66
73
|
end
|
67
74
|
|
75
|
+
# метод для установки время по умолчанию (неделя)
|
68
76
|
def self.set_time!
|
69
|
-
|
70
77
|
@start_date = 6.day.ago.strftime('%Y-%m-%d')
|
71
78
|
@end_day = Time.now.strftime('%Y-%m-%d')
|
72
|
-
|
73
|
-
|
74
79
|
end
|
75
80
|
|
76
81
|
|
data/lib/dellininfo/client.rb
CHANGED
@@ -3,8 +3,7 @@ require 'json'
|
|
3
3
|
|
4
4
|
module DellinInfo
|
5
5
|
module API
|
6
|
-
class Client
|
7
|
-
include ActiveSupport::Configurable
|
6
|
+
class Client < BaseApi
|
8
7
|
|
9
8
|
# в проекте используется только публичные API, поэтому данный метод в годе больше не затронут,
|
10
9
|
# но оставлен для возможности расширить функционал
|
data/lib/dellininfo/order.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
+
require 'byebug'
|
1
2
|
require_relative 'order.rb'
|
2
3
|
module DellinInfo
|
3
4
|
module API
|
4
|
-
class OrderCollection
|
5
|
+
class OrderCollection < BaseApi
|
5
6
|
include Enumerable
|
6
|
-
include ValideData
|
7
|
-
include ActiveSupport::Configurable
|
8
7
|
|
9
8
|
config['partial_url'] = 'public/tracker_advanced'
|
10
9
|
|
@@ -19,10 +18,10 @@ module DellinInfo
|
|
19
18
|
|
20
19
|
|
21
20
|
private
|
22
|
-
def initialize(
|
23
|
-
@errors =
|
21
|
+
def initialize(orders_hash)
|
22
|
+
@errors = orders_hash['errormsg']
|
24
23
|
@orders = []
|
25
|
-
@cash =
|
24
|
+
@cash = orders_hash.dig('orders', 'tracker') unless orders_hash['orders'].blank?
|
26
25
|
|
27
26
|
unless @cash.nil?
|
28
27
|
@cash.each do |track|
|
data/lib/dellininfo/reference.rb
CHANGED
@@ -1,23 +1,13 @@
|
|
1
|
+
# Модуль для обработки тела ответа, от ресурса dellin.ru
|
1
2
|
module DellinInfo
|
2
3
|
module API
|
3
|
-
module
|
4
|
-
|
5
|
-
def there_tracks (oders_hash)
|
6
|
-
if oders_hash['orders'].empty?
|
7
|
-
p errors
|
8
|
-
nil
|
9
|
-
else
|
10
|
-
oders_hash.dig('orders', 'tracker')
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def parse_hash_response(track, key_is_hash)
|
4
|
+
module ServiceResponseData
|
17
5
|
|
6
|
+
# Метот для создания одного хэша из сложного хэша, где ключи могут иметь значения в виде хэшей
|
7
|
+
def parse_hash_response(response_hash, key_is_hash)
|
18
8
|
simple_hash = {}
|
19
9
|
|
20
|
-
|
10
|
+
response_hash.each_pair do |param, val|
|
21
11
|
unless param.to_s == key_is_hash.to_s
|
22
12
|
simple_hash[param.to_sym] = val
|
23
13
|
else
|
@@ -26,21 +16,14 @@ module DellinInfo
|
|
26
16
|
end
|
27
17
|
|
28
18
|
simple_hash
|
29
|
-
|
30
19
|
end
|
31
20
|
|
32
|
-
def set_attr_method(attr_sym)
|
33
|
-
atr = attr_sym.to_s + '='
|
34
|
-
atr.to_sym
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
21
|
def delete_spase_key(hash)
|
39
22
|
valid_hash = {}
|
40
23
|
hash.each_pair { |key, val| valid_hash[key.strip] = val }
|
41
24
|
valid_hash
|
42
25
|
|
43
|
-
end
|
26
|
+
end
|
44
27
|
|
45
28
|
end
|
46
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dellin_info_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Shvaykin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -51,7 +51,7 @@ files:
|
|
51
51
|
- lib/dellininfo/order_collection.rb
|
52
52
|
- lib/dellininfo/order_status.rb
|
53
53
|
- lib/dellininfo/reference.rb
|
54
|
-
-
|
54
|
+
- service/service_response_data.rb
|
55
55
|
homepage: https://github.com/AlexanderShvaykin/dellininfo/
|
56
56
|
licenses:
|
57
57
|
- MIT
|
@@ -74,10 +74,9 @@ requirements:
|
|
74
74
|
- Internet connection
|
75
75
|
- A good mood
|
76
76
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
77
|
+
rubygems_version: 2.6.3
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
80
|
summary: Search shipments by incomplete data and check the status of sending in a
|
81
81
|
transport company
|
82
82
|
test_files: []
|
83
|
-
has_rdoc:
|