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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25cc58e23ad7ba008ef25b3532c2be36784d4c9b
4
- data.tar.gz: 7923aebdef192f0162fb1ebb0a71f6651445dbad
3
+ metadata.gz: e576fd5495cd3edaef48d9a6eb05a82943236c42
4
+ data.tar.gz: 0e3f131db2b26e4cb4456627c5a140a4e0e5a1dc
5
5
  SHA512:
6
- metadata.gz: 9861d17bed71cac34da566aa22f338b51611e2716a9a9d6fa58461f4ece9829fda65ebe15d63216b99c3c07547ba2cabde218c30cd0265a9d9cdef8e7b607c7c
7
- data.tar.gz: 30decd7ad6fe034a32e61271812f54894ce4be5a44f38536260967f386af19b6f7f64dccf5397c05798b3bc2a6060354aadf9a3b4e2cbc9a079b1e731e8d992a
6
+ metadata.gz: c4cc7f0e8404322f66b704aecf3a191fb56624d8725707a198e7d8ef7cb80f759e26f6b783b2640b4cb101f6b7e13495412b05e36611ca6b137314b8f4fb7571
7
+ data.tar.gz: 6afd0e339b3b18a6cb19b5b4e4a6dbff70f921400b93058b48e494fa80efe0b136617cdb175bdfa5c26cfddf5c5401986b5648647a12403b627fa15dcca2b4b2
@@ -1,7 +1,8 @@
1
1
  require 'yaml'
2
2
  require 'active_support/all'
3
3
  require 'date'
4
- require_relative 'dellininfo/valide_data'
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
- # Приложение можно сконфигурировать, для конфикурации необходимо указать в константе DellinInfo::API::PATH путь до файла yml
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
- def self.find_oders(params = {})
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
 
@@ -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
  # но оставлен для возможности расширить функционал
@@ -1,8 +1,7 @@
1
1
  require 'date'
2
2
  module DellinInfo
3
3
  module API
4
- class Order
5
- include ValideData
4
+ class Order < BaseApi
6
5
  ATTRIBUTES = [
7
6
  :availableAD,
8
7
  :estimatedDeliveryDate,
@@ -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(oders_hash)
23
- @errors = oders_hash['errormsg']
21
+ def initialize(orders_hash)
22
+ @errors = orders_hash['errormsg']
24
23
  @orders = []
25
- @cash = there_tracks(oders_hash)
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|
@@ -1,8 +1,6 @@
1
1
  module DellinInfo
2
2
  module API
3
- class OrderStatus
4
- include ValideData
5
- include ActiveSupport::Configurable
3
+ class OrderStatus < BaseApi
6
4
 
7
5
  config['partial_url'] = 'public/tracker'
8
6
 
@@ -1,6 +1,6 @@
1
1
  module DellinInfo
2
2
  module API
3
- class Reference
3
+ class Reference < BaseApi
4
4
  attr_reader :hash, :url
5
5
 
6
6
  TYPE = {
@@ -1,23 +1,13 @@
1
+ # Модуль для обработки тела ответа, от ресурса dellin.ru
1
2
  module DellinInfo
2
3
  module API
3
- module ValideData
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
- track.each_pair do |param, val|
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.3
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-07 00:00:00.000000000 Z
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
- - lib/dellininfo/valide_data.rb
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.5.1
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: