Class: TocDoc::Availability
- Extended by:
- UriUtils
- Defined in:
- lib/toc_doc/models/availability.rb,
lib/toc_doc/models/availability/collection.rb
Overview
Represents a single availability date entry returned by the Doctolib API.
Defined Under Namespace
Classes: Collection
Constant Summary collapse
- PATH =
API path for the availabilities endpoint.
'/availabilities.json'
Instance Attribute Summary collapse
-
#date ⇒ Date?
readonly
The parsed availability date.
-
#slots ⇒ Array<DateTime>
readonly
The parsed slot datetimes.
Attributes inherited from Resource
Class Method Summary collapse
-
.where(visit_motive_ids:, agenda_ids:, start_date: Date.today, limit: TocDoc.per_page, **options) ⇒ TocDoc::Availability::Collection
Fetches availabilities from the API and returns an Collection.
Instance Method Summary collapse
-
#initialize(*attrs) ⇒ Availability
constructor
A new instance of Availability.
Methods included from UriUtils
Methods inherited from Resource
#==, #[], #[]=, #attribute_names, #inspect, main_attrs, #method_missing, normalize_attrs, #to_h, #to_json
Constructor Details
#initialize(*attrs) ⇒ Availability
Returns a new instance of Availability.
100 101 102 103 104 105 106 |
# File 'lib/toc_doc/models/availability.rb', line 100 def initialize(*attrs) super raw = build_raw(@attrs) @date = Date.parse(raw['date']) if raw['date'] @slots = raw['slots'].map { |s| DateTime.parse(s) } end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class TocDoc::Resource
Instance Attribute Details
#date ⇒ Date? (readonly)
Returns the parsed availability date.
21 22 23 |
# File 'lib/toc_doc/models/availability.rb', line 21 def date @date end |
#slots ⇒ Array<DateTime> (readonly)
Returns the parsed slot datetimes.
24 25 26 |
# File 'lib/toc_doc/models/availability.rb', line 24 def slots @slots end |
Class Method Details
.where(visit_motive_ids:, agenda_ids:, start_date: Date.today, limit: TocDoc.per_page, **options) ⇒ TocDoc::Availability::Collection
Fetches availabilities from the API and returns an Collection.
When the API response contains a +next_slot+ key — indicating that no date in the current window has available slots — a second request is made automatically from that date before the collection is returned.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/toc_doc/models/availability.rb', line 55 def where(visit_motive_ids:, agenda_ids:, start_date: Date.today, limit: TocDoc.per_page, **) client = TocDoc.client depth = TocDoc.pagination_depth query = build_query(visit_motive_ids, agenda_ids, start_date, limit, ) data = client.get(PATH, query: query) depth.times do break unless data['next_slot'] merge_next_page(client, query, data) end Collection.new(data, query: query, path: PATH, client: client) end |