dellin_info_api 0.0.3 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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: