duffel_api 0.0.1.pre.dev → 0.1.0

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 (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