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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +82 -0
- data/.github/dependabot.yml +6 -0
- data/.gitignore +9 -0
- data/.rubocop.yml +9 -9
- data/CHANGELOG.md +1 -3
- data/CODE_OF_CONDUCT.md +1 -1
- data/Gemfile +10 -2
- data/LICENSE.txt +1 -1
- data/README.md +190 -33
- data/Rakefile +1 -3
- data/bin/console +7 -0
- data/bin/setup +2 -0
- data/duffel_api.gemspec +40 -0
- data/examples/book_and_change.rb +106 -0
- data/examples/book_with_seat.rb +91 -0
- data/examples/exploring_data.rb +43 -0
- data/examples/hold_and_pay_later.rb +82 -0
- data/examples/search_and_book.rb +91 -0
- data/lib/duffel_api/api_response.rb +17 -0
- data/lib/duffel_api/api_service.rb +37 -0
- data/lib/duffel_api/client.rb +87 -0
- data/lib/duffel_api/errors/airline_error.rb +8 -0
- data/lib/duffel_api/errors/api_error.rb +8 -0
- data/lib/duffel_api/errors/authentication_error.rb +8 -0
- data/lib/duffel_api/errors/error.rb +54 -0
- data/lib/duffel_api/errors/invalid_request_error.rb +8 -0
- data/lib/duffel_api/errors/invalid_state_error.rb +8 -0
- data/lib/duffel_api/errors/rate_limit_error.rb +8 -0
- data/lib/duffel_api/errors/validation_error.rb +8 -0
- data/lib/duffel_api/list_response.rb +27 -0
- data/lib/duffel_api/middlewares/raise_duffel_errors.rb +67 -0
- data/lib/duffel_api/paginator.rb +27 -0
- data/lib/duffel_api/request.rb +64 -0
- data/lib/duffel_api/resources/aircraft.rb +26 -0
- data/lib/duffel_api/resources/airline.rb +26 -0
- data/lib/duffel_api/resources/airport.rb +40 -0
- data/lib/duffel_api/resources/base_resource.rb +16 -0
- data/lib/duffel_api/resources/offer.rb +60 -0
- data/lib/duffel_api/resources/offer_passenger.rb +28 -0
- data/lib/duffel_api/resources/offer_request.rb +34 -0
- data/lib/duffel_api/resources/order.rb +58 -0
- data/lib/duffel_api/resources/order_cancellation.rb +34 -0
- data/lib/duffel_api/resources/order_change.rb +46 -0
- data/lib/duffel_api/resources/order_change_offer.rb +46 -0
- data/lib/duffel_api/resources/order_change_request.rb +30 -0
- data/lib/duffel_api/resources/payment.rb +26 -0
- data/lib/duffel_api/resources/payment_intent.rb +52 -0
- data/lib/duffel_api/resources/refund.rb +42 -0
- data/lib/duffel_api/resources/seat_map.rb +24 -0
- data/lib/duffel_api/resources/webhook.rb +32 -0
- data/lib/duffel_api/response.rb +45 -0
- data/lib/duffel_api/services/aircraft_service.rb +36 -0
- data/lib/duffel_api/services/airlines_service.rb +36 -0
- data/lib/duffel_api/services/airports_service.rb +36 -0
- data/lib/duffel_api/services/base_service.rb +29 -0
- data/lib/duffel_api/services/offer_passengers_service.rb +30 -0
- data/lib/duffel_api/services/offer_requests_service.rb +67 -0
- data/lib/duffel_api/services/offers_service.rb +36 -0
- data/lib/duffel_api/services/order_cancellations_service.rb +75 -0
- data/lib/duffel_api/services/order_change_offers_service.rb +36 -0
- data/lib/duffel_api/services/order_change_requests_service.rb +37 -0
- data/lib/duffel_api/services/order_changes_service.rb +56 -0
- data/lib/duffel_api/services/orders_service.rb +74 -0
- data/lib/duffel_api/services/payment_intents_service.rb +56 -0
- data/lib/duffel_api/services/payments_service.rb +26 -0
- data/lib/duffel_api/services/refunds_service.rb +36 -0
- data/lib/duffel_api/services/seat_maps_service.rb +19 -0
- data/lib/duffel_api/services/webhooks_service.rb +83 -0
- data/lib/duffel_api/version.rb +1 -1
- data/lib/duffel_api.rb +51 -4
- 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
|