Module: Cdek

Defined in:
lib/cdek.rb,
lib/cdek/error.rb,
lib/cdek/client.rb,
lib/cdek/engine.rb,
lib/cdek/railtie.rb,
lib/cdek/version.rb,
lib/cdek/connection.rb,
lib/cdek/city_resolver.rb,
lib/cdek/configuration.rb,
lib/cdek/resources/base.rb,
lib/cdek/city_suggestions.rb,
lib/cdek/resources/locations.rb,
app/helpers/cdek/widget_helper.rb,
lib/cdek/resources/deliverypoints.rb,
lib/generators/cdek/install/install_generator.rb,
app/controllers/cdek/widget_service_controller.rb,
app/controllers/cdek/city_suggestions_controller.rb

Defined Under Namespace

Modules: Generators, Resources, WidgetHelper Classes: ApiError, AuthenticationError, BadRequestError, CityResolver, CitySuggestions, CitySuggestionsController, Client, Configuration, ConfigurationError, Connection, ConnectionError, Engine, Error, NotFoundError, Railtie, RateLimitError, ServerError, TimeoutError, WidgetServiceController

Constant Summary collapse

VERSION =
"0.3.12"

Class Method Summary collapse

Class Method Details

.city_code(name, **options) ⇒ Object

CDEK-код города по пользовательскому названию.



67
68
69
# File 'lib/cdek.rb', line 67

def city_code(name, **options)
  CityResolver.call(name, **options)
end

.city_suggestions(query, **options) ⇒ Object

Нормализованные подсказки городов для autocomplete в хост-приложении.



72
73
74
# File 'lib/cdek.rb', line 72

def city_suggestions(query, **options)
  CitySuggestions.call(query, **options)
end

.clientObject

Шареный клиент. Потокобезопасная мемоизация.



36
37
38
# File 'lib/cdek.rb', line 36

def client
  CLIENT_MUTEX.synchronize { @client ||= Client.new(configuration) }
end

.configurationObject

Возвращает текущий объект конфигурации (создавая его при первом обращении).



20
21
22
# File 'lib/cdek.rb', line 20

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Блочный синтаксис настройки.

Cdek.configure do |config|
  config.         = ENV["CDEK_ACCOUNT"]
  config.secure_password = ENV["CDEK_SECURE_PASSWORD"]
  config.production_mode!
end

Yields:



31
32
33
# File 'lib/cdek.rb', line 31

def configure
  yield configuration
end

.deliverypoints(custom_client = client) ⇒ Object

High-level ресурс «Пункты выдачи» — список ПВЗ/постаматов по фильтрам.



62
63
64
# File 'lib/cdek.rb', line 62

def deliverypoints(custom_client = client)
  Resources::Deliverypoints.new(custom_client)
end

.locations(custom_client = client) ⇒ Object

High-level ресурс «Локации» — справочники городов/регионов и suggest. По умолчанию использует шареный Cdek.client; можно передать кастомный клиент (например, в тестах с подменённым transport).



57
58
59
# File 'lib/cdek.rb', line 57

def locations(custom_client = client)
  Resources::Locations.new(custom_client)
end

.reset!Object

Полный сброс — и конфигурации, и клиента.



47
48
49
50
51
52
# File 'lib/cdek.rb', line 47

def reset!
  CLIENT_MUTEX.synchronize do
    @configuration = nil
    @client        = nil
  end
end

.reset_client!Object

Сбрасывает мемоизированный клиент (полезно после изменения конфигурации или в тестах).



42
43
44
# File 'lib/cdek.rb', line 42

def reset_client!
  CLIENT_MUTEX.synchronize { @client = nil }
end