novaposhta2 0.0.1 → 0.0.2
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/novaposhta2.rb +23 -4
- data/lib/novaposhta2/base.rb +3 -1
- data/lib/novaposhta2/city.rb +9 -1
- data/lib/novaposhta2/configuration.rb +1 -1
- data/lib/novaposhta2/package.rb +19 -2
- data/lib/novaposhta2/person.rb +4 -2
- data/lib/novaposhta2/post.rb +1 -1
- data/lib/novaposhta2/warehouse.rb +3 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e13968415cc81354bf69c306d9484608256340e2
|
4
|
+
data.tar.gz: 62e993aa3d81cea2fbf646c62e7f0e8e0c29492e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eee5c85f5011ba2f45f0be48befe7ed1224a8706e8671a2eec35e8bca67fbf605964066d1a4e2a4b656085b85627227fa27f248b2378c6744977ce0a74f509e2
|
7
|
+
data.tar.gz: 0a5fa114f68ffabceb81bf67473b21cb53bac3d005cde75280a8a54be57dc0e99e61486b7bb9237792326c322022decb3a0eee45aee3abc6131acfd8b865d7c8
|
data/lib/novaposhta2.rb
CHANGED
@@ -9,19 +9,38 @@ require 'novaposhta2/city'
|
|
9
9
|
require 'novaposhta2/warehouse'
|
10
10
|
require 'novaposhta2/package'
|
11
11
|
|
12
|
+
# Novaposhta API 2.0 Gem.
|
13
|
+
# == Configuration
|
14
|
+
#
|
15
|
+
# Novaposhta2.configure do |config|
|
16
|
+
# config.api_key = 'Your api key'
|
17
|
+
# config.sender = {
|
18
|
+
# ref: 'Sender reference',
|
19
|
+
# city: 'City reference',
|
20
|
+
# address: 'Sender warehouse reference',
|
21
|
+
# contact: 'Sender contact reference',
|
22
|
+
# phone: 'Sender phone',
|
23
|
+
# }
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
|
12
27
|
module Novaposhta2
|
13
|
-
|
28
|
+
|
29
|
+
def self.configuration # :nodoc:
|
14
30
|
@configuration ||= Configuration.new
|
15
31
|
end
|
16
32
|
|
17
|
-
def self.configure
|
33
|
+
def self.configure # :nodoc:
|
18
34
|
yield configuration
|
19
35
|
end
|
20
36
|
|
21
|
-
|
22
|
-
|
37
|
+
# Returns a city found by name or part of the name.
|
38
|
+
# If more than one city match +name+ - returns nil.
|
39
|
+
def self.[](name)
|
40
|
+
City[name]
|
23
41
|
end
|
24
42
|
|
43
|
+
# Returns shipment tracking information by tracking number.
|
25
44
|
def self.track(tracking)
|
26
45
|
Package.track(tracking)
|
27
46
|
end
|
data/lib/novaposhta2/base.rb
CHANGED
data/lib/novaposhta2/city.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Novaposhta2
|
2
|
+
# Represents a known city.
|
2
3
|
class City < Base
|
3
|
-
attr_reader :description, :description_ru, :ref
|
4
|
+
attr_reader :description, :description_ru, :ref # :nodoc:
|
4
5
|
|
5
6
|
def initialize(params)
|
6
7
|
@description = params['Description']
|
@@ -8,6 +9,7 @@ module Novaposhta2
|
|
8
9
|
@ref = params['Ref']
|
9
10
|
end
|
10
11
|
|
12
|
+
# Lists all warehouses or returns warehouse by number.
|
11
13
|
def warehouses(number = nil)
|
12
14
|
@warehouses ||= post('Address', 'getWarehouses', CityRef: @ref)['data'].map do |data|
|
13
15
|
Warehouse.new(data)
|
@@ -22,20 +24,25 @@ module Novaposhta2
|
|
22
24
|
|
23
25
|
alias [] warehouses
|
24
26
|
|
27
|
+
# Creates new person that belongs to the city.
|
25
28
|
def person(firstname, lastname, phone)
|
26
29
|
Person.new(self, firstname, lastname, phone)
|
27
30
|
end
|
28
31
|
|
29
32
|
class << self
|
30
33
|
|
34
|
+
# Returns city matching +ref+.
|
31
35
|
def find_by_ref(ref)
|
32
36
|
query(Ref: ref).first
|
33
37
|
end
|
34
38
|
|
39
|
+
# Returns all cities matching a pattern.
|
35
40
|
def match(name)
|
36
41
|
query(FindByString: name)
|
37
42
|
end
|
38
43
|
|
44
|
+
# Returns a city by name or part of the name.
|
45
|
+
# If more than one city match a +name+ - returns nil.
|
39
46
|
def find(name)
|
40
47
|
m = match(name)
|
41
48
|
m.count == 1 ? m[0] : nil
|
@@ -43,6 +50,7 @@ module Novaposhta2
|
|
43
50
|
|
44
51
|
alias [] find
|
45
52
|
|
53
|
+
# Returns list of all known cities.
|
46
54
|
def all
|
47
55
|
match(nil)
|
48
56
|
end
|
data/lib/novaposhta2/package.rb
CHANGED
@@ -1,17 +1,31 @@
|
|
1
1
|
module Novaposhta2
|
2
|
+
|
3
|
+
# Represents a package.
|
4
|
+
# == Options
|
5
|
+
# [cost] *Mandatory*. Cost of the package contents, for insurance needs.
|
6
|
+
# [description] *Mandatory*. Description of package contents.
|
7
|
+
# [internal_number] Internal order number.
|
8
|
+
# [payer_type] *Sender* of *Recipient*. Default: *Sender*.
|
9
|
+
# [payment_method] *Cash* or *NonCash*. Default: *Cash*.
|
10
|
+
# [seats] Number of boxes. Default: *1*.
|
11
|
+
# [volume] *Mandatory*. Volume of the package in *cm*
|
12
|
+
# [weight] *Mandatory*. Weight of the package in *kg*.
|
13
|
+
|
2
14
|
class Package < Base
|
3
|
-
attr_accessor :address, :recipient, :options, :ref, :tracking
|
15
|
+
attr_accessor :address, :recipient, :options, :ref, :tracking # :nodoc:
|
4
16
|
|
5
|
-
def initialize(address, recipient, options = {})
|
17
|
+
def initialize(address, recipient, options = {}) # :nodoc:
|
6
18
|
@address = address
|
7
19
|
@recipient = recipient
|
8
20
|
@options = options
|
9
21
|
end
|
10
22
|
|
23
|
+
# Get the shipping rate.
|
11
24
|
def rate
|
12
25
|
post('InternetDocument', 'getDocumentPrice', params)['data'][0]['Cost'].to_i
|
13
26
|
end
|
14
27
|
|
28
|
+
# Commit the package.
|
15
29
|
def save
|
16
30
|
data = post('InternetDocument', 'save', params)
|
17
31
|
|
@@ -19,14 +33,17 @@ module Novaposhta2
|
|
19
33
|
@tracking = data['data'][0]['IntDocNumber']
|
20
34
|
end
|
21
35
|
|
36
|
+
# Print package markings.
|
22
37
|
def print
|
23
38
|
"https://my.novaposhta.ua/orders/printMarkings/orders/#{@ref}/type/html/apiKey/#{config.api_key}"
|
24
39
|
end
|
25
40
|
|
41
|
+
# Get package tracking information.
|
26
42
|
def track
|
27
43
|
self.class.track(@tracking)
|
28
44
|
end
|
29
45
|
|
46
|
+
# Get tracking information by tracking number.
|
30
47
|
def self.track(tracking)
|
31
48
|
post('InternetDocument', 'documentsTracking', Documents: [tracking.to_s])['data'][0]
|
32
49
|
end
|
data/lib/novaposhta2/person.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Novaposhta2
|
2
|
+
# Represents a package recipient.
|
2
3
|
class Person < Base
|
3
|
-
attr_reader :city, :firstname, :lastname, :phone, :ref, :contact_ref
|
4
|
+
attr_reader :city, :firstname, :lastname, :phone, :ref, :contact_ref # :nodoc:
|
4
5
|
|
5
|
-
def initialize(city, firstname, lastname, phone)
|
6
|
+
def initialize(city, firstname, lastname, phone) #:nodoc:
|
6
7
|
@city, @firstname, @lastname, @phone = city, firstname, lastname, phone
|
7
8
|
|
8
9
|
data = post('Counterparty', 'save',
|
@@ -19,6 +20,7 @@ module Novaposhta2
|
|
19
20
|
@contact_ref = data['ContactPerson']['data'][0]['Ref']
|
20
21
|
end
|
21
22
|
|
23
|
+
# Creates a new package for the person.
|
22
24
|
def package(address, options)
|
23
25
|
Package.new(address, self, options)
|
24
26
|
end
|
data/lib/novaposhta2/post.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Novaposhta2
|
2
|
+
# Represents a warehouse.
|
2
3
|
class Warehouse < Base
|
3
|
-
attr_reader :description, :description_ru, :ref, :number, :longtitude, :latitude
|
4
|
+
attr_reader :description, :description_ru, :ref, :number, :longtitude, :latitude #:nodoc:
|
4
5
|
|
5
|
-
def initialize(params)
|
6
|
+
def initialize(params) #:nodoc:
|
6
7
|
@description = params['Description']
|
7
8
|
@description_ru = params['DescriptionRu']
|
8
9
|
@ref = params['Ref']
|