Class: BookingSync::API::Client
- Inherits:
-
Object
- Object
- BookingSync::API::Client
- Includes:
- Amenities, BillingAddresses, Bookings, BookingsPayments, Clients, Destinations, Inquiries, Payments, Periods, Photos, Rates, RatesRules, RatesTables, RentalAgreements, Rentals, Reviews, Seasons, SpecialOffers
- Defined in:
- lib/bookingsync/api/client.rb,
lib/bookingsync/api/client/rates.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/bookings.rb,
lib/bookingsync/api/client/payments.rb,
lib/bookingsync/api/client/amenities.rb,
lib/bookingsync/api/client/inquiries.rb,
lib/bookingsync/api/client/rates_rules.rb,
lib/bookingsync/api/client/destinations.rb,
lib/bookingsync/api/client/rates_tables.rb,
lib/bookingsync/api/client/special_offers.rb,
lib/bookingsync/api/client/billing_addresses.rb,
lib/bookingsync/api/client/bookings_payments.rb,
lib/bookingsync/api/client/rental_agreements.rb
Defined Under Namespace
Modules: Amenities, BillingAddresses, Bookings, BookingsPayments, Clients, Destinations, Inquiries, Payments, Periods, Photos, Rates, RatesRules, RatesTables, RentalAgreements, Rentals, Reviews, Seasons, SpecialOffers
Constant Summary collapse
- MEDIA_TYPE =
"application/vnd.api+json"
Instance Attribute Summary collapse
-
#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 request to a path with pagination support.
-
#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.
Methods included from SpecialOffers
#create_special_offer, #delete_special_offer, #edit_special_offer, #special_offers
Methods included from Seasons
#create_season, #delete_season, #edit_season, #seasons
Methods included from Reviews
Methods included from RentalAgreements
#create_rental_agreement, #create_rental_agreement_for_booking, #create_rental_agreement_for_rental, #rental_agreements
Methods included from Rentals
#cancel_rental, #create_rental, #edit_rental, #rental, #rentals
Methods included from RatesTables
#create_rates_table, #delete_rates_table, #edit_rates_table, #rates_tables
Methods included from RatesRules
Methods included from Rates
Methods included from Photos
Methods included from Payments
#cancel_payment, #create_payment, #edit_payment, #payments
Methods included from Periods
#create_period, #delete_period, #edit_period, #periods
Methods included from Inquiries
Methods included from Destinations
Methods included from Clients
#clients, #create_client, #edit_client
Methods included from BookingsPayments
Methods included from Bookings
#bookings, #cancel_booking, #create_booking, #edit_booking
Methods included from BillingAddresses
Methods included from Amenities
Constructor Details
#initialize(token, options = {}) {|@conn| ... } ⇒ BookingSync::API::Client
Initialize new Client
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/bookingsync/api/client.rb', line 57 def initialize(token, = {}) @token = token @base_url = [:base_url] @serializer = Serializer.new @conn = Faraday.new() @conn.headers[:accept] = MEDIA_TYPE @conn.headers[:content_type] = MEDIA_TYPE @conn.url_prefix = api_endpoint yield @conn if block_given? end |
Instance Attribute Details
#token ⇒ Object (readonly)
Returns the value of attribute token.
49 50 51 |
# File 'lib/bookingsync/api/client.rb', line 49 def token @token end |
Instance Method Details
#api_endpoint ⇒ String
Return API endpoint
107 108 109 |
# File 'lib/bookingsync/api/client.rb', line 107 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.
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/bookingsync/api/client.rb', line 180 def call(method, path, data = nil, = nil) if [:get, :head].include?(method) = data data = nil end ||= {} if .has_key?(:query) [: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 if headers = [:headers] req.headers.update headers end end handle_response(res) end |
#decode_body(str) ⇒ Object
Decode a String response body to a Resource.
123 124 125 |
# File 'lib/bookingsync/api/client.rb', line 123 def decode_body(str) @serializer.decode(str) end |
#delete(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP DELETE request
100 101 102 |
# File 'lib/bookingsync/api/client.rb', line 100 def delete(path, = {}) request :delete, path, end |
#encode_body(data) ⇒ String
Encode an object to a string for the API request.
115 116 117 |
# File 'lib/bookingsync/api/client.rb', line 115 def encode_body(data) @serializer.encode(data) end |
#get(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP GET request
73 74 75 |
# File 'lib/bookingsync/api/client.rb', line 73 def get(path, = {}) request :get, path, query: end |
#paginate(path, options = {}, &block) ⇒ Array<BookingSync::API::Resource>
Make a HTTP GET request to a path with pagination support.
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/bookingsync/api/client.rb', line 150 def paginate(path, = {}, &block) auto_paginate = .delete(:auto_paginate) response = call(:get, path, query: ) data = response.resources.dup if (block_given? or auto_paginate) && response.rels[:next] first_request = true loop do if block_given? yield(response.resources) elsif auto_paginate data.concat(response.resources) unless first_request first_request = false end break unless response.rels[:next] response = response.rels[:next].get end end data end |
#post(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP POST request
82 83 84 |
# File 'lib/bookingsync/api/client.rb', line 82 def post(path, = {}) request :post, path, end |
#put(path, options = {}) ⇒ Array<BookingSync::API::Resource>
Make a HTTP PUT request
91 92 93 |
# File 'lib/bookingsync/api/client.rb', line 91 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
135 136 137 138 |
# File 'lib/bookingsync/api/client.rb', line 135 def request(method, path, data = nil, = nil) response = call(method, path, data, ) response.respond_to?(:resources) ? response.resources : response end |