Class: BookingSync::API::Client
- Inherits:
-
Object
- Object
- BookingSync::API::Client
- Extended by:
- Forwardable
- Includes:
- Accounts, Amenities, Applications, ApplicationsPeriodsRentals, Attachments, Availabilities, Bathrooms, Bedrooms, BookingComments, Bookings, BookingsFees, BookingsPayments, BookingsTags, BookingsTaxes, ChangeOvers, Clients, Contacts, Conversations, Destinations, Fees, HostReviews, Hosts, Inquiries, LivingRooms, Messages, NightlyRateMaps, Participants, PaymentGateways, Payments, Periods, Photos, PreferencesGeneralSettings, Rates, RatesRules, RatesTables, RentalAgreements, RentalCancelationPolicies, RentalCancelationPolicyItems, RentalUrls, Rentals, RentalsAmenities, RentalsContentsOverrides, RentalsFees, ReservationsOffers, ReservationsRequests, ReviewReplies, Reviews, Seasons, Sources, SpecialOffers, StrictBookings, Taxes
- Defined in:
- lib/bookingsync/api/client.rb,
lib/bookingsync/api/client/fees.rb,
lib/bookingsync/api/client/hosts.rb,
lib/bookingsync/api/client/rates.rb,
lib/bookingsync/api/client/taxes.rb,
lib/bookingsync/api/client/photos.rb,
lib/bookingsync/api/client/clients.rb,
lib/bookingsync/api/client/periods.rb,
lib/bookingsync/api/client/rentals.rb,
lib/bookingsync/api/client/reviews.rb,
lib/bookingsync/api/client/seasons.rb,
lib/bookingsync/api/client/sources.rb,
lib/bookingsync/api/client/accounts.rb,
lib/bookingsync/api/client/bedrooms.rb,
lib/bookingsync/api/client/bookings.rb,
lib/bookingsync/api/client/contacts.rb,
lib/bookingsync/api/client/messages.rb,
lib/bookingsync/api/client/payments.rb,
lib/bookingsync/api/client/amenities.rb,
lib/bookingsync/api/client/bathrooms.rb,
lib/bookingsync/api/client/inquiries.rb,
lib/bookingsync/api/client/attachments.rb,
lib/bookingsync/api/client/rates_rules.rb,
lib/bookingsync/api/client/rental_urls.rb,
lib/bookingsync/api/client/applications.rb,
lib/bookingsync/api/client/change_overs.rb,
lib/bookingsync/api/client/destinations.rb,
lib/bookingsync/api/client/host_reviews.rb,
lib/bookingsync/api/client/living_rooms.rb,
lib/bookingsync/api/client/participants.rb,
lib/bookingsync/api/client/rates_tables.rb,
lib/bookingsync/api/client/rentals_fees.rb,
lib/bookingsync/api/client/bookings_fees.rb,
lib/bookingsync/api/client/bookings_tags.rb,
lib/bookingsync/api/client/conversations.rb,
lib/bookingsync/api/client/availabilities.rb,
lib/bookingsync/api/client/bookings_taxes.rb,
lib/bookingsync/api/client/review_replies.rb,
lib/bookingsync/api/client/special_offers.rb,
lib/bookingsync/api/client/strict_bookings.rb,
lib/bookingsync/api/client/booking_comments.rb,
lib/bookingsync/api/client/payment_gateways.rb,
lib/bookingsync/api/client/bookings_payments.rb,
lib/bookingsync/api/client/nightly_rate_maps.rb,
lib/bookingsync/api/client/rental_agreements.rb,
lib/bookingsync/api/client/rentals_amenities.rb,
lib/bookingsync/api/client/reservations_offers.rb,
lib/bookingsync/api/client/reservations_requests.rb,
lib/bookingsync/api/client/rentals_contents_overrides.rb,
lib/bookingsync/api/client/rental_cancelation_policies.rb,
lib/bookingsync/api/client/applications_periods_rentals.rb,
lib/bookingsync/api/client/preferences_general_settings.rb,
lib/bookingsync/api/client/rental_cancelation_policy_items.rb
Defined Under Namespace
Modules: Accounts, Amenities, Applications, ApplicationsPeriodsRentals, Attachments, Availabilities, Bathrooms, Bedrooms, BookingComments, Bookings, BookingsFees, BookingsPayments, BookingsTags, BookingsTaxes, ChangeOvers, Clients, Contacts, Conversations, Destinations, Fees, HostReviews, Hosts, Inquiries, LivingRooms, Messages, NightlyRateMaps, NoopInstrumenter, Participants, PaymentGateways, Payments, Periods, Photos, PreferencesGeneralSettings, Rates, RatesRules, RatesTables, RentalAgreements, RentalCancelationPolicies, RentalCancelationPolicyItems, RentalUrls, Rentals, RentalsAmenities, RentalsContentsOverrides, RentalsFees, ReservationsOffers, ReservationsRequests, ReviewReplies, Reviews, Seasons, Sources, SpecialOffers, StrictBookings, Taxes
Constant Summary collapse
- MEDIA_TYPE =
"application/vnd.api+json"
Instance Attribute Summary collapse
-
#last_response ⇒ Object
readonly
Returns the value of attribute last_response.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#pagination_first_response ⇒ Object
readonly
Returns the value of attribute pagination_first_response.
-
#token ⇒ Object
readonly
Returns the value of attribute token.
Instance Method Summary collapse
-
#api_endpoint ⇒ String
Return API endpoint.
-
#call(method, path, data = nil, options = nil) ⇒ BookingSync::API::Response
Make a HTTP request to given path and returns Response object.
-
#decode_body(str) ⇒ Object
Decode a String response body to a Resource.
-
#delete(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP DELETE request.
-
#encode_body(data) ⇒ String
Encode an object to a string for the API request.
-
#get(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP GET request.
-
#initialize(token, options = {}) {|@conn| ... } ⇒ BookingSync::API::Client
constructor
Initialize new Client.
-
#paginate(path, options = {}, &block) ⇒ Array<BookingSync::API::Resource>
Make a HTTP GET or POST request to a path with pagination support.
-
#patch(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP PATCH request.
-
#post(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP POST request.
-
#put(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP PUT request.
-
#request(method, path, data = nil, options = nil) ⇒ Array<BookingSync::API::Resource>
Make a HTTP request to a path and returns an Array of Resources.
-
#with_headers(extra_headers = {}, &block) ⇒ Array<BookingSync::API::Resource>|BookingSync::API::Resource|String|Object
Yields client with temporarily modified headers.
Methods included from Taxes
Methods included from Sources
#create_source, #edit_source, #source, #sources
Methods included from SpecialOffers
#create_special_offer, #delete_special_offer, #edit_special_offer, #special_offer, #special_offers
Methods included from Seasons
#create_season, #delete_season, #edit_season, #season, #seasons
Methods included from Reviews
#create_review, #dismiss_review, #review, #reviews
Methods included from ReviewReplies
#create_guest_review_reply, #create_host_review_reply, #review_replies, #review_reply
Methods included from ReservationsRequests
#create_reservation_request, #delete_reservation_request, #patch_reservation_request, #reservations_request, #reservations_requests
Methods included from ReservationsOffers
#create_reservation_offer, #delete_reservation_offer, #patch_reservation_offer, #reservations_offer, #reservations_offers
Methods included from RentalUrls
#cancel_rental_url, #create_rental_url, #edit_rental_url, #rental_url, #rental_urls, #restore_rental_url
Methods included from RentalsContentsOverrides
#create_rentals_contents_override, #delete_rentals_contents_override, #edit_rentals_contents_override, #rentals_contents_override, #rentals_contents_overrides
Methods included from RentalCancelationPolicyItems
#rental_cancelation_policy_item, #rental_cancelation_policy_items
Methods included from RentalCancelationPolicies
#rental_cancelation_policies, #rental_cancelation_policy
Methods included from RentalAgreements
#create_rental_agreement, #create_rental_agreement_for_booking, #create_rental_agreement_for_rental, #rental_agreement, #rental_agreements
Methods included from RentalsAmenities
#create_rentals_amenity, #delete_rentals_amenity, #edit_rentals_amenity, #rentals_amenities, #rentals_amenity
Methods included from RentalsFees
#create_rentals_fee, #rentals_fee, #rentals_fees
Methods included from Rentals
#create_rental, #delete_rental, #edit_rental, #rental, #rentals, #rentals_meta, #rentals_search
Methods included from RatesTables
#create_rates_table, #delete_rates_table, #edit_rates_table, #rates_table, #rates_tables
Methods included from RatesRules
#create_rates_rule, #delete_rates_rule, #edit_rates_rule, #rates_rule, #rates_rules
Methods included from Rates
Methods included from Photos
#create_photo, #delete_photo, #edit_photo, #photo, #photos
Methods included from PreferencesGeneralSettings
#edit_preferences_general_setting, #preferences_general_settings
Methods included from PaymentGateways
#payment_gateway, #payment_gateways
Methods included from Payments
#cancel_payment, #create_payment, #edit_payment, #payment, #payments
Methods included from Periods
#create_period, #delete_period, #edit_period, #period, #periods
Methods included from Participants
#create_participant, #edit_participant, #participant, #participants
Methods included from StrictBookings
Methods included from NightlyRateMaps
#edit_nightly_rate_map, #nightly_rate_map, #nightly_rate_maps
Methods included from Messages
#add_attachment_to_message, #create_message, #edit_message, #message, #messages
Methods included from LivingRooms
#cancel_living_room, #create_living_room, #edit_living_room, #living_room, #living_rooms
Methods included from Inquiries
#create_inquiry, #inquiries, #inquiry
Methods included from HostReviews
#create_draft_host_review, #create_submitted_host_review, #dismiss_host_review, #edit_draft_host_review, #host_review, #host_reviews, #submit_draft_host_review
Methods included from Hosts
#create_host, #edit_host, #host, #hosts
Methods included from Fees
Methods included from Destinations
Methods included from Contacts
#contact, #contacts, #create_contact, #delete_contact, #edit_contact
Methods included from Clients
#client, #clients, #create_client, #edit_client
Methods included from Conversations
#connect_booking_to_conversation, #conversation, #conversations, #create_conversation, #disconnect_booking_from_conversation, #edit_conversation
Methods included from ChangeOvers
Methods included from BookingsTaxes
#bookings_tax, #bookings_taxes
Methods included from BookingsTags
Methods included from BookingsPayments
#bookings_payment, #bookings_payments
Methods included from BookingsFees
Methods included from BookingComments
#booking_comment, #booking_comments, #create_booking_comment, #delete_booking_comment, #edit_booking_comment
Methods included from Bookings
#add_bookings_fee, #booking, #bookings, #cancel_booking, #create_booking, #edit_booking, #remove_bookings_fee
Methods included from Bedrooms
#bedroom, #bedrooms, #cancel_bedroom, #create_bedroom, #edit_bedroom
Methods included from Bathrooms
#bathroom, #bathrooms, #cancel_bathroom, #create_bathroom, #edit_bathroom
Methods included from Availabilities
#availabilities, #availability
Methods included from Attachments
#attachment, #attachments, #create_attachment, #edit_attachment
Methods included from ApplicationsPeriodsRentals
#applications_periods_rental, #applications_periods_rentals, #create_applications_periods_rental, #edit_applications_periods_rental
Methods included from Applications
#application, #applications, #edit_application
Methods included from Amenities
Methods included from Accounts
Constructor Details
#initialize(token, options = {}) {|@conn| ... } ⇒ BookingSync::API::Client
Initialize new Client
134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/bookingsync/api/client.rb', line 134 def initialize(token, = {}) @token = token @logger = [:logger] || default_logger @instrumenter = [:instrumenter] || NoopInstrumenter @base_url = [:base_url] @serializer = Serializer.new @conn = build_connection @conn.headers[:accept] = MEDIA_TYPE @conn.headers[:content_type] = MEDIA_TYPE @conn.headers[:user_agent] = user_agent @conn.url_prefix = api_endpoint yield @conn if block_given? end |
Instance Attribute Details
#last_response ⇒ Object (readonly)
Returns the value of attribute last_response.
120 121 122 |
# File 'lib/bookingsync/api/client.rb', line 120 def last_response @last_response end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
120 121 122 |
# File 'lib/bookingsync/api/client.rb', line 120 def logger @logger end |
#pagination_first_response ⇒ Object (readonly)
Returns the value of attribute pagination_first_response.
120 121 122 |
# File 'lib/bookingsync/api/client.rb', line 120 def pagination_first_response @pagination_first_response end |
#token ⇒ Object (readonly)
Returns the value of attribute token.
120 121 122 |
# File 'lib/bookingsync/api/client.rb', line 120 def token @token end |
Instance Method Details
#api_endpoint ⇒ String
Return API endpoint
196 197 198 |
# File 'lib/bookingsync/api/client.rb', line 196 def api_endpoint URI.join(base_url, "api/v3").to_s end |
#call(method, path, data = nil, options = nil) ⇒ BookingSync::API::Response
Make a HTTP request to given path and returns Response object.
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/bookingsync/api/client.rb', line 266 def call(method, path, data = nil, = nil) instrument("call.bookingsync_api", method: method, path: path) do if [:get, :head].include?(method) = data data = {} end ||= {} [:headers] ||= {} [:headers]["Authorization"] = "Bearer #{token}" if .has_key?(:query) if [:query].has_key?(:ids) ids = Array([:query].delete(:ids)).join(",") path = "#{path}/#{ids}" end [:query].keys.each do |key| if [:query][key].is_a?(Array) [:query][key] = [:query][key].join(",") end end end url = (path, [:uri]) res = @conn.send(method, url) do |req| if data req.body = data.is_a?(String) ? data : encode_body(data) end if params = [:query] req.params.update params end req.headers.update [:headers] end handle_response(res) end end |
#decode_body(str) ⇒ Object
Decode a String response body to a Resource.
212 213 214 |
# File 'lib/bookingsync/api/client.rb', line 212 def decode_body(str) @serializer.decode(str) end |
#delete(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP DELETE request
189 190 191 |
# File 'lib/bookingsync/api/client.rb', line 189 def delete(path, = {}) request :delete, path, end |
#encode_body(data) ⇒ String
Encode an object to a string for the API request.
204 205 206 |
# File 'lib/bookingsync/api/client.rb', line 204 def encode_body(data) @serializer.encode(data) end |
#get(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP GET request
153 154 155 |
# File 'lib/bookingsync/api/client.rb', line 153 def get(path, = {}) request :get, path, query: end |
#paginate(path, options = {}, &block) ⇒ Array<BookingSync::API::Resource>
Make a HTTP GET or POST request to a path with pagination support.
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/bookingsync/api/client.rb', line 241 def paginate(path, = {}, &block) instrument("paginate.bookingsync_api", path: path) do request_settings = { auto_paginate: .delete(:auto_paginate), request_method: .delete(:request_method) || :get } if block_given? data = fetch_with_block(path, , request_settings, &block) else data = fetch_with_paginate(path, , request_settings) end data end end |
#patch(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP PATCH request
180 181 182 |
# File 'lib/bookingsync/api/client.rb', line 180 def patch(path, = {}) request :patch, path, end |
#post(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP POST request
162 163 164 |
# File 'lib/bookingsync/api/client.rb', line 162 def post(path, = {}) request :post, path, end |
#put(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP PUT request
171 172 173 |
# File 'lib/bookingsync/api/client.rb', line 171 def put(path, = {}) request :put, path, end |
#request(method, path, data = nil, options = nil) ⇒ Array<BookingSync::API::Resource>
Make a HTTP request to a path and returns an Array of Resources
224 225 226 227 228 229 |
# File 'lib/bookingsync/api/client.rb', line 224 def request(method, path, data = nil, = nil) instrument("request.bookingsync_api", method: method, path: path) do response = call(method, path, data, ) response.respond_to?(:resources) ? response.resources : response end end |
#with_headers(extra_headers = {}, &block) ⇒ Array<BookingSync::API::Resource>|BookingSync::API::Resource|String|Object
Yields client with temporarily modified headers.
307 308 309 310 311 312 313 |
# File 'lib/bookingsync/api/client.rb', line 307 def with_headers(extra_headers = {}, &block) original_headers = @conn.headers.dup @conn.headers.merge!(extra_headers) result = yield self @conn.headers = original_headers result end |