Class: Gillbus

Inherits:
Object
  • Object
show all
Defined in:
lib/gillbus/structs/commission.rb,
lib/gillbus.rb,
lib/gillbus/logout.rb,
lib/gillbus/version.rb,
lib/gillbus/get_trips.rb,
lib/gillbus/find_order.rb,
lib/gillbus/get_cities.rb,
lib/gillbus/lock_seats.rb,
lib/gillbus/buy_booking.rb,
lib/gillbus/buy_tickets.rb,
lib/gillbus/base_request.rb,
lib/gillbus/cancel_order.rb,
lib/gillbus/get_carriers.rb,
lib/gillbus/search_trips.rb,
lib/gillbus/structs/item.rb,
lib/gillbus/structs/seat.rb,
lib/gillbus/structs/trip.rb,
lib/gillbus/unlock_seats.rb,
lib/gillbus/base_response.rb,
lib/gillbus/get_bus_image.rb,
lib/gillbus/get_countries.rb,
lib/gillbus/get_dates_new.rb,
lib/gillbus/session_login.rb,
lib/gillbus/structs/point.rb,
lib/gillbus/get_all_cities.rb,
lib/gillbus/get_time_table.rb,
lib/gillbus/get_trip_seats.rb,
lib/gillbus/helpers/fields.rb,
lib/gillbus/helpers/parser.rb,
lib/gillbus/structs/tariff.rb,
lib/gillbus/structs/ticket.rb,
lib/gillbus/reserve_tickets.rb,
lib/gillbus/return_position.rb,
lib/gillbus/structs/carrier.rb,
lib/gillbus/structs/luggage.rb,
lib/gillbus/structs/segment.rb,
lib/gillbus/tickets_booking.rb,
lib/gillbus/get_order_status.rb,
lib/gillbus/get_order_ticket.rb,
lib/gillbus/get_trip_segments.rb,
lib/gillbus/structs/bus_photo.rb,
lib/gillbus/get_required_fields.rb,
lib/gillbus/search_nearby_trips.rb,
lib/gillbus/helpers/update_attrs.rb,
lib/gillbus/structs/return_cause.rb,
lib/gillbus/structs/trip_options.rb,
lib/gillbus/structs/trip_service.rb,
lib/gillbus/return_position_forced.rb,
lib/gillbus/structs/tickets_option.rb,
lib/gillbus/structs/timetable_trip.rb,
lib/gillbus/structs/timetable_segment.rb,
lib/gillbus/structs/nearby_cities_trip.rb,
lib/gillbus/structs/passenger_discount.rb,
lib/gillbus/structs/tariff/return_cause.rb,
lib/gillbus/drivers/faraday_response_file_logger.rb

Overview

результаты поиска по соседним городам, берется из кеша и содержит меньше данных, чем поездка из выдачи

Defined Under Namespace

Modules: BuyBooking, BuyTickets, CancelOrder, Fields, FindOrder, GetAllCities, GetBusImage, GetCarriers, GetCities, GetCountries, GetDatesNew, GetOrderStatus, GetOrderTicket, GetRequiredFields, GetTimeTable, GetTripSeats, GetTripSegments, GetTrips, LockSeats, Logout, ReserveTickets, ReturnPosition, ReturnPositionForced, SearchTripNearbyCities, SearchTrips, SessionLogin, TicketsBooking, UnlockSeats, UpdateAttrs Classes: BaseRequest, BaseResponse, BusPhoto, Carrier, Commission, FaradayResponseFileLogger, Item, Luggage, NearbyCitiesTrip, ParseError, Parser, PassengerDiscount, Point, ReturnCause, Seat, Segment, Tariff, Ticket, TicketsOption, TimetableSegment, TimetableTrip, Trip, TripOptions, TripService

Constant Summary collapse

VERSION =
'0.22.5'.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(driver:, session_id: nil, timezone: nil) ⇒ Gillbus

driver: e.g. Faraday.new(url: ‘demo.gillbus.com’)



6
7
8
9
10
# File 'lib/gillbus.rb', line 6

def initialize(driver:, session_id: nil, timezone: nil)
  @driver = driver
  @session_id = session_id
  @timezone = timezone
end

Instance Attribute Details

#driverObject (readonly)

Faraday instance



13
14
15
# File 'lib/gillbus.rb', line 13

def driver
  @driver
end

#session_idObject

JSESSIONID сессии API gillbus



15
16
17
# File 'lib/gillbus.rb', line 15

def session_id
  @session_id
end

#timezoneObject

Returns the value of attribute timezone.



16
17
18
# File 'lib/gillbus.rb', line 16

def timezone
  @timezone
end

Class Method Details

.make_cookies(session_id) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/gillbus.rb', line 46

def self.make_cookies(session_id)
  if session_id.include?('|')
    session_id, gclb = session_id.split('|')
    "JSESSIONID=#{session_id}; GCLB=#{gclb}"
  else
    "JSESSIONID=#{session_id}"
  end
end

.make_session_id(parsed_cookies) ⇒ Object



55
56
57
58
59
60
61
62
63
# 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

.register(klass, method_name) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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

Instance Method Details

#login(password:, locale: nil) ⇒ Object



18
19
20
21
# File 'lib/gillbus.rb', line 18

def (password:, locale: nil)
   password: password, locale: locale
  self
end