Class: Gillbus
- Inherits:
-
Object
- Object
- Gillbus
- 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/baggage.rb,
lib/gillbus/structs/carrier.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: Baggage, BaseRequest, BaseResponse, BusPhoto, Carrier, Commission, FaradayResponseFileLogger, Item, NearbyCitiesTrip, ParseError, Parser, PassengerDiscount, Point, ReturnCause, Seat, Segment, Tariff, Ticket, TicketsOption, TimetableSegment, TimetableTrip, Trip, TripOptions, TripService
Constant Summary collapse
- VERSION =
'0.20.7'.freeze
Instance Attribute Summary collapse
-
#driver ⇒ Object
readonly
Faraday instance.
-
#session_id ⇒ Object
JSESSIONID сессии API gillbus.
-
#timezone ⇒ Object
Returns the value of attribute timezone.
Class Method Summary collapse
- .make_cookies(session_id) ⇒ Object
- .make_session_id(parsed_cookies) ⇒ Object
- .register(klass, method_name) ⇒ Object
Instance Method Summary collapse
-
#initialize(driver:, session_id: nil, timezone: nil) ⇒ Gillbus
constructor
driver: e.g.
- #login(password:, locale: nil) ⇒ Object
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
#driver ⇒ Object (readonly)
Faraday instance
13 14 15 |
# File 'lib/gillbus.rb', line 13 def driver @driver end |
#session_id ⇒ Object
JSESSIONID сессии API gillbus
15 16 17 |
# File 'lib/gillbus.rb', line 15 def session_id @session_id end |
#timezone ⇒ Object
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.(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() gclb = ['GCLB'].first session_id = ['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.(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) = http_response.headers['Set-Cookie'] if self.session_id = self.class.make_session_id(CGI::Cookie.parse()) 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 login(password:, locale: nil) session_login password: password, locale: locale self end |