duffel_api 0.0.1.pre.dev → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +82 -0
  3. data/.github/dependabot.yml +6 -0
  4. data/.gitignore +9 -0
  5. data/.rubocop.yml +9 -9
  6. data/CHANGELOG.md +1 -3
  7. data/CODE_OF_CONDUCT.md +1 -1
  8. data/Gemfile +10 -2
  9. data/LICENSE.txt +1 -1
  10. data/README.md +190 -33
  11. data/Rakefile +1 -3
  12. data/bin/console +7 -0
  13. data/bin/setup +2 -0
  14. data/duffel_api.gemspec +40 -0
  15. data/examples/book_and_change.rb +106 -0
  16. data/examples/book_with_seat.rb +91 -0
  17. data/examples/exploring_data.rb +43 -0
  18. data/examples/hold_and_pay_later.rb +82 -0
  19. data/examples/search_and_book.rb +91 -0
  20. data/lib/duffel_api/api_response.rb +17 -0
  21. data/lib/duffel_api/api_service.rb +37 -0
  22. data/lib/duffel_api/client.rb +87 -0
  23. data/lib/duffel_api/errors/airline_error.rb +8 -0
  24. data/lib/duffel_api/errors/api_error.rb +8 -0
  25. data/lib/duffel_api/errors/authentication_error.rb +8 -0
  26. data/lib/duffel_api/errors/error.rb +54 -0
  27. data/lib/duffel_api/errors/invalid_request_error.rb +8 -0
  28. data/lib/duffel_api/errors/invalid_state_error.rb +8 -0
  29. data/lib/duffel_api/errors/rate_limit_error.rb +8 -0
  30. data/lib/duffel_api/errors/validation_error.rb +8 -0
  31. data/lib/duffel_api/list_response.rb +27 -0
  32. data/lib/duffel_api/middlewares/raise_duffel_errors.rb +67 -0
  33. data/lib/duffel_api/paginator.rb +27 -0
  34. data/lib/duffel_api/request.rb +64 -0
  35. data/lib/duffel_api/resources/aircraft.rb +26 -0
  36. data/lib/duffel_api/resources/airline.rb +26 -0
  37. data/lib/duffel_api/resources/airport.rb +40 -0
  38. data/lib/duffel_api/resources/base_resource.rb +16 -0
  39. data/lib/duffel_api/resources/offer.rb +60 -0
  40. data/lib/duffel_api/resources/offer_passenger.rb +28 -0
  41. data/lib/duffel_api/resources/offer_request.rb +34 -0
  42. data/lib/duffel_api/resources/order.rb +58 -0
  43. data/lib/duffel_api/resources/order_cancellation.rb +34 -0
  44. data/lib/duffel_api/resources/order_change.rb +46 -0
  45. data/lib/duffel_api/resources/order_change_offer.rb +46 -0
  46. data/lib/duffel_api/resources/order_change_request.rb +30 -0
  47. data/lib/duffel_api/resources/payment.rb +26 -0
  48. data/lib/duffel_api/resources/payment_intent.rb +52 -0
  49. data/lib/duffel_api/resources/refund.rb +42 -0
  50. data/lib/duffel_api/resources/seat_map.rb +24 -0
  51. data/lib/duffel_api/resources/webhook.rb +32 -0
  52. data/lib/duffel_api/response.rb +45 -0
  53. data/lib/duffel_api/services/aircraft_service.rb +36 -0
  54. data/lib/duffel_api/services/airlines_service.rb +36 -0
  55. data/lib/duffel_api/services/airports_service.rb +36 -0
  56. data/lib/duffel_api/services/base_service.rb +29 -0
  57. data/lib/duffel_api/services/offer_passengers_service.rb +30 -0
  58. data/lib/duffel_api/services/offer_requests_service.rb +67 -0
  59. data/lib/duffel_api/services/offers_service.rb +36 -0
  60. data/lib/duffel_api/services/order_cancellations_service.rb +75 -0
  61. data/lib/duffel_api/services/order_change_offers_service.rb +36 -0
  62. data/lib/duffel_api/services/order_change_requests_service.rb +37 -0
  63. data/lib/duffel_api/services/order_changes_service.rb +56 -0
  64. data/lib/duffel_api/services/orders_service.rb +74 -0
  65. data/lib/duffel_api/services/payment_intents_service.rb +56 -0
  66. data/lib/duffel_api/services/payments_service.rb +26 -0
  67. data/lib/duffel_api/services/refunds_service.rb +36 -0
  68. data/lib/duffel_api/services/seat_maps_service.rb +19 -0
  69. data/lib/duffel_api/services/webhooks_service.rb +83 -0
  70. data/lib/duffel_api/version.rb +1 -1
  71. data/lib/duffel_api.rb +51 -4
  72. metadata +90 -12
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module DuffelAPI
6
+ # A class that wraps an API request
7
+ class Request
8
+ # Initialize a request class, which makes calls to the API
9
+ # @param connection
10
+ # @param method [Symbol] the method to make the request with
11
+ # @param path [String] the path to make the request to
12
+ # @param options [hash] options for the request
13
+ # @param headers [hash] headers to send with the request
14
+ def initialize(connection, method, path, options)
15
+ @connection = connection
16
+ @method = method
17
+ @path = path
18
+ @headers = (options.delete(:headers) || {}).transform_keys(&:to_s)
19
+ @given_options = options
20
+
21
+ @request_body = request_body
22
+
23
+ if @request_body.is_a?(Hash)
24
+ @request_body = @request_body.to_json
25
+ @headers["Content-Type"] ||= "application/json"
26
+ end
27
+ end
28
+
29
+ # Make the request and wrap it in a Response object
30
+ def request
31
+ Response.new(make_request)
32
+ end
33
+
34
+ # Make the API request
35
+ def make_request
36
+ @connection.send(@method) do |request|
37
+ request.url @path
38
+ request.body = @request_body
39
+ request.params = request_query
40
+ request.headers.merge!(@headers)
41
+ end
42
+ end
43
+
44
+ # Fetch the body to send with the request
45
+ def request_body
46
+ if @method == :get
47
+ nil
48
+ elsif %i[post put delete patch].include?(@method)
49
+ @given_options.fetch(:params, {})
50
+ else
51
+ raise "Unknown request method #{@method}"
52
+ end
53
+ end
54
+
55
+ # Get the query params to send with the request
56
+ def request_query
57
+ if @method == :get
58
+ @given_options.fetch(:params, {})
59
+ else
60
+ @given_options.fetch(:query_params, {})
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Aircraft
7
+ attr_reader :iata_code
8
+ attr_reader :id
9
+ attr_reader :name
10
+
11
+ def initialize(object, response = nil)
12
+ @object = object
13
+
14
+ @iata_code = object["iata_code"]
15
+ @id = object["id"]
16
+ @name = object["name"]
17
+
18
+ @response = response
19
+ end
20
+
21
+ def api_response
22
+ APIResponse.new(@response)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Airline
7
+ attr_reader :iata_code
8
+ attr_reader :id
9
+ attr_reader :name
10
+
11
+ def initialize(object, response = nil)
12
+ @object = object
13
+
14
+ @iata_code = object["iata_code"]
15
+ @id = object["id"]
16
+ @name = object["name"]
17
+
18
+ @response = response
19
+ end
20
+
21
+ def api_response
22
+ APIResponse.new(@response)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Airport
7
+ attr_reader :city
8
+ attr_reader :city_name
9
+ attr_reader :iata_code
10
+ attr_reader :iata_country_code
11
+ attr_reader :icao_code
12
+ attr_reader :id
13
+ attr_reader :latitude
14
+ attr_reader :longitude
15
+ attr_reader :name
16
+ attr_reader :time_zone
17
+
18
+ def initialize(object, response = nil)
19
+ @object = object
20
+
21
+ @city = object["city"]
22
+ @city_name = object["city_name"]
23
+ @iata_code = object["iata_code"]
24
+ @iata_country_code = object["iata_country_code"]
25
+ @icao_code = object["icao_code"]
26
+ @id = object["id"]
27
+ @latitude = object["latitude"]
28
+ @longitude = object["longitude"]
29
+ @name = object["name"]
30
+ @time_zone = object["time_zone"]
31
+
32
+ @response = response
33
+ end
34
+
35
+ def api_response
36
+ APIResponse.new(@response)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class BaseResource
7
+ def initialize(_object, response)
8
+ @response = response
9
+ end
10
+
11
+ def api_response
12
+ APIResponse.new(@response)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Offer < BaseResource
7
+ attr_reader :allowed_passenger_identity_document_types
8
+ attr_reader :available_services
9
+ attr_reader :base_amount
10
+ attr_reader :base_currency
11
+ attr_reader :conditions
12
+ attr_reader :created_at
13
+ attr_reader :expires_at
14
+ attr_reader :id
15
+ attr_reader :live_mode
16
+ attr_reader :owner
17
+ attr_reader :passenger_identity_documents_required
18
+ attr_reader :passengers
19
+ attr_reader :payment_requirements
20
+ attr_reader :slices
21
+ attr_reader :tax_amount
22
+ attr_reader :tax_currency
23
+ attr_reader :total_amount
24
+ attr_reader :total_currency
25
+ attr_reader :total_emissions_kg
26
+ attr_reader :updated_at
27
+
28
+ # rubocop:disable Metrics/AbcSize
29
+ def initialize(object, response = nil)
30
+ @object = object
31
+
32
+ @allowed_passenger_identity_document_types =
33
+ object["allowed_passenger_identity_document_types"]
34
+ @available_services = object["available_services"]
35
+ @base_amount = object["base_amount"]
36
+ @base_currency = object["base_currency"]
37
+ @conditions = object["conditions"]
38
+ @created_at = object["created_at"]
39
+ @expires_at = object["expires_at"]
40
+ @id = object["id"]
41
+ @live_mode = object["live_mode"]
42
+ @owner = object["owner"]
43
+ @passenger_identity_documents_required =
44
+ object["passenger_identity_documents_required"]
45
+ @passengers = object["passengers"]
46
+ @payment_requirements = object["payment_requirements"]
47
+ @slices = object["slices"]
48
+ @tax_amount = object["tax_amount"]
49
+ @tax_currency = object["tax_currency"]
50
+ @total_amount = object["total_amount"]
51
+ @total_currency = object["total_currency"]
52
+ @total_emissions_kg = object["total_emissions_kg"]
53
+ @updated_at = object["updated_at"]
54
+
55
+ super(object, response)
56
+ end
57
+ # rubocop:enable Metrics/AbcSize
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class OfferPassenger < BaseResource
7
+ attr_reader :type
8
+ attr_reader :loyalty_programme_accounts
9
+ attr_reader :id
10
+ attr_reader :given_name
11
+ attr_reader :family_name
12
+ attr_reader :age
13
+
14
+ def initialize(object, response = nil)
15
+ @object = object
16
+
17
+ @type = object["type"]
18
+ @loyalty_programme_accounts = object["loyalty_programme_accounts"]
19
+ @id = object["id"]
20
+ @given_name = object["given_name"]
21
+ @family_name = object["family_name"]
22
+ @age = object["age"]
23
+
24
+ super(object, response)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class OfferRequest
7
+ attr_reader :cabin_class
8
+ attr_reader :created_at
9
+ attr_reader :id
10
+ attr_reader :live_mode
11
+ attr_reader :offers
12
+ attr_reader :passengers
13
+ attr_reader :slices
14
+
15
+ def initialize(object, response = nil)
16
+ @object = object
17
+
18
+ @cabin_class = object["cabin_class"]
19
+ @created_at = object["created_at"]
20
+ @id = object["id"]
21
+ @live_mode = object["live_mode"]
22
+ @offers = object["offers"]
23
+ @passengers = object["passengers"]
24
+ @slices = object["slices"]
25
+
26
+ @response = response
27
+ end
28
+
29
+ def api_response
30
+ APIResponse.new(@response)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Order < BaseResource
7
+ attr_reader :base_amount
8
+ attr_reader :base_currency
9
+ attr_reader :booking_reference
10
+ attr_reader :cancelled_at
11
+ attr_reader :conditions
12
+ attr_reader :created_at
13
+ attr_reader :documents
14
+ attr_reader :id
15
+ attr_reader :live_mode
16
+ attr_reader :metadata
17
+ attr_reader :owner
18
+ attr_reader :passengers
19
+ attr_reader :payment_status
20
+ attr_reader :services
21
+ attr_reader :slices
22
+ attr_reader :synced_at
23
+ attr_reader :tax_amount
24
+ attr_reader :tax_currency
25
+ attr_reader :total_amount
26
+ attr_reader :total_currency
27
+
28
+ # rubocop:disable Metrics/AbcSize
29
+ def initialize(object, response = nil)
30
+ @object = object
31
+
32
+ @base_amount = object["base_amount"]
33
+ @base_currency = object["base_currency"]
34
+ @booking_reference = object["booking_reference"]
35
+ @cancelled_at = object["cancelled_at"]
36
+ @conditions = object["conditions"]
37
+ @created_at = object["created_at"]
38
+ @documents = object["documents"]
39
+ @id = object["id"]
40
+ @live_mode = object["live_mode"]
41
+ @metadata = object["metadata"]
42
+ @owner = object["owner"]
43
+ @passengers = object["passengers"]
44
+ @payment_status = object["payment_status"]
45
+ @services = object["services"]
46
+ @slices = object["slices"]
47
+ @synced_at = object["synced_at"]
48
+ @tax_amount = object["tax_amount"]
49
+ @tax_currency = object["tax_currency"]
50
+ @total_amount = object["total_amount"]
51
+ @total_currency = object["total_currency"]
52
+
53
+ super(object, response)
54
+ end
55
+ # rubocop:enable Metrics/AbcSize
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class OrderCancellation < BaseResource
7
+ attr_reader :confirmed_at
8
+ attr_reader :created_at
9
+ attr_reader :expires_at
10
+ attr_reader :id
11
+ attr_reader :live_mode
12
+ attr_reader :order_id
13
+ attr_reader :refund_amount
14
+ attr_reader :refund_currency
15
+ attr_reader :refund_to
16
+
17
+ def initialize(object, response = nil)
18
+ @object = object
19
+
20
+ @confirmed_at = object["confirmed_at"]
21
+ @created_at = object["created_at"]
22
+ @expires_at = object["expires_at"]
23
+ @id = object["id"]
24
+ @live_mode = object["live_mode"]
25
+ @order_id = object["order_id"]
26
+ @refund_amount = object["refund_amount"]
27
+ @refund_currency = object["refund_currency"]
28
+ @refund_to = object["refund_to"]
29
+
30
+ super(object, response)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class OrderChange < BaseResource
7
+ attr_reader :change_total_amount
8
+ attr_reader :change_total_currency
9
+ attr_reader :confirmed_at
10
+ attr_reader :created_at
11
+ attr_reader :expires_at
12
+ attr_reader :id
13
+ attr_reader :live_mode
14
+ attr_reader :new_total_amount
15
+ attr_reader :new_total_currency
16
+ attr_reader :order_id
17
+ attr_reader :penalty_total_amount
18
+ attr_reader :penalty_total_currency
19
+ attr_reader :refund_to
20
+ attr_reader :slices
21
+
22
+ # rubocop:disable Metrics/AbcSize
23
+ def initialize(object, response = nil)
24
+ @object = object
25
+
26
+ @change_total_amount = object["change_total_amount"]
27
+ @change_total_currency = object["change_total_currency"]
28
+ @confirmed_at = object["confirmed_at"]
29
+ @created_at = object["created_at"]
30
+ @expires_at = object["expires_at"]
31
+ @id = object["id"]
32
+ @live_mode = object["live_mode"]
33
+ @new_total_amount = object["new_total_amount"]
34
+ @new_total_currency = object["new_total_currency"]
35
+ @order_id = object["order_id"]
36
+ @penalty_total_amount = object["penalty_total_amount"]
37
+ @penalty_total_currency = object["penalty_total_currency"]
38
+ @refund_to = object["refund_to"]
39
+ @slices = object["slices"]
40
+
41
+ super(object, response)
42
+ end
43
+ # rubocop:enable Metrics/AbcSize
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class OrderChangeOffer < BaseResource
7
+ attr_reader :change_total_amount
8
+ attr_reader :change_total_currency
9
+ attr_reader :created_at
10
+ attr_reader :expires_at
11
+ attr_reader :id
12
+ attr_reader :live_mode
13
+ attr_reader :new_total_amount
14
+ attr_reader :new_total_currency
15
+ attr_reader :order_change_id
16
+ attr_reader :penalty_total_amount
17
+ attr_reader :penalty_total_currency
18
+ attr_reader :refund_to
19
+ attr_reader :slices
20
+ attr_reader :updated_at
21
+
22
+ # rubocop:disable Metrics/AbcSize
23
+ def initialize(object, response = nil)
24
+ @object = object
25
+
26
+ @change_total_amount = object["change_total_amount"]
27
+ @change_total_currency = object["change_total_currency"]
28
+ @created_at = object["created_at"]
29
+ @expires_at = object["expires_at"]
30
+ @id = object["id"]
31
+ @live_mode = object["live_mode"]
32
+ @new_total_amount = object["new_total_amount"]
33
+ @new_total_currency = object["new_total_currency"]
34
+ @order_change_id = object["order_change_id"]
35
+ @penalty_total_amount = object["penalty_total_amount"]
36
+ @penalty_total_currency = object["penalty_total_currency"]
37
+ @refund_to = object["refund_to"]
38
+ @slices = object["slices"]
39
+ @updated_at = object["updated_at"]
40
+
41
+ super(object, response)
42
+ end
43
+ # rubocop:enable Metrics/AbcSize
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class OrderChangeRequest < BaseResource
7
+ attr_reader :created_at
8
+ attr_reader :id
9
+ attr_reader :live_mode
10
+ attr_reader :order_change_offers
11
+ attr_reader :order_id
12
+ attr_reader :slices
13
+ attr_reader :updated_at
14
+
15
+ def initialize(object, response = nil)
16
+ @object = object
17
+
18
+ @created_at = object["created_at"]
19
+ @id = object["id"]
20
+ @live_mode = object["live_mode"]
21
+ @order_change_offers = object["order_change_offers"]
22
+ @order_id = object["order_id"]
23
+ @slices = object["slices"]
24
+ @updated_at = object["updated_at"]
25
+
26
+ super(object, response)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Payment < BaseResource
7
+ attr_reader :amount
8
+ attr_reader :created_at
9
+ attr_reader :currency
10
+ attr_reader :id
11
+ attr_reader :type
12
+
13
+ def initialize(object, response = nil)
14
+ @object = object
15
+
16
+ @amount = object["amount"]
17
+ @created_at = object["created_at"]
18
+ @currency = object["currency"]
19
+ @id = object["id"]
20
+ @type = object["type"]
21
+
22
+ super(object, response)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class PaymentIntent < BaseResource
7
+ attr_reader :amount
8
+ attr_reader :card_country_code
9
+ attr_reader :card_last_four_digits
10
+ attr_reader :card_network
11
+ attr_reader :client_token
12
+ attr_reader :confirmed_at
13
+ attr_reader :created_at
14
+ attr_reader :currency
15
+ attr_reader :fees_amount
16
+ attr_reader :fees_currency
17
+ attr_reader :id
18
+ attr_reader :live_mode
19
+ attr_reader :net_amount
20
+ attr_reader :net_currency
21
+ attr_reader :refunds
22
+ attr_reader :status
23
+ attr_reader :updated_at
24
+
25
+ # rubocop:disable Metrics/AbcSize
26
+ def initialize(object, response = nil)
27
+ @object = object
28
+
29
+ @amount = object["amount"]
30
+ @card_country_code = object["card_country_code"]
31
+ @card_last_four_digits = object["card_last_four_digits"]
32
+ @card_network = object["card_network"]
33
+ @client_token = object["client_token"]
34
+ @confirmed_at = object["confirmed_at"]
35
+ @created_at = object["created_at"]
36
+ @currency = object["currency"]
37
+ @fees_amount = object["fees_amount"]
38
+ @fees_currency = object["fees_currency"]
39
+ @id = object["id"]
40
+ @live_mode = object["live_mode"]
41
+ @net_amount = object["net_amount"]
42
+ @net_currency = object["net_currency"]
43
+ @refunds = object["refunds"]
44
+ @status = object["status"]
45
+ @updated_at = object["updated_at"]
46
+
47
+ super(object, response)
48
+ end
49
+ # rubocop:enable Metrics/AbcSize
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class Refund < BaseResource
7
+ attr_reader :amount
8
+ attr_reader :arrival
9
+ attr_reader :created_at
10
+ attr_reader :currency
11
+ attr_reader :destination
12
+ attr_reader :id
13
+ attr_reader :live_mode
14
+ attr_reader :net_amount
15
+ attr_reader :net_currency
16
+ attr_reader :payment_intent_id
17
+ attr_reader :status
18
+ attr_reader :updated_at
19
+
20
+ # rubocop:disable Metrics/AbcSize
21
+ def initialize(object, response = nil)
22
+ @object = object
23
+
24
+ @amount = object["amount"]
25
+ @arrival = object["arrival"]
26
+ @created_at = object["created_at"]
27
+ @currency = object["currency"]
28
+ @destination = object["destination"]
29
+ @id = object["id"]
30
+ @live_mode = object["live_mode"]
31
+ @net_amount = object["net_amount"]
32
+ @net_currency = object["net_currency"]
33
+ @payment_intent_id = object["payment_intent_id"]
34
+ @status = object["status"]
35
+ @updated_at = object["updated_at"]
36
+
37
+ super(object, response)
38
+ end
39
+ # rubocop:enable Metrics/AbcSize
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ module DuffelAPI
5
+ module Resources
6
+ class SeatMap < BaseResource
7
+ attr_reader :cabins
8
+ attr_reader :id
9
+ attr_reader :segment_id
10
+ attr_reader :slice_id
11
+
12
+ def initialize(object, response = nil)
13
+ @object = object
14
+
15
+ @cabins = object["cabins"]
16
+ @id = object["id"]
17
+ @segment_id = object["segment_id"]
18
+ @slice_id = object["slice_id"]
19
+
20
+ super(object, response)
21
+ end
22
+ end
23
+ end
24
+ end