laximo — ruby-библиотека для web-сервисов Laximo
Поддержка web-сервисов:
Поддерживаемые версии Ruby
Ruby 2.0+
Установка (Rails)
- Добавляем в Gemfile строку:
gem 'laximo' - В консоли
bundle install - Задаем параметры конфигурации в файле
config/initializers/laximo.rb: ```ruby Laximo.options.login 'mylogin' # имейте в виду, что такие параметры Laximo.options.password 'mypassword' # должны быть вынесены в переменные окружения
Laximo.options.timeout 10 Laximo.options.debug false Laximo.options.locale 'ru_RU'
### Конфигурация
* `Laximo.options.login` - логин для авторизации по подписке
* `Laximo.options.password` - пароль для авторизации по подписке
* `Laximo.options.timeout 30` - таймаут соединения в секундах (по-умочланию, 10)
* `Laximo.options.user_agent "Ваш_юзер_агент"` - задание произвольного юзер-агента (по-умолчанию, "LaximoRuby [версия_библиотеки]")
* `Laximo.options.locale` - локаль (по-умолчанию, 'ru_RU')
* `Laximo.options.debug true/false` - включение/отключение режима отладки (по-умолчанию, выключено)
* `Laximo.options.am_soap_action 'url'` - soap action для web-сервиса [Laximo.Aftermarket](http://laximo.net/index.php/Laximo_Web-services:AM:Laximo.Aftermarket) (по-умолчанию, `http://Aftermarket.Kito.ec`)
* `Laximo.options.am_soap_endpoint 'url'` - soap endpoint для web-сервиса [Laximo.Aftermarket](http://laximo.net/index.php/Laximo_Web-services:AM:Laximo.Aftermarket) (по-умолчанию, `https://aws.laximo.net/ec.Kito.Aftermarket/services/Catalog.CatalogHttpSoap12Endpoint/`
* `Laximo.options.oem_soap_action 'url'` - soap action для web-сервиса [Laximo.OEM](http://laximo.net/index.php/Laximo_Web-services:OEM:Laximo.OEM) (по-умолчанию, `http://WebCatalog.Kito.ec`)
* `Laximo.options.oem_soap_endpoint 'url'` - soap endpoint для web-сервиса [Laximo.OEM](http://laximo.net/index.php/Laximo_Web-services:OEM:Laximo.OEM) (по-умолчанию, `https://ws.laximo.net/ec.Kito.WebCatalog/services/Catalog.CatalogHttpSoap12Endpoint/`)
### Методы web-сервиса [Laximo.Aftermarket](https://laximo.ru/am/)
* [Laximo.am.find_oem(oem, brand: nil, options: [], locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:AM:FindOEM)
* [Laximo.am.find_replacements(detail_id, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:AM:FindReplacements)
* [Laximo.am.find_detail(detail_id, options: [], locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:AM:FindDetail)
* [Laximo.am.find_oem_correction(oem, brand: nil, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:AM:FindOEMCorrection)
* [Laximo.am.manufacturer_info(manufacturer_id, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:AM:ManufacturerInfo)
* [Laximo.am.list_manufacturer(locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:AM/ListManufacturer)
Данные методы возвращают объект, у которого заданы методы:
* `success?` - успешна ли операция
* `error?` - есть ли ошибка
* `error` - возвращает ошибку или `nil`, если ошибки не было
* `result` - возвращает массив хешей или пустой массив, если ничего не найдено, или если в процессе выполения произошла ошибка.
### Методы web-сервиса [Laximo.OEM](https://laximo.ru/oem/)
* [Laximo.oem.list_catalogs(ssd: nil, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListCatalogs)
* [Laximo.oem.get_catalog_info(catalog:, ssd: nil, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetCatalogInfo)
* [Laximo.oem.find_vehicle_by_vin(vin:, catalog: nil, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:FindVehicleByVIN)
* [Laximo.oem.find_vehicle_by_frame(frame:, frame_no:, catalog: nil, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:FindVehicleByFrame)
* [Laximo.oem.find_vehicle_by_frame_no(frame_no:, catalog: nil, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:FindVehicleByFrameNo)
* [Laximo.oem.find_vehicle(ident_string:, catalog: nil, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:FindVehicle)
* [Laximo.oem.get_wizard2(catalog:, ssd: nil, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetWizard2)
* [Laximo.oem.get_wizard_next_step2(catalog:, ssd: nil, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetWizardNextStep2)
* [Laximo.oem.find_vehicle_by_wizard2(catalog:, ssd:, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:FindVehicleByWizard2)
* [Laximo.oem.get_vehicle_info(catalog:, vehicle_id:, ssd:, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetVehicleInfo)
* [Laximo.oem.exec_custom_operation(catalog:, operation:, param:, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ExecCustomOperation)
* [Laximo.oem.list_units(catalog:, vehicle_id:, ssd:, category_id: -1, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListUnits)
* [Laximo.oem.list_categories(catalog:, vehicle_id:, ssd:, category_id: -10, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListCategories)
* [Laximo.oem.get_filter_by_unit(catalog:, unit_id:, vehicle_id:, filter:, ssd:, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetFilterByUnit)
* [Laximo.oem.get_unit_info(catalog:, unit_id:, ssd:, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetUnitInfo)
* [Laximo.oem.list_detail_by_unit(catalog:, unit_id:, ssd:, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListDetailByUnit)
* [Laximo.oem.list_image_map_by_unit(catalog:, unit_id:, ssd:)](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListImageMapByUnit)
* [Laximo.oem.get_filter_by_detail(catalog:, unit_id:, detail_id:, filter:, ssd:, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:GetFilterByDetail)
* [Laximo.oem.list_quick_group(catalog:, vehicle_id, ssd:, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListQuickGroup)
* [Laximo.oem.list_quick_detail(catalog:, vehicle_id:, quick_group_id:, ssd:, all: 1, localized: true, locale: 'ru_RU')](http://wiki.technologytrade.ru/index.php/Laximo_Web-services:OEM:ListQuickDetail)
Данные методы возвращают объект, у которого заданы методы:
* `success?` - успешна ли операция
* `error?` - есть ли ошибка
* `error` - возвращает ошибку или `nil`, если ошибки не было
* `result` - возвращает массив хешей или пустой массив, если ничего не найдено, или если в процессе выполения произошла ошибка.
### Примеры использования
```ruby
res = Laximo.am.find_oem('078100105NX', options: [:crosses, :images])
res.success? # true
res.error? # false
res.error # nil
res.result # [{:detailid=>"31454425", :formattedoem=>"078100105NX", :manufacturer=>"SEAT", ...]
Ошибки
После вызова одного из методов апи, может быть возвращены разного рода ошибки.
Laximo::SslCertificateError- ваш ssl-сертификат не найден или недействителенLaximo::SoapInvalidParameterError- неверное значение параметра в запросе к web-сервисуLaximo::SoapCatalogNotExistsError- каталог не зарегистрирован в системеLaximo::SoapInvalidRequestError- не верно сформирован запрос к web-сервисуLaximo::SoapUnknownCommandError- команда не известнаLaximo::SoapAccessDeniedError- доступ запрещенLaximo::SoapNotSupportedError- функция не поддерживается каталогомSoapGroupIsNotSearchableError- поиск по группе запрещён, в связи с слишком большим количеством входящих в группу узловLaximo::SoapError- общая ошибка протокола SOAP
res = Laximo.oem.get_filter_by_detail(catalog: 'AP1211', unit_id: '', detail_id: '', filter: '')
res.success? # false
res.error? # true
res.error # <Laximo::SoapInvalidParameterError: UnitId>
res.result # []
Помимо перечисленного списка ошибок, в ответе могут быть возвращены стандартные ошибки библиотеки Net::HTTP и интерпретатора Ruby.
Лицензия
Автор: Tyralion
Copyright (c) 2015-2018 DansingBytes.ru, под лицензией BSD