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/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/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/helpers/update_attrs.rb,
lib/gillbus/structs/return_cause.rb,
lib/gillbus/structs/trip_options.rb,
lib/gillbus/structs/trip_service.rb,
lib/gillbus/structs/timetable_trip.rb,
lib/gillbus/structs/timetable_segment.rb,
lib/gillbus/structs/passenger_discount.rb,
lib/gillbus/structs/tariff/return_cause.rb,
lib/gillbus/drivers/faraday_response_file_logger.rb

Overview

FIXME: it’s possible I got currency for some fields wrong.

Defined Under Namespace

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

Constant Summary collapse

VERSION =
'0.17.3'.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

.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
# 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 = { 'Cookie' => "JSESSIONID=#{session_id}" } if session_id
    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
      returned_session_id = CGI::Cookie.parse(cookie_string)['JSESSIONID'].first
      self.session_id = returned_session_id
    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