class Gillbus
FIXME: it's possible I got currency for some fields wrong.
результаты поиска по соседним городам, берется из кеша и содержит меньше данных, чем поездка из выдачи
Constants
- VERSION
Attributes
driver[R]
Faraday instance
session_id[RW]
JSESSIONID сессии API gillbus
timezone[RW]
Public Class Methods
make_session_id(parsed_cookies)
click to toggle source
# File lib/gillbus.rb, line 55 def self.make_session_id(parsed_cookies) gclb = parsed_cookies['GCLB'].first session_id = parsed_cookies['JSESSIONID'].first if gclb.present? [session_id, gclb].join('|') else session_id end end
new(driver:, session_id: nil, timezone: nil)
click to toggle source
driver: e.g. Faraday.new(url: 'demo.gillbus.com')
# File lib/gillbus.rb, line 6 def initialize(driver:, session_id: nil, timezone: nil) @driver = driver @session_id = session_id @timezone = timezone end
register(klass, method_name)
click to toggle source
# File lib/gillbus.rb, line 23 def self.register(klass, method_name) define_method method_name do |*args| request_class = klass::Request response_class = klass::Response request = request_class.new(*args) headers = {} headers['Cookie'] = self.class.make_cookies(session_id) if session_id headers['Accept-Encoding'] = 'gzip' headers['Host'] = driver.host request_time_start = Time.now http_response = driver.public_send(request.method, request.path, request.params, headers) request_time_end = Time.now result = response_class.parse_string(http_response.body.force_encoding('utf-8'), timezone: timezone) cookie_string = http_response.headers['Set-Cookie'] if cookie_string self.session_id = self.class.make_session_id(CGI::Cookie.parse(cookie_string)) end result.session_id = session_id result.request_time = request_time_end - request_time_start result end end
Public Instance Methods
login(password:, locale: nil)
click to toggle source
# File lib/gillbus.rb, line 18 def login(password:, locale: nil) session_login password: password, locale: locale self end