Class: Dadata::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/dadata.rb

Overview

Глобальный клиент к API Dadata

Instance Method Summary collapse

Constructor Details

#initialize(token = Dadata.api_key, secret = Dadata.secret_key) ⇒ Client

Returns a new instance of Client.



150
151
152
153
154
# File 'lib/dadata.rb', line 150

def initialize(token = Dadata.api_key, secret = Dadata.secret_key)
  @cleaner = CleanClient.new(token, secret)
  @suggestions = SuggestClient.new(token, secret)
  @profile = ProfileClient.new(token, secret)
end

Instance Method Details

#balanceObject

Баланс пользователя



381
382
383
# File 'lib/dadata.rb', line 381

def balance
  with_logging('getting balance') { @profile.balance }
end

#clean(name, source) ⇒ Object

Note:

15 коп./запись. Максимальная частота запросов — 20 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Note:

Дадата не поддерживает вызов этого метода из браузерного JavaScript.

Стандартизация. Приводит в порядок и обогащает дополнительной информацией.

Иначе злоумышленник мог бы похитить секретный ключ и использовать API за ваш счет.

Parameters:

  • name (String)

    Тип применяемой стандартизации: address — адрес, phone — телефонный номер, passport — серия и номер паспорта, name — ФИО, email — электронная почта, birthdate — дата, vehicle — марка автомобиля, simple_party_name — наименование юрлица

  • source (String)

    Строка, подлежащая обработке

Returns:

  • (Object)

See Also:



175
176
177
# File 'lib/dadata.rb', line 175

def clean(name, source)
  with_logging("cleaning #{name}") { @cleaner.clean(name, source) }
end

#clean_record(structure, record) ⇒ Object

Note:

Максимальное количество полей в одной записи: 1 ФИО, 3 адреса, 3 телефона, 3 email, 1 дата рождения, 1 паспорт, 1 автомобиль.

Note:

15 коп./запись. Максимальная частота запросов — 20 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Note:

Дадата не поддерживает вызов этого метода из браузерного JavaScript.

Стандартизация составных записей

Иначе злоумышленник мог бы похитить секретный ключ и использовать API за ваш счет.

Parameters:

  • structure (Array<String>)

    Структура записи, содержит поля: AS_IS — оставить как есть (не стандартизировать), SIMPLE_PARTY_NAME — разобрать наименование, NAME — разобрать как ФИО, BIRTHDATE — разобрать как дату, ADDRESS — разобрать как адрес, PHONE — разобрать как телефон, PASSPORT — номер и серия паспорта, EMAIL — адрес электронной почты, VEHICLE — марка и модель автомобиля

  • record (Array<String>)

    Запись, подлежащая обработке; порядок полей должен соответствовать structure

Returns:

  • (Object)

See Also:



207
208
209
# File 'lib/dadata.rb', line 207

def clean_record(structure, record)
  with_logging('cleaning record') { @cleaner.clean_record(structure, record) }
end

#closeObject



399
400
401
402
403
404
405
# File 'lib/dadata.rb', line 399

def close
  with_logging('closing client') do
    @cleaner.close
    @suggestions.close
    @profile.close
  end
end

#daily_stats(date = nil) ⇒ Object

Статистика использования



388
389
390
# File 'lib/dadata.rb', line 388

def daily_stats(date = nil)
  with_logging('getting daily stats') { @profile.daily_stats(date) }
end

#find_affiliated(query, count = Dadata.suggestions_count) ⇒ Object

Note:

Доступно только на тарифе «Максимальный»

Note:

Длина запроса (параметр query) — не более 300 символов.

Note:

Количество запросов — в соответствии с тарифным планом.

Note:

Максимальная частота запросов — 30 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Поиск аффилированных компаний

Parameters:

  • query, (String)

    Текст запроса

  • count (Integer) (defaults to: Dadata.suggestions_count)

    Количество результатов, опционально, default 10

  • **kwargs(:scope), (Array<String>)

    Где искать, опционально, default [“FOUNDERS”, “MANAGERS”]

Returns:

  • (Object)

See Also:



374
375
376
# File 'lib/dadata.rb', line 374

def find_affiliated(query, count = Dadata.suggestions_count, **)
  with_logging('finding affiliated') { @suggestions.find_affiliated(query, [count, MAX_SUGGESTIONS].min, **) }
end

#find_by_email(query) ⇒ Array<Object>

Note:

Длина запроса (параметр query) — не более 300 символов.

Note:

5 руб./запрос. Количество запросов — в соответствии с тарифным планом.

Note:

Максимальная частота запросов — 30 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Компания по email

Parameters:

  • query, (String)

    Текст запроса

Returns:

  • (Array<Object>)

See Also:



357
358
359
# File 'lib/dadata.rb', line 357

def find_by_email(query)
  with_logging('finding by email') { @suggestions.find_by_email(query) }
end

#find_by_id(name, query, count = Dadata.suggestions_count) ⇒ Object

Note:

Длина запроса (параметр query) — не более 300 символов.

Note:

Метод бесплатный до 10000 запросов в день, или в соответствии с тарифным планом.

Note:

Максимальная частота запросов — 30 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Поиск по коду

Parameters:

  • name (String)

    Тип стандартизации: address — адрес, postal_unit — почтовое отделение, party — организация, bank — банк, fms_unit — отделение ФМС, car_brand — марка автомобиля, fns_unit — отделение ФНС, fts_unit — отделение ФТС, region_court — отделение регионального суда, delivery — идентификатор города в СДЭК, Boxberry и DPD, country — справочник стран, mktu — классификатор МКТУ, currency — справочник валют, okved2 — классификатор ОКВЭД 2, okpd2 — классификатор ОКПД 2, oktmo — классификатор ОКТМО

  • query (String)

    Текст запроса, обязательно

  • count (Integer) (defaults to: Dadata.suggestions_count)

    Количество результатов, опционально, default 10

  • **kwargs(:kpp) (String)

    поиск по филиалам для ‘party`, опционально

  • **kwargs(:branch_type) (String<MAIN|BRANCH>)

    тип филиала для ‘party`, опционально

  • **kwargs(:type) (String<LEGAL|INDIVIDUAL>)

    юрлицо или ИП для ‘party`, опционально

  • **kwargs(:status) (Array<String>)

    status для ‘party`, опционально

  • **kwargs(:language) (String<ru|en>)

    На каком языке вернуть результат (не для всех ‘name`), опционально, default ru

Returns:

  • (Object)

See Also:



343
344
345
# File 'lib/dadata.rb', line 343

def find_by_id(name, query, count = Dadata.suggestions_count, **)
  with_logging('finding by id') { @suggestions.find_by_id(name, query, [count, MAX_SUGGESTIONS].min, **) }
end

#geolocate(name, lat, lon, radius_meters = 100) ⇒ Object

Note:

Метод бесплатный до 10000 запросов в день, или в соответствии с тарифным планом.

Note:

Максимальная частота запросов — 30 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Обратное геокодирование (адрес по координатам)

Parameters:

  • name (String<address|postal_unit>)

    Тип поиска

  • lat (Numeric)

    Географическая широта

  • lon (Numeric)

    Географическая долгота

  • radius_meters (Integer) (defaults to: 100)

    Радиус поиска в метрах, опционально, default 100, max 1000

  • **kwargs(:count) (Integer)

    Количество результатов, опционально, default 10, max 20

  • **kwargs(:language) (String<ru|en>)

    На каком языке вернуть результат, опционально, default “ru”

Returns:

  • (Object)

See Also:



226
227
228
# File 'lib/dadata.rb', line 226

def geolocate(name, lat, lon, radius_meters = 100, **)
  with_logging('geolocating') { @suggestions.geolocate(name, lat, lon, radius_meters, **) }
end

#iplocate(ip) ⇒ Object

Note:

Метод бесплатный до 10000 запросов в день, или в соответствии с тарифным планом.

Note:

Максимальная частота запросов — 30 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Город по IP-адресу

Parameters:

  • ip (String)

    IP-адрес

  • **kwargs(:language) (String<ru|en>)

    На каком языке вернуть результат, опционально, default “ru”

Returns:

  • (Object)

See Also:



240
241
242
# File 'lib/dadata.rb', line 240

def iplocate(ip, **)
  with_logging('iplocating') { @suggestions.iplocate(ip, **) }
end

#suggest(name, query, count = Dadata.suggestions_count) ⇒ Object

Note:

Длина запроса (параметр query) — не более 300 символов.

Note:

Метод бесплатный до 10000 запросов в день, или в соответствии с тарифным планом.

Note:

Максимальная частота запросов — 30 в секунду с одного IP-адреса.

Note:

Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.

Подсказки

Parameters:

  • name (String)

    Тип применяемой подсказки: address — адрес, postal_unit — почтовое отделение, party — организация, bank — банк, fio — ФИО, fms_unit — отделение ФМС, email — адрес электронной почты, car_brand — марка автомобиля, fns_unit — отделение ФНС, fts_unit — отделение ФТС, region_court — отделение регионального суда, country — страны, metro — станция метро, mktu — классификатор МКТУ, currency — справочник валют, okved2 — классификатор ОКВЭД 2, okpd2 — классификатор ОКПД 2

  • query (String)

    Текст запроса

  • count (Integer) (defaults to: Dadata.suggestions_count)

    Количество результатов, опционально, default 10, max 20

  • **kwargs(:filters) (Array<Object>)

    фильтрация результата (не для всех ‘name`), опционально

  • **kwargs(:language) (String<ru|en>)

    На каком языке вернуть результат, опционально, default “ru”

Returns:

  • (Object)

See Also:



291
292
293
# File 'lib/dadata.rb', line 291

def suggest(name, query, count = Dadata.suggestions_count, **)
  with_logging('suggesting') { @suggestions.suggest(name, query, [count, MAX_SUGGESTIONS].min, **) }
end

#versionsObject

Версии справочников



395
396
397
# File 'lib/dadata.rb', line 395

def versions
  with_logging('getting versions') { @profile.versions }
end