class Gillbus::V2::Client
Attributes
access_token[R]
base_url[R]
Public Class Methods
new(base_url:, access_token: nil)
click to toggle source
# File lib/gillbus/v2/client.rb, line 6 def initialize(base_url:, access_token: nil) @base_url = base_url @access_token = if access_token.is_a?(Structs::AccessToken) access_token elsif access_token.is_a?(String) Structs::AccessToken.from_token_string(access_token) elsif access_token.is_a?(Hash) Structs::AccessToken.from_raw_data(access_token) end end
Public Instance Methods
authenticate(username:, password:, lang:, time_zone:)
click to toggle source
# File lib/gillbus/v2/client.rb, line 22 def authenticate(username:, password:, lang:, time_zone:) params = { username: username, password: password, lang: lang, timeZone: time_zone, } response = call_api(:post, "/v2/login", params, auth_required: false, response_class: Responses::Authenticate, ) @access_token = response.access_token response end
authenticate!(**args)
click to toggle source
# File lib/gillbus/v2/client.rb, line 37 def authenticate!(**args) response = authenticate(**args) unless authenticated? raise AuthenticationFailed, response.error_message end end
authenticated?()
click to toggle source
# File lib/gillbus/v2/client.rb, line 18 def authenticated? !access_token.nil? && !access_token.expired? end
get_locations(langs: %w[en], limit_for_page: 50, from_datetime: nil)
click to toggle source
# File lib/gillbus/v2/client.rb, line 44 def get_locations(langs: %w[en], limit_for_page: 50, from_datetime: nil) params = { lang_array: langs, limit: limit_for_page, timestamp: from_datetime&.rfc3339, } call_api(:get, "/geo/v2/locations", params, response_class: Responses::Locations, ) end
get_locations_page(pagination_uuid:, page_number:)
click to toggle source
# File lib/gillbus/v2/client.rb, line 55 def get_locations_page(pagination_uuid:, page_number:) params = { page_uuid: pagination_uuid, number_page: page_number, } call_api(:get, "/geo/v2/locations/page", params, response_class: Responses::Locations, ) end
get_trip_seats(trip_id:, date:, back_date: nil, passengers_count: 1)
click to toggle source
# File lib/gillbus/v2/client.rb, line 93 def get_trip_seats(trip_id:, date:, back_date: nil, passengers_count: 1) params = { date: date, back_date: back_date, pass_count: passengers_count, } call_api(:get, "/search/v2/trips/#{trip_id}/seats", params, response_class: Responses::TripSeats, ) end
search_trips(from_id:, to_id:, date:, back_date: nil, passengers_count: 1, search_mode: "full", limit_for_page: 20)
click to toggle source
search_mode:
-
full - искать все рейсы (по умолчанию)
-
direct - искать только прямые рейсы
# File lib/gillbus/v2/client.rb, line 68 def search_trips(from_id:, to_id:, date:, back_date: nil, passengers_count: 1, search_mode: "full", limit_for_page: 20) params = { from_id: from_id, to_id: to_id, date: date.iso8601, back_date: back_date&.iso8601, pass_count: passengers_count, search_mode: search_mode, limit: limit_for_page, } call_api(:get, "/search/v2/trips", params, response_class: Responses::SearchTrips, ) end
search_trips_page(pagination_uuid:, page_number:)
click to toggle source
# File lib/gillbus/v2/client.rb, line 83 def search_trips_page(pagination_uuid:, page_number:) params = { page_uuid: pagination_uuid, number_page: page_number, } call_api(:get, "/search/v2/trips/page", params, response_class: Responses::SearchTrips, ) end
Private Instance Methods
call_api(http_method, url, params, auth_required: true, response_class: Responses::Base)
click to toggle source
# File lib/gillbus/v2/client.rb, line 106 def call_api(http_method, url, params, auth_required: true, response_class: Responses::Base) raise AuthenticationRequired if auth_required && !authenticated? params.reject! { |k, v| v.nil? } http_response = begin connection.public_send(http_method) do |request| request.url url params.each do |key, value| request.params[key.to_s] = value end request.headers['accept'] = 'application/json' if auth_required request.headers['Authorization'] = access_token.auth_header end end rescue Faraday::Error => e raise e end response_class.new(http_response) end
connection()
click to toggle source
# File lib/gillbus/v2/client.rb, line 130 def connection @connection ||= Faraday.new(url: base_url) do |faraday| faraday.request :url_encoded faraday.adapter Faraday.default_adapter faraday.options[:params_encoder] = Faraday::FlatParamsEncoder end end