novaposhta2 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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']
|