gillbus 0.16.7 → 0.16.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +88 -0
  3. data/Rakefile +3 -3
  4. data/gillbus.gemspec +16 -15
  5. data/lib/gillbus.rb +10 -9
  6. data/lib/gillbus/base_request.rb +17 -19
  7. data/lib/gillbus/base_response.rb +11 -13
  8. data/lib/gillbus/buy_booking.rb +1 -9
  9. data/lib/gillbus/buy_tickets.rb +1 -8
  10. data/lib/gillbus/cancel_order.rb +0 -10
  11. data/lib/gillbus/drivers/faraday_response_file_logger.rb +1 -3
  12. data/lib/gillbus/find_order.rb +0 -5
  13. data/lib/gillbus/get_all_cities.rb +0 -2
  14. data/lib/gillbus/get_bus_image.rb +0 -3
  15. data/lib/gillbus/get_cities.rb +0 -4
  16. data/lib/gillbus/get_countries.rb +0 -4
  17. data/lib/gillbus/get_dates_new.rb +0 -4
  18. data/lib/gillbus/get_order_status.rb +1 -6
  19. data/lib/gillbus/get_order_ticket.rb +4 -7
  20. data/lib/gillbus/get_time_table.rb +0 -4
  21. data/lib/gillbus/get_trip_seats.rb +8 -11
  22. data/lib/gillbus/get_trip_segments.rb +0 -2
  23. data/lib/gillbus/get_trips.rb +0 -2
  24. data/lib/gillbus/helpers/fields.rb +5 -7
  25. data/lib/gillbus/helpers/parser.rb +10 -13
  26. data/lib/gillbus/helpers/update_attrs.rb +2 -4
  27. data/lib/gillbus/lock_seats.rb +7 -10
  28. data/lib/gillbus/logout.rb +0 -6
  29. data/lib/gillbus/parse_error.rb +3 -1
  30. data/lib/gillbus/reserve_tickets.rb +0 -2
  31. data/lib/gillbus/return_position.rb +0 -1
  32. data/lib/gillbus/search_trips.rb +5 -6
  33. data/lib/gillbus/session_login.rb +0 -6
  34. data/lib/gillbus/structs/commission.rb +4 -4
  35. data/lib/gillbus/structs/item.rb +0 -2
  36. data/lib/gillbus/structs/passenger_discount.rb +2 -3
  37. data/lib/gillbus/structs/point.rb +0 -1
  38. data/lib/gillbus/structs/return_cause.rb +0 -2
  39. data/lib/gillbus/structs/seat.rb +0 -2
  40. data/lib/gillbus/structs/segment.rb +5 -6
  41. data/lib/gillbus/structs/tariff.rb +1 -2
  42. data/lib/gillbus/structs/tariff/return_cause.rb +3 -3
  43. data/lib/gillbus/structs/ticket.rb +0 -2
  44. data/lib/gillbus/structs/timetable_trip.rb +4 -4
  45. data/lib/gillbus/structs/trip.rb +5 -6
  46. data/lib/gillbus/structs/trip_options.rb +0 -1
  47. data/lib/gillbus/structs/trip_service.rb +0 -2
  48. data/lib/gillbus/tickets_booking.rb +17 -13
  49. data/lib/gillbus/unlock_seats.rb +0 -2
  50. data/lib/gillbus/version.rb +1 -1
  51. data/script/example_booking.rb +16 -18
  52. data/script/example_booking_with_segments.rb +0 -1
  53. data/script/example_canceling_booking.rb +12 -13
  54. data/script/example_canceling_reservation.rb +11 -12
  55. data/script/example_reservation.rb +14 -15
  56. data/test/all_commissions_test.rb +1 -2
  57. data/test/buy_booking_test.rb +14 -13
  58. data/test/buy_tickets_test.rb +1 -2
  59. data/test/cancel_order_test.rb +1 -2
  60. data/test/error_test.rb +1 -3
  61. data/test/find_order_test.rb +3 -4
  62. data/test/get_bus_image_test.rb +0 -1
  63. data/test/get_cities_test.rb +1 -2
  64. data/test/get_countries_test.rb +1 -2
  65. data/test/get_dates_new_test.rb +0 -1
  66. data/test/get_order_ticket_test.rb +1 -2
  67. data/test/get_time_table_test.rb +0 -1
  68. data/test/get_trip_seats_test.rb +3 -4
  69. data/test/get_trip_segments_test.rb +5 -6
  70. data/test/lock_seats_test.rb +43 -33
  71. data/test/reserve_tickets_test.rb +10 -3
  72. data/test/return_position_test.rb +8 -5
  73. data/test/search_trips_test.rb +15 -19
  74. data/test/session_login_test.rb +0 -1
  75. data/test/tickets_booking_test.rb +2 -3
  76. metadata +24 -9
@@ -1,15 +1,13 @@
1
1
  class Gillbus
2
2
  module UpdateAttrs
3
-
4
- def initialize(attrs={})
3
+ def initialize(attrs = {})
5
4
  update_attrs attrs if attrs
6
5
  end
7
6
 
8
- def update_attrs(attrs={})
7
+ def update_attrs(attrs = {})
9
8
  attrs.each do |k, v|
10
9
  public_send "#{k}=", v
11
10
  end
12
11
  end
13
-
14
12
  end
15
13
  end
@@ -1,10 +1,8 @@
1
1
  class Gillbus
2
2
  module LockSeats
3
-
4
3
  Gillbus.register self, :lock_seats
5
4
 
6
5
  class Request < BaseRequest
7
-
8
6
  def path; '/online2/lockSeats' end
9
7
 
10
8
  # tripId
@@ -12,11 +10,13 @@ class Gillbus
12
10
  attr_accessor :trip_id
13
11
 
14
12
  # carriageId (не обязательный)
15
- # ИД вагона, для которого нужно получить карту мест. По- умолчанию первый попавшийся. Только для железнодорожных рейсов.
13
+ # ИД вагона, для которого нужно получить карту мест.
14
+ # По- умолчанию первый попавшийся. Только для железнодорожных рейсов.
16
15
  attr_accessor :carriage_id
17
16
 
18
17
  # backCarriageId (не обязательный)
19
- # ИД вагона обратного рейса, для которого нужно получить карту мест. По-умолчанию первый попавшийся. Только для железнодорожных рейсов.
18
+ # ИД вагона обратного рейса, для которого нужно получить карту мест.
19
+ # По-умолчанию первый попавшийся. Только для железнодорожных рейсов.
20
20
  attr_accessor :back_carriage_id
21
21
 
22
22
  # segment0carriageId...segmentNcarriageId (не обязательный)
@@ -36,10 +36,10 @@ class Gillbus
36
36
  attr_accessor :segments_seat_ids
37
37
 
38
38
  def params
39
- seats = Array(seat_ids).map.with_index {|id, n| [:"seatId#{n}", id] }.to_h
40
- back_seats = Array(back_seat_ids).map.with_index {|id, n| [:"backSeatId#{n}", id] }.to_h
39
+ seats = Array(seat_ids).map.with_index { |id, n| [:"seatId#{n}", id] }.to_h
40
+ back_seats = Array(back_seat_ids).map.with_index { |id, n| [:"backSeatId#{n}", id] }.to_h
41
41
  segments_seats = Hash(segments_seat_ids).map do |segment, seat_ids|
42
- Array(seat_ids).map.with_index {|id, n| [:"segment#{segment}seatId#{n}", id] }.to_h
42
+ Array(seat_ids).map.with_index { |id, n| [:"segment#{segment}seatId#{n}", id] }.to_h
43
43
  end.reduce(&:merge).to_h
44
44
 
45
45
  compact(
@@ -54,7 +54,6 @@ class Gillbus
54
54
  end
55
55
 
56
56
  class Response < BaseResponse
57
-
58
57
  # seat lock, time limit, in seconds
59
58
  field :time_limit, :milliseconds
60
59
  # [{Symbol => Boolean}] необходимые для ввода типы документов?
@@ -75,8 +74,6 @@ class Gillbus
75
74
  result
76
75
  end
77
76
  end
78
-
79
77
  end
80
-
81
78
  end
82
79
  end
@@ -1,19 +1,13 @@
1
1
  class Gillbus
2
2
  module Logout
3
-
4
3
  Gillbus.register self, :logout
5
4
 
6
5
  class Request < BaseRequest
7
-
8
6
  def path; '/online2/logout' end
9
-
10
7
  end
11
8
 
12
9
  class Response < BaseResponse
13
-
14
10
  field :logout, :bool
15
-
16
11
  end
17
-
18
12
  end
19
13
  end
@@ -7,6 +7,8 @@ class Gillbus::ParseError
7
7
  attr_accessor :session_id
8
8
  attr_accessor :request_time
9
9
  def error?; true; end
10
+
10
11
  def error_code; 0; end
11
- def error_message; "Malformed response"; end
12
+
13
+ def error_message; 'Malformed response'; end
12
14
  end
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  module ReserveTickets
3
-
4
3
  Gillbus.register self, :reserve_tickets
5
4
 
6
5
  class Request < Gillbus::TicketsBooking::Request
@@ -8,6 +7,5 @@ class Gillbus
8
7
  end
9
8
 
10
9
  Response = Gillbus::TicketsBooking::Response
11
-
12
10
  end
13
11
  end
@@ -3,7 +3,6 @@ class Gillbus
3
3
  Gillbus.register self, :return_position
4
4
 
5
5
  class Request < BaseRequest
6
-
7
6
  def path; '/online2/returnPosition' end
8
7
 
9
8
  # ticketCount
@@ -1,10 +1,8 @@
1
1
  class Gillbus
2
2
  module SearchTrips
3
-
4
3
  Gillbus.register self, :search_trips
5
4
 
6
5
  class Request < BaseRequest
7
-
8
6
  def path; '/online2/searchTrips' end
9
7
 
10
8
  # selectedModes (не обязательный)
@@ -13,11 +11,14 @@ class Gillbus
13
11
  attr_accessor :selected_modes
14
12
 
15
13
  # connectionIds (не обязательный)
16
- # Список предполагаемых идентификаторов пересадочных пунктов, разделенных “;”. Используется если выбран вид транспорта 8, 9.
14
+ # Список предполагаемых идентификаторов пересадочных пунктов, разделенных “;”.
15
+ # Используется если выбран вид транспорта 8, 9.
17
16
  attr_accessor :connection_ids
18
17
 
19
18
  # tripFullSale (не обязательный)
20
- # Признак определяющий количество возвращаемых рейсов. Если true, то возвращаются заказные и регулярные рейсы. Если false, то возвращаются только регулярные рейсы.
19
+ # Признак определяющий количество возвращаемых рейсов.
20
+ # Если true, то возвращаются заказные и регулярные рейсы.
21
+ # Если false, то возвращаются только регулярные рейсы.
21
22
  attr_accessor :trip_full_sale
22
23
 
23
24
  # fullSearch (не обязательный)
@@ -123,13 +124,11 @@ class Gillbus
123
124
  PassengerDiscount.wrap(p).params("passenger#{i}")
124
125
  end.reduce({}, :merge)
125
126
  end
126
-
127
127
  end
128
128
 
129
129
  class Response < BaseResponse
130
130
  field :completed, :bool
131
131
  field :trips, [Trip], key: 'TRIP'
132
132
  end
133
-
134
133
  end
135
134
  end
@@ -1,10 +1,8 @@
1
1
  class Gillbus
2
2
  module SessionLogin
3
-
4
3
  Gillbus.register self, :session_login
5
4
 
6
5
  class Request < BaseRequest
7
-
8
6
  def initialize(password:, locale: nil)
9
7
  super
10
8
  end
@@ -19,14 +17,10 @@ class Gillbus
19
17
  def params
20
18
  compact(locale: translated_locale(locale))
21
19
  end
22
-
23
20
  end
24
21
 
25
22
  class Response < BaseResponse
26
-
27
23
  field :logged, :bool
28
-
29
24
  end
30
-
31
25
  end
32
26
  end
@@ -1,7 +1,6 @@
1
- # FIXME it's possible I got currency for some fields wrong.
1
+ # FIXME: it's possible I got currency for some fields wrong.
2
2
  class Gillbus
3
3
  class Commission
4
-
5
4
  extend Fields
6
5
  include UpdateAttrs
7
6
 
@@ -14,7 +13,9 @@ class Gillbus
14
13
  # Collecting description
15
14
  field :description
16
15
 
17
- # type of commission according to tariff (1 - inside tariff, 2 - outside of tariff, 3 - inside of tariff type II) NB: only in ALL_COMMISSIONS
16
+ # type of commission according to tariff
17
+ # (1 - inside tariff, 2 - outside of tariff, 3 - inside of tariff type II)
18
+ # NB: only in ALL_COMMISSIONS
18
19
  field :in_out_type
19
20
 
20
21
  # Value of collecting in sale currency
@@ -59,6 +60,5 @@ class Gillbus
59
60
  Monetize.parse(val, doc['CURRENCY'])
60
61
  end
61
62
  end
62
-
63
63
  end
64
64
  end
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Item
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -9,6 +8,5 @@ class Gillbus
9
8
  field :is_direct, :bool
10
9
  # Признак рейса с пересадкой
11
10
  field :is_transfer, :bool
12
-
13
11
  end
14
12
  end
@@ -2,7 +2,6 @@ class Gillbus
2
2
  # not a request, neither a response part
3
3
  # just a params record for SearchTrips
4
4
  class PassengerDiscount < BaseRequest
5
-
6
5
  def self.wrap(passenger_or_params)
7
6
  return passenger_or_params if passenger_or_params.is_a? self
8
7
  new(passenger_or_params)
@@ -31,14 +30,14 @@ class Gillbus
31
30
  # с предоставлением места, если такой имеется.
32
31
  attr_accessor :with_seat
33
32
 
34
- def params(prefix="")
33
+ def params(prefix = '')
35
34
  compact(
36
35
  birthday: date(birthday),
37
36
  studentTicket: student_ticket,
38
37
  studentYear: student_year,
39
38
  ISIC: isic,
40
39
  withSeat: bool(with_seat),
41
- ).map {|k, v| [:"#{prefix}#{k}", v] }.to_h
40
+ ).map { |k, v| [:"#{prefix}#{k}", v] }.to_h
42
41
  end
43
42
  end
44
43
  end
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Point
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class ReturnCause
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -18,6 +17,5 @@ class Gillbus
18
17
  Monetize.parse(val, doc[:_currency])
19
18
  end
20
19
  end
21
-
22
20
  end
23
21
  end
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Seat
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -33,6 +32,5 @@ class Gillbus
33
32
  def isle?
34
33
  type == 0 || type.nil?
35
34
  end
36
-
37
35
  end
38
36
  end
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Segment
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -137,11 +136,11 @@ class Gillbus
137
136
  # => "643"
138
137
  field :currency_code
139
138
 
140
- field :tariffs, [:tariff], key: "TARIFF"
139
+ field :tariffs, [:tariff], key: 'TARIFF'
141
140
 
142
- field :points, [Point], key: "POINT"
141
+ field :points, [Point], key: 'POINT'
143
142
 
144
- field :segments, [Segment], key: "SEGMENT"
143
+ field :segments, [Segment], key: 'SEGMENT'
145
144
 
146
145
  field :options, TripOptions, key: 'OPTIONS'
147
146
 
@@ -164,11 +163,11 @@ class Gillbus
164
163
  # to hold unserialized data
165
164
  attr_accessor :data
166
165
 
167
- def self.parse(doc, _ = nil, _ = nil)
166
+ # rubocop:disable Lint/UnusedMethodArgument
167
+ def self.parse(doc, instance: nil, parent: nil, options: {})
168
168
  instance = super
169
169
  instance.data = doc
170
170
  instance
171
171
  end
172
-
173
172
  end
174
173
  end
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Tariff
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -58,7 +57,7 @@ class Gillbus
58
57
 
59
58
  def string_with_possible_attributes(val)
60
59
  [val].flatten.map do |value|
61
- if value.kind_of? Hash
60
+ if value.is_a? Hash
62
61
  value['__content__']
63
62
  else
64
63
  value
@@ -1,7 +1,6 @@
1
1
  class Gillbus
2
2
  class Tariff
3
3
  class ReturnCause
4
-
5
4
  extend Fields
6
5
  include UpdateAttrs
7
6
 
@@ -9,9 +8,10 @@ class Gillbus
9
8
 
10
9
  field :cause, :string
11
10
 
12
- def self.parse(doc, _ = nil, _ = nil)
11
+ # rubocop:disable Lint/UnusedMethodArgument
12
+ def self.parse(doc, instance: nil, parent: nil, options: {})
13
13
  instance = super
14
- if doc.kind_of? Hash
14
+ if doc.is_a? Hash
15
15
  instance.cause = doc['__content__']
16
16
  instance.lossless = doc['lossless'] == 'true'
17
17
  else
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Ticket
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -286,7 +285,6 @@ class Gillbus
286
285
  def return_cause(val)
287
286
  ReturnCause.parse(val.merge(_currency: doc['SALE_CUR_CODE']))
288
287
  end
289
-
290
288
  end
291
289
  end
292
290
  end
@@ -42,11 +42,11 @@ class Gillbus
42
42
  # => "1"
43
43
  field :trip_mode, :int
44
44
 
45
- field :segments, [TimetableSegment], key: "SEGMENT"
45
+ field :segments, [TimetableSegment], key: 'SEGMENT'
46
46
 
47
- field :days_of_week, :days_of_week, key: "DAY_OR_DATE"
47
+ field :days_of_week, :days_of_week, key: 'DAY_OR_DATE'
48
48
 
49
- field :dates, :dates, key: "DAY_OR_DATE"
49
+ field :dates, :dates, key: 'DAY_OR_DATE'
50
50
 
51
51
  parser do
52
52
  DAYS_INTO_WEEK = {
@@ -57,7 +57,7 @@ class Gillbus
57
57
  5 => :thursday,
58
58
  6 => :friday,
59
59
  7 => :saturday,
60
- }
60
+ }.freeze
61
61
 
62
62
  def days_of_week(value)
63
63
  return unless instance.frequency == 3
@@ -1,6 +1,5 @@
1
1
  class Gillbus
2
2
  class Trip
3
-
4
3
  extend Fields
5
4
  include UpdateAttrs
6
5
 
@@ -151,11 +150,11 @@ class Gillbus
151
150
  # => "643"
152
151
  field :currency_code
153
152
 
154
- field :tariffs, [:tariff], key: "TARIFF"
153
+ field :tariffs, [:tariff], key: 'TARIFF'
155
154
 
156
- field :points, [Point], key: "POINT"
155
+ field :points, [Point], key: 'POINT'
157
156
 
158
- field :segments, [Segment], key: "SEGMENT"
157
+ field :segments, [Segment], key: 'SEGMENT'
159
158
 
160
159
  field :options, TripOptions, key: 'OPTIONS'
161
160
 
@@ -178,11 +177,11 @@ class Gillbus
178
177
  # to hold unserialized data
179
178
  attr_accessor :data
180
179
 
181
- def self.parse(doc, _ = nil, _ = nil)
180
+ # rubocop:disable Lint/UnusedMethodArgument
181
+ def self.parse(doc, instance: nil, parent: nil, options: {})
182
182
  instance = super
183
183
  instance.data = doc
184
184
  instance
185
185
  end
186
-
187
186
  end
188
187
  end