novaposhta_api 0.1.0 → 0.1.5
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/README.md +35 -9
 - data/config/locales/novaposhta.en.yml +674 -0
 - data/config/locales/novaposhta.ru.yml +674 -0
 - data/config/locales/novaposhta.uk.yml +674 -0
 - data/lib/novaposhta_api.rb +27 -0
 - data/lib/novaposhta_api/client.rb +17 -15
 - data/lib/novaposhta_api/configuration.rb +12 -0
 - data/lib/novaposhta_api/http_client.rb +22 -22
 - data/lib/novaposhta_api/middlewares/error_handling.rb +2 -2
 - data/lib/novaposhta_api/models/city.rb +3 -0
 - data/lib/novaposhta_api/models/contact_person.rb +15 -0
 - data/lib/novaposhta_api/models/tracking_document.rb +12 -0
 - data/lib/novaposhta_api/models/warehouse.rb +2 -0
 - data/lib/novaposhta_api/rails.rb +6 -0
 - data/lib/novaposhta_api/resource.rb +4 -5
 - data/lib/novaposhta_api/resources/city_resource.rb +1 -3
 - data/lib/novaposhta_api/resources/settlement_resource.rb +1 -3
 - data/lib/novaposhta_api/resources/tracking_document_resource.rb +15 -0
 - data/lib/novaposhta_api/resources/warehouse_resource.rb +1 -3
 - data/lib/novaposhta_api/version.rb +1 -1
 - metadata +14 -7
 
    
        data/lib/novaposhta_api.rb
    CHANGED
    
    | 
         @@ -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,16 +28,41 @@ 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'
         
     | 
| 
      
 34 
     | 
    
         
            +
                autoload :ContactPerson, 'novaposhta_api/models/contact_person'
         
     | 
| 
       31 
35 
     | 
    
         
             
              end
         
     | 
| 
       32 
36 
     | 
    
         | 
| 
       33 
37 
     | 
    
         
             
              Error = Class.new(StandardError)
         
     | 
| 
       34 
38 
     | 
    
         
             
              ResourceError = Class.new(Error)
         
     | 
| 
       35 
39 
     | 
    
         
             
              ResponseError = Class.new(Error)
         
     | 
| 
       36 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 42 
     | 
    
         
            +
                attr_writer :configuration
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def self.configuration
         
     | 
| 
      
 46 
     | 
    
         
            +
                @configuration ||= Configuration.new
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              def self.reset
         
     | 
| 
      
 50 
     | 
    
         
            +
                @configuration = Configuration.new
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              # @example
         
     | 
| 
      
 54 
     | 
    
         
            +
              #   NovaposhtaApi.setup do |config|
         
     | 
| 
      
 55 
     | 
    
         
            +
              #     config.api_url = 'https://api.novaposhta.ua/v2.0/json/'
         
     | 
| 
      
 56 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 57 
     | 
    
         
            +
              #
         
     | 
| 
      
 58 
     | 
    
         
            +
              def self.setup
         
     | 
| 
      
 59 
     | 
    
         
            +
                yield configuration
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
       37 
62 
     | 
    
         
             
              if Faraday::Middleware.respond_to? :register_middleware
         
     | 
| 
       38 
63 
     | 
    
         
             
                Faraday::Response.register_middleware json: NovaposhtaApi::Middlewares::ParseJson
         
     | 
| 
       39 
64 
     | 
    
         
             
                Faraday::Response.register_middleware error_handling: NovaposhtaApi::Middlewares::ErrorHandling
         
     | 
| 
       40 
65 
     | 
    
         
             
              end
         
     | 
| 
       41 
66 
     | 
    
         
             
            end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            require 'novaposhta_api/rails'
         
     | 
| 
         @@ -2,11 +2,12 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NovaposhtaApi
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Client
         
     | 
| 
       5 
     | 
    
         
            -
                attr_reader : 
     | 
| 
      
 5 
     | 
    
         
            +
                attr_reader :api_key
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                def initialize( 
     | 
| 
       8 
     | 
    
         
            -
                  @ 
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(api_key: nil)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @api_key = api_key
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  yield(http.connection) if block_given?
         
     | 
| 
       10 
11 
     | 
    
         
             
                end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                def self.resources
         
     | 
| 
         @@ -14,14 +15,15 @@ module NovaposhtaApi 
     | 
|
| 
       14 
15 
     | 
    
         
             
                    cities: Resources::CityResource,
         
     | 
| 
       15 
16 
     | 
    
         
             
                    counterparties: Resources::CounterpartyResource,
         
     | 
| 
       16 
17 
     | 
    
         
             
                    internet_documents: Resources::InternetDocumentResource,
         
     | 
| 
      
 18 
     | 
    
         
            +
                    tracking_documents: Resources::TrackingDocumentResource,
         
     | 
| 
       17 
19 
     | 
    
         
             
                    settlements: Resources::SettlementResource,
         
     | 
| 
       18 
20 
     | 
    
         
             
                    warehouses: Resources::WarehouseResource
         
     | 
| 
       19 
21 
     | 
    
         
             
                  }
         
     | 
| 
       20 
22 
     | 
    
         
             
                end
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
24 
     | 
    
         
             
                def method_missing(name, *args, &block)
         
     | 
| 
       23 
     | 
    
         
            -
                  if  
     | 
| 
       24 
     | 
    
         
            -
                    resources[name] ||= self.class.resources[name].new( 
     | 
| 
      
 25 
     | 
    
         
            +
                  if with_resource?(name)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    resources[name] ||= self.class.resources[name].new(http: http)
         
     | 
| 
       25 
27 
     | 
    
         
             
                    resources[name]
         
     | 
| 
       26 
28 
     | 
    
         
             
                  else
         
     | 
| 
       27 
29 
     | 
    
         
             
                    super
         
     | 
| 
         @@ -29,22 +31,22 @@ module NovaposhtaApi 
     | 
|
| 
       29 
31 
     | 
    
         
             
                end
         
     | 
| 
       30 
32 
     | 
    
         | 
| 
       31 
33 
     | 
    
         
             
                def respond_to_missing?(method_name, include_private = false)
         
     | 
| 
       32 
     | 
    
         
            -
                   
     | 
| 
      
 34 
     | 
    
         
            +
                  with_resource?(method_name) || super
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                def with_resource?(resource_name)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  self.class.resources.keys.include?(resource_name)
         
     | 
| 
       33 
39 
     | 
    
         
             
                end
         
     | 
| 
       34 
40 
     | 
    
         | 
| 
       35 
41 
     | 
    
         
             
                def resources
         
     | 
| 
       36 
42 
     | 
    
         
             
                  @resources ||= {}
         
     | 
| 
       37 
43 
     | 
    
         
             
                end
         
     | 
| 
       38 
44 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                def  
     | 
| 
       40 
     | 
    
         
            -
                  @ 
     | 
| 
       41 
     | 
    
         
            -
                    uri: api_url,
         
     | 
| 
       42 
     | 
    
         
            -
                    api_key: api_key
         
     | 
| 
      
 45 
     | 
    
         
            +
                def http
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @http ||= NovaposhtaApi::HttpClient.new(
         
     | 
| 
      
 47 
     | 
    
         
            +
                    uri: NovaposhtaApi.configuration.api_url,
         
     | 
| 
      
 48 
     | 
    
         
            +
                    api_key: api_key || NovaposhtaApi.configuration.api_key
         
     | 
| 
       43 
49 
     | 
    
         
             
                  )
         
     | 
| 
       44 
50 
     | 
    
         
             
                end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                def delivery_member_api_key
         
     | 
| 
       47 
     | 
    
         
            -
                  @delivery_member_api_key ||= Delivery::Member.select(:api_key).primary&.api_key
         
     | 
| 
       48 
     | 
    
         
            -
                end
         
     | 
| 
       49 
51 
     | 
    
         
             
              end
         
     | 
| 
       50 
52 
     | 
    
         
             
            end
         
     | 
| 
         @@ -11,6 +11,8 @@ module NovaposhtaApi 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                def initialize(config)
         
     | 
| 
       13 
13 
     | 
    
         
             
                  @config = config.with_indifferent_access
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  yield(connection) if block_given?
         
     | 
| 
       14 
16 
     | 
    
         
             
                end
         
     | 
| 
       15 
17 
     | 
    
         | 
| 
       16 
18 
     | 
    
         
             
                def uri
         
     | 
| 
         @@ -22,26 +24,21 @@ module NovaposhtaApi 
     | 
|
| 
       22 
24 
     | 
    
         
             
                end
         
     | 
| 
       23 
25 
     | 
    
         | 
| 
       24 
26 
     | 
    
         
             
                def request(http_method, path, params = {})
         
     | 
| 
       25 
     | 
    
         
            -
                  options = build_options(path).merge 
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
                  options = build_options(path).merge(methodProperties: transform_keys(params))
         
     | 
| 
       27 
28 
     | 
    
         
             
                  response = connection.public_send(http_method, '', options.to_json)
         
     | 
| 
       28 
29 
     | 
    
         
             
                  response.body
         
     | 
| 
       29 
30 
     | 
    
         
             
                end
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                 
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                def convert_params_to_hash(params)
         
     | 
| 
       38 
     | 
    
         
            -
                  if params.respond_to?(:to_unsafe_h)
         
     | 
| 
       39 
     | 
    
         
            -
                    params.to_unsafe_h
         
     | 
| 
       40 
     | 
    
         
            -
                  else
         
     | 
| 
       41 
     | 
    
         
            -
                    params
         
     | 
| 
      
 32 
     | 
    
         
            +
                def connection
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @connection ||= Faraday.new(connection_options) do |client|
         
     | 
| 
      
 34 
     | 
    
         
            +
                    client.adapter Faraday.default_adapter
         
     | 
| 
      
 35 
     | 
    
         
            +
                    client.response :error_handling
         
     | 
| 
      
 36 
     | 
    
         
            +
                    client.response :json
         
     | 
| 
       42 
37 
     | 
    
         
             
                  end
         
     | 
| 
       43 
38 
     | 
    
         
             
                end
         
     | 
| 
       44 
39 
     | 
    
         | 
| 
      
 40 
     | 
    
         
            +
                private
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       45 
42 
     | 
    
         
             
                def build_options(path)
         
     | 
| 
       46 
43 
     | 
    
         
             
                  paths = path.split('/')
         
     | 
| 
       47 
44 
     | 
    
         | 
| 
         @@ -52,20 +49,23 @@ module NovaposhtaApi 
     | 
|
| 
       52 
49 
     | 
    
         
             
                  }
         
     | 
| 
       53 
50 
     | 
    
         
             
                end
         
     | 
| 
       54 
51 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                def connection
         
     | 
| 
       56 
     | 
    
         
            -
                  @connection ||= Faraday.new(connection_options) do |client|
         
     | 
| 
       57 
     | 
    
         
            -
                    client.adapter Faraday.default_adapter
         
     | 
| 
       58 
     | 
    
         
            -
                    client.use NovaposhtaApi::Middlewares::ErrorHandling
         
     | 
| 
       59 
     | 
    
         
            -
                    client.response :json
         
     | 
| 
       60 
     | 
    
         
            -
                    client.response :logger if Rails.env.development?
         
     | 
| 
       61 
     | 
    
         
            -
                  end
         
     | 
| 
       62 
     | 
    
         
            -
                end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
52 
     | 
    
         
             
                def connection_options
         
     | 
| 
       65 
53 
     | 
    
         
             
                  {
         
     | 
| 
       66 
54 
     | 
    
         
             
                    url: uri,
         
     | 
| 
       67 
55 
     | 
    
         
             
                    headers: DEFAULT_HEADERS
         
     | 
| 
       68 
56 
     | 
    
         
             
                  }
         
     | 
| 
       69 
57 
     | 
    
         
             
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                def transform_keys(params)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  convert_params_to_hash(params).deep_transform_keys { |key| key.to_s.camelcase }
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                def convert_params_to_hash(params)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  if params.respond_to?(:to_unsafe_h)
         
     | 
| 
      
 65 
     | 
    
         
            +
                    params.to_unsafe_h
         
     | 
| 
      
 66 
     | 
    
         
            +
                  else
         
     | 
| 
      
 67 
     | 
    
         
            +
                    params
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
       70 
70 
     | 
    
         
             
              end
         
     | 
| 
       71 
71 
     | 
    
         
             
            end
         
     | 
| 
         @@ -12,13 +12,13 @@ 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 = [])
         
     | 
| 
       19 
19 
     | 
    
         
             
                    return nil if codes.blank?
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                    codes.map { |code| I18n.t(code, scope: %i[ 
     | 
| 
      
 21 
     | 
    
         
            +
                    codes.map { |code| I18n.t(code, scope: %i[novaposhta errors]) }
         
     | 
| 
       22 
22 
     | 
    
         
             
                  end
         
     | 
| 
       23 
23 
     | 
    
         
             
                end
         
     | 
| 
       24 
24 
     | 
    
         
             
              end
         
     | 
| 
         @@ -7,6 +7,9 @@ module NovaposhtaApi 
     | 
|
| 
       7 
7 
     | 
    
         
             
                  property :city_id, from: :CityID
         
     | 
| 
       8 
8 
     | 
    
         
             
                  property :area, from: :Area
         
     | 
| 
       9 
9 
     | 
    
         
             
                  property :description, from: :Description
         
     | 
| 
      
 10 
     | 
    
         
            +
                  property :description_ru, from: :DescriptionRu
         
     | 
| 
      
 11 
     | 
    
         
            +
                  property :settlement_type_description, from: :SettlementTypeDescription
         
     | 
| 
      
 12 
     | 
    
         
            +
                  property :settlement_type_description_ru, from: :SettlementTypeDescriptionRu
         
     | 
| 
       10 
13 
     | 
    
         
             
                end
         
     | 
| 
       11 
14 
     | 
    
         
             
              end
         
     | 
| 
       12 
15 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module NovaposhtaApi
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Models
         
     | 
| 
      
 5 
     | 
    
         
            +
                class ContactPerson < Model
         
     | 
| 
      
 6 
     | 
    
         
            +
                  property :ref, from: :Ref
         
     | 
| 
      
 7 
     | 
    
         
            +
                  property :first_name, from: :FirstName
         
     | 
| 
      
 8 
     | 
    
         
            +
                  property :middle_name, from: :MiddleName
         
     | 
| 
      
 9 
     | 
    
         
            +
                  property :last_name, from: :LastName
         
     | 
| 
      
 10 
     | 
    
         
            +
                  property :phones, from: :Phones
         
     | 
| 
      
 11 
     | 
    
         
            +
                  property :description, from: :Description
         
     | 
| 
      
 12 
     | 
    
         
            +
                  property :email, from: :Email
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -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
         
     | 
| 
         @@ -6,7 +6,9 @@ module NovaposhtaApi 
     | 
|
| 
       6 
6 
     | 
    
         
             
                  property :ref, from: :Ref
         
     | 
| 
       7 
7 
     | 
    
         
             
                  property :city_ref, from: :CityRef
         
     | 
| 
       8 
8 
     | 
    
         
             
                  property :city_description, from: :CityDescription
         
     | 
| 
      
 9 
     | 
    
         
            +
                  property :city_description_ru, from: :CityDescriptionRu
         
     | 
| 
       9 
10 
     | 
    
         
             
                  property :description, from: :Description
         
     | 
| 
      
 11 
     | 
    
         
            +
                  property :description_ru, from: :DescriptionRu
         
     | 
| 
       10 
12 
     | 
    
         
             
                  property :short_address, from: :ShortAddress
         
     | 
| 
       11 
13 
     | 
    
         
             
                  property :longitude, from: :Longitude
         
     | 
| 
       12 
14 
     | 
    
         
             
                  property :latitude, from: :Latitude
         
     | 
| 
         @@ -2,18 +2,17 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module NovaposhtaApi
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Resource
         
     | 
| 
       5 
     | 
    
         
            -
                attr_reader : 
     | 
| 
      
 5 
     | 
    
         
            +
                attr_reader :http
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                HTTP_METHODS = %i[get post patch put delete].freeze
         
     | 
| 
       8 
     | 
    
         
            -
                CACHE_OPTIONS = {expires_in: 1.day}.freeze
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                def initialize( 
     | 
| 
       11 
     | 
    
         
            -
                  @ 
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize(http: nil)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @http = http
         
     | 
| 
       12 
11 
     | 
    
         
             
                end
         
     | 
| 
       13 
12 
     | 
    
         | 
| 
       14 
13 
     | 
    
         
             
                HTTP_METHODS.each do |http_method|
         
     | 
| 
       15 
14 
     | 
    
         
             
                  define_method http_method do |*args|
         
     | 
| 
       16 
     | 
    
         
            -
                    response =  
     | 
| 
      
 15 
     | 
    
         
            +
                    response = http.request(http_method, *args)
         
     | 
| 
       17 
16 
     | 
    
         
             
                    response['data']
         
     | 
| 
       18 
17 
     | 
    
         
             
                  end
         
     | 
| 
       19 
18 
     | 
    
         
             
                end
         
     | 
| 
         @@ -4,9 +4,7 @@ module NovaposhtaApi 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Resources
         
     | 
| 
       5 
5 
     | 
    
         
             
                class CityResource < Resource
         
     | 
| 
       6 
6 
     | 
    
         
             
                  def all(params = {})
         
     | 
| 
       7 
     | 
    
         
            -
                    response =  
     | 
| 
       8 
     | 
    
         
            -
                      post('Address/getCities', params)
         
     | 
| 
       9 
     | 
    
         
            -
                    end
         
     | 
| 
      
 7 
     | 
    
         
            +
                    response = post('Address/getCities', params)
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
       11 
9 
     | 
    
         
             
                    NovaposhtaApi::Models::City.extract_collection(response)
         
     | 
| 
       12 
10 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -4,9 +4,7 @@ module NovaposhtaApi 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Resources
         
     | 
| 
       5 
5 
     | 
    
         
             
                class SettlementResource < Resource
         
     | 
| 
       6 
6 
     | 
    
         
             
                  def all(params = {})
         
     | 
| 
       7 
     | 
    
         
            -
                    response =  
     | 
| 
       8 
     | 
    
         
            -
                      post('Address/searchSettlements', params)
         
     | 
| 
       9 
     | 
    
         
            -
                    end
         
     | 
| 
      
 7 
     | 
    
         
            +
                    response = post('Address/searchSettlements', params)
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
       11 
9 
     | 
    
         
             
                    NovaposhtaApi::Models::Settlement.extract_collection(response[0]['Addresses'])
         
     | 
| 
       12 
10 
     | 
    
         
             
                  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
         
     | 
| 
         @@ -4,9 +4,7 @@ module NovaposhtaApi 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Resources
         
     | 
| 
       5 
5 
     | 
    
         
             
                class WarehouseResource < Resource
         
     | 
| 
       6 
6 
     | 
    
         
             
                  def all(params = {})
         
     | 
| 
       7 
     | 
    
         
            -
                    response =  
     | 
| 
       8 
     | 
    
         
            -
                      post('Address/getWarehouses', params)
         
     | 
| 
       9 
     | 
    
         
            -
                    end
         
     | 
| 
      
 7 
     | 
    
         
            +
                    response = post('Address/getWarehouses', params)
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
       11 
9 
     | 
    
         
             
                    NovaposhtaApi::Models::Warehouse.extract_collection(response)
         
     | 
| 
       12 
10 
     | 
    
         
             
                  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. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - venet
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-04-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: faraday
         
     | 
| 
         @@ -75,23 +75,31 @@ files: 
     | 
|
| 
       75 
75 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       76 
76 
     | 
    
         
             
            - bin/console
         
     | 
| 
       77 
77 
     | 
    
         
             
            - bin/setup
         
     | 
| 
      
 78 
     | 
    
         
            +
            - config/locales/novaposhta.en.yml
         
     | 
| 
      
 79 
     | 
    
         
            +
            - config/locales/novaposhta.ru.yml
         
     | 
| 
      
 80 
     | 
    
         
            +
            - config/locales/novaposhta.uk.yml
         
     | 
| 
       78 
81 
     | 
    
         
             
            - lib/novaposhta_api.rb
         
     | 
| 
       79 
82 
     | 
    
         
             
            - lib/novaposhta_api/client.rb
         
     | 
| 
       80 
83 
     | 
    
         
             
            - lib/novaposhta_api/collection.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/novaposhta_api/configuration.rb
         
     | 
| 
       81 
85 
     | 
    
         
             
            - lib/novaposhta_api/http_client.rb
         
     | 
| 
       82 
86 
     | 
    
         
             
            - lib/novaposhta_api/middlewares/error_handling.rb
         
     | 
| 
       83 
87 
     | 
    
         
             
            - lib/novaposhta_api/middlewares/parse_json.rb
         
     | 
| 
       84 
88 
     | 
    
         
             
            - lib/novaposhta_api/model.rb
         
     | 
| 
       85 
89 
     | 
    
         
             
            - lib/novaposhta_api/models/city.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/novaposhta_api/models/contact_person.rb
         
     | 
| 
       86 
91 
     | 
    
         
             
            - lib/novaposhta_api/models/counterparty.rb
         
     | 
| 
       87 
92 
     | 
    
         
             
            - lib/novaposhta_api/models/internet_document.rb
         
     | 
| 
       88 
93 
     | 
    
         
             
            - lib/novaposhta_api/models/settlement.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - lib/novaposhta_api/models/tracking_document.rb
         
     | 
| 
       89 
95 
     | 
    
         
             
            - lib/novaposhta_api/models/warehouse.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - lib/novaposhta_api/rails.rb
         
     | 
| 
       90 
97 
     | 
    
         
             
            - lib/novaposhta_api/resource.rb
         
     | 
| 
       91 
98 
     | 
    
         
             
            - lib/novaposhta_api/resources/city_resource.rb
         
     | 
| 
       92 
99 
     | 
    
         
             
            - lib/novaposhta_api/resources/counterparty_resource.rb
         
     | 
| 
       93 
100 
     | 
    
         
             
            - lib/novaposhta_api/resources/internet_document_resource.rb
         
     | 
| 
       94 
101 
     | 
    
         
             
            - lib/novaposhta_api/resources/settlement_resource.rb
         
     | 
| 
      
 102 
     | 
    
         
            +
            - lib/novaposhta_api/resources/tracking_document_resource.rb
         
     | 
| 
       95 
103 
     | 
    
         
             
            - lib/novaposhta_api/resources/warehouse_resource.rb
         
     | 
| 
       96 
104 
     | 
    
         
             
            - lib/novaposhta_api/version.rb
         
     | 
| 
       97 
105 
     | 
    
         
             
            - novaposhta_api.gemspec
         
     | 
| 
         @@ -100,7 +108,7 @@ licenses: 
     | 
|
| 
       100 
108 
     | 
    
         
             
            - MIT
         
     | 
| 
       101 
109 
     | 
    
         
             
            metadata:
         
     | 
| 
       102 
110 
     | 
    
         
             
              homepage_uri: https://github.com/venethub/novaposhta_api
         
     | 
| 
       103 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 111 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       104 
112 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       105 
113 
     | 
    
         
             
            require_paths:
         
     | 
| 
       106 
114 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -115,9 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       115 
123 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       116 
124 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       117 
125 
     | 
    
         
             
            requirements: []
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 126 
     | 
    
         
            +
            rubygems_version: 3.0.9
         
     | 
| 
      
 127 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       121 
128 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       122 
129 
     | 
    
         
             
            summary: Novaposhta API 2.0 client
         
     | 
| 
       123 
130 
     | 
    
         
             
            test_files: []
         
     |