novaposhta_api 0.1.2 → 0.1.3

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
  SHA256:
3
- metadata.gz: 1cb141215c0ba04abe8d7f9cfde0b63701dc76e6c79efda89cd71e143377c124
4
- data.tar.gz: 2b3155414b8fd53bfe58228a43acf303b105764b4c6de935e932eb541e989475
3
+ metadata.gz: db0a59d6e83adee1e273164e0a7c3dc33828e2e0167451a4da1047dc88eaaf9e
4
+ data.tar.gz: 465497a98ad80b79aa90ee2722bfce629db455a7467f9e4f13a03bedef4ed79d
5
5
  SHA512:
6
- metadata.gz: '04824c919c48bc77389f9001f153e9c8cf85153424a9144100af0ac519403dd98f5648a0ed469d7a1c8ca8b321fdf86a3ba69dc2fc68849740f4b0c0bbafe86e'
7
- data.tar.gz: d974dae19075ce7585ca2b260eb7f2c9b760cd379862885d680e500c8c16386142b906d2dd60ffc67f9f4d0d779dc1da4caaa2f438f5bfd52c833829fb205add
6
+ metadata.gz: cf3b30451c7c21da4d71b7439f725c00b136c6240816501cb808b83ce738548a315509cc478473ca344ac9e2975521230e9654b78bc35db4e489dc47ed2c711d
7
+ data.tar.gz: c18707a6fc4f48be132091376dc6ec39322868aabd1fdcb5201ae53421947abfff3bcbc790cc6068345fe979f3cfb9b47db6fe3a3263fb0c7f7e225033ed9a9f
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'novaposhta_api/version'
4
+ require 'novaposhta_api/configuration'
4
5
 
5
6
  module NovaposhtaApi
6
7
  autoload :Client, 'novaposhta_api/client'
@@ -18,6 +19,7 @@ module NovaposhtaApi
18
19
  autoload :CityResource, 'novaposhta_api/resources/city_resource'
19
20
  autoload :CounterpartyResource, 'novaposhta_api/resources/counterparty_resource'
20
21
  autoload :InternetDocumentResource, 'novaposhta_api/resources/internet_document_resource'
22
+ autoload :TrackingDocumentResource, 'novaposhta_api/resources/tracking_document_resource'
21
23
  autoload :SettlementResource, 'novaposhta_api/resources/settlement_resource'
22
24
  autoload :WarehouseResource, 'novaposhta_api/resources/warehouse_resource'
23
25
  end
@@ -26,6 +28,7 @@ module NovaposhtaApi
26
28
  autoload :City, 'novaposhta_api/models/city'
27
29
  autoload :Counterparty, 'novaposhta_api/models/counterparty'
28
30
  autoload :InternetDocument, 'novaposhta_api/models/internet_document'
31
+ autoload :TrackingDocument, 'novaposhta_api/models/tracking_document'
29
32
  autoload :Settlement, 'novaposhta_api/models/settlement'
30
33
  autoload :Warehouse, 'novaposhta_api/models/warehouse'
31
34
  end
@@ -34,10 +37,31 @@ module NovaposhtaApi
34
37
  ResourceError = Class.new(Error)
35
38
  ResponseError = Class.new(Error)
36
39
 
40
+ class << self
41
+ attr_writer :configuration
42
+ end
43
+
44
+ def self.configuration
45
+ @configuration ||= Configuration.new
46
+ end
47
+
48
+ def self.reset
49
+ @configuration = Configuration.new
50
+ end
51
+
52
+ # @example
53
+ # NovaposhtaApi.setup do |config|
54
+ # config.api_url = "https://api.novaposhta.ua/v2.0/json/"
55
+ # end
56
+ #
57
+ def self.setup
58
+ yield configuration
59
+ end
60
+
37
61
  if Faraday::Middleware.respond_to? :register_middleware
38
62
  Faraday::Response.register_middleware json: NovaposhtaApi::Middlewares::ParseJson
39
63
  Faraday::Response.register_middleware error_handling: NovaposhtaApi::Middlewares::ErrorHandling
40
64
  end
41
65
  end
42
66
 
43
- require 'novaposhta_api/rails'
67
+ require 'novaposhta_api/rails'
@@ -2,8 +2,6 @@
2
2
 
3
3
  module NovaposhtaApi
4
4
  class Client
5
- API_URL = 'https://api.novaposhta.ua/v2.0/json/'
6
-
7
5
  attr_reader :api_key
8
6
 
9
7
  def initialize(api_key: nil)
@@ -15,6 +13,7 @@ module NovaposhtaApi
15
13
  cities: Resources::CityResource,
16
14
  counterparties: Resources::CounterpartyResource,
17
15
  internet_documents: Resources::InternetDocumentResource,
16
+ tracking_documents: Resources::TrackingDocumentResource,
18
17
  settlements: Resources::SettlementResource,
19
18
  warehouses: Resources::WarehouseResource
20
19
  }
@@ -43,8 +42,8 @@ module NovaposhtaApi
43
42
 
44
43
  def connection
45
44
  @connection ||= NovaposhtaApi::HttpClient.new(
46
- uri: API_URL,
47
- api_key: api_key
45
+ uri: NovaposhtaApi.configuration.api_url,
46
+ api_key: api_key || NovaposhtaApi.configuration.api_key
48
47
  )
49
48
  end
50
49
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NovaposhtaApi
4
+ class Configuration
5
+ attr_accessor :api_url, :api_key
6
+
7
+ def initialize
8
+ @api_url = 'https://api.novaposhta.ua/v2.0/json/'
9
+ @api_key = ''
10
+ end
11
+ end
12
+ end
@@ -12,7 +12,7 @@ module NovaposhtaApi
12
12
  end
13
13
 
14
14
  def error_message(body)
15
- (from_codes(body['errorCodes']) || body['errors']).join(SEPARATOR)
15
+ (from_codes(body['errorCodes']) || body['errors'] || body['message']).join(SEPARATOR)
16
16
  end
17
17
 
18
18
  def from_codes(codes = [])
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NovaposhtaApi
4
+ module Models
5
+ class TrackingDocument < Model
6
+ property :number, from: :Number
7
+ property :status, from: :Status
8
+ property :status_code, from: :StatusCode
9
+ property :scheduled_delivery_date, from: :ScheduledDeliveryDate
10
+ end
11
+ end
12
+ end
@@ -3,4 +3,4 @@
3
3
  module NovaposhtaApi
4
4
  class Engine < ::Rails::Engine
5
5
  end
6
- end
6
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NovaposhtaApi
4
+ module Resources
5
+ class TrackingDocumentResource < Resource
6
+ def track(number)
7
+ response = post(
8
+ 'TrackingDocument/getStatusDocuments', documents: [{document_number: number}]
9
+ )
10
+
11
+ NovaposhtaApi::Models::TrackingDocument.extract_single(response)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NovaposhtaApi
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: novaposhta_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - venet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-24 00:00:00.000000000 Z
11
+ date: 2020-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -81,6 +81,7 @@ files:
81
81
  - lib/novaposhta_api.rb
82
82
  - lib/novaposhta_api/client.rb
83
83
  - lib/novaposhta_api/collection.rb
84
+ - lib/novaposhta_api/configuration.rb
84
85
  - lib/novaposhta_api/http_client.rb
85
86
  - lib/novaposhta_api/middlewares/error_handling.rb
86
87
  - lib/novaposhta_api/middlewares/parse_json.rb
@@ -89,6 +90,7 @@ files:
89
90
  - lib/novaposhta_api/models/counterparty.rb
90
91
  - lib/novaposhta_api/models/internet_document.rb
91
92
  - lib/novaposhta_api/models/settlement.rb
93
+ - lib/novaposhta_api/models/tracking_document.rb
92
94
  - lib/novaposhta_api/models/warehouse.rb
93
95
  - lib/novaposhta_api/rails.rb
94
96
  - lib/novaposhta_api/resource.rb
@@ -96,6 +98,7 @@ files:
96
98
  - lib/novaposhta_api/resources/counterparty_resource.rb
97
99
  - lib/novaposhta_api/resources/internet_document_resource.rb
98
100
  - lib/novaposhta_api/resources/settlement_resource.rb
101
+ - lib/novaposhta_api/resources/tracking_document_resource.rb
99
102
  - lib/novaposhta_api/resources/warehouse_resource.rb
100
103
  - lib/novaposhta_api/version.rb
101
104
  - novaposhta_api.gemspec