calendly 0.12.0 → 0.13.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +13 -1
- data/calendly.gemspec +1 -0
- data/lib/calendly/client.rb +30 -0
- data/lib/calendly/models/event_type.rb +14 -0
- data/lib/calendly/models/event_type_available_type.rb +33 -0
- data/lib/calendly/models/routing_form.rb +1 -1
- data/lib/calendly/version.rb +1 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f28a38b908de51d9f237545fcf0d59aab6a6d25747c2118b17529380c68c7918
|
4
|
+
data.tar.gz: 126bbd0048717b51f5c923e48b74928263eaa1f55865dc73ef790ee11f097133
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fad893cae7dbcbf7ab5c7d3aede8da1e7852885b3491eb65cad4ec7253a68d31655233d3308d00460a2a244756e7b4a7b31922381085f97c0e3229f775c50cc2
|
7
|
+
data.tar.gz: cc9aca55ae9c25bccb69a2a320526d449b2a5b70807bd47e4e4e1db5903ee2618b276065b400c0c60183a4625b82e04840a2620f6180e69577a841350806550c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.13.0 - 2022-08-03
|
4
|
+
|
5
|
+
- supported List Event Type Available Times API. (#57)
|
6
|
+
- changed were followings:
|
7
|
+
- Client
|
8
|
+
- (Add method) event_type_available_times
|
9
|
+
- EventType model
|
10
|
+
- (Add method) available_times
|
11
|
+
|
3
12
|
## 0.12.0 - 2022-07-16
|
4
13
|
|
5
14
|
- supported Routing Form APIs. (#55)
|
data/README.md
CHANGED
@@ -64,9 +64,21 @@ me.scheduling_url
|
|
64
64
|
#
|
65
65
|
event_types = me.event_types
|
66
66
|
# => [#<Calendly::EventType uuid="ET001", name="15 Minute Meeting", type="StandardEventType", slug="15min", active=true, kind="solo", scheduling_url="https://calendly.com/foobar/15min", ..>, #<Calendly::EventType uuid="ET002", name="30 Minute Meeting", type="StandardEventType", slug="30min", active=true, kind="solo", scheduling_url="https://calendly.com/foobar/30min", ..>]
|
67
|
-
|
67
|
+
|
68
|
+
event_type = event_types.first
|
69
|
+
event_type.scheduling_url
|
68
70
|
# => "https://calendly.com/foobar/15min"
|
69
71
|
|
72
|
+
#
|
73
|
+
# get available times for the event type
|
74
|
+
#
|
75
|
+
available_times = event_type.available_times
|
76
|
+
available_times.map(&:start_time)
|
77
|
+
# => [2022-08-04 01:00:00 UTC, 2022-08-04 01:15:00 UTC, 2022-08-04 01:30:00 UTC]
|
78
|
+
|
79
|
+
# you can specify the date range
|
80
|
+
event_type.available_times(start_time: "2022-08-04T10:30:00Z", end_time: "2022-08-05T10:30:00Z")
|
81
|
+
|
70
82
|
#
|
71
83
|
# get scheduled events
|
72
84
|
#
|
data/calendly.gemspec
CHANGED
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_runtime_dependency 'faraday', '>= 1.0.0', '< 3.0.0'
|
32
32
|
spec.add_runtime_dependency 'oauth2', '~> 1.4', '>= 1.4.4'
|
33
33
|
|
34
|
+
spec.add_development_dependency 'activesupport'
|
34
35
|
spec.add_development_dependency 'bundler'
|
35
36
|
spec.add_development_dependency 'codecov'
|
36
37
|
spec.add_development_dependency 'minitest'
|
data/lib/calendly/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'time'
|
3
4
|
require 'oauth2'
|
4
5
|
require 'calendly/loggable'
|
5
6
|
|
@@ -159,6 +160,35 @@ module Calendly
|
|
159
160
|
[ev_types, next_page_params(body)]
|
160
161
|
end
|
161
162
|
|
163
|
+
#
|
164
|
+
# Returns a list of available times for an event type within a specified date range.
|
165
|
+
# Date range can be no greater than 1 week (7 days).
|
166
|
+
#
|
167
|
+
# @param [String] event_type_uri The uri associated with the event type.
|
168
|
+
# @param [String] start_time Start time of the requested availability range.
|
169
|
+
# @param [String] end_time End time of the requested availability range.
|
170
|
+
# @return [Array<Calendly::EventTypeAvailableTime>] The set of available times for the event type matching the criteria.
|
171
|
+
# @raise [Calendly::Error] if the event_type_uri arg is empty.
|
172
|
+
# @raise [Calendly::ApiError] if the api returns error code.
|
173
|
+
# @since 0.13.0
|
174
|
+
def event_type_available_times(event_type_uri, start_time: nil, end_time: nil)
|
175
|
+
check_not_empty event_type_uri, 'event_type_uri'
|
176
|
+
|
177
|
+
start_time_buffer = 60 # For working around an invalid request which be caused by specifying a past time
|
178
|
+
max_date_range = 60 * 60 * 24 * 7 # 7 days
|
179
|
+
|
180
|
+
# If start_time is undefined, set it to now.
|
181
|
+
start_time ||= (Time.now + start_time_buffer).utc.iso8601
|
182
|
+
# If end_time is undefined, set it to in the max date range from start_time.
|
183
|
+
end_time ||= (Time.parse(start_time) + max_date_range).utc.iso8601
|
184
|
+
|
185
|
+
params = {event_type: event_type_uri, start_time: start_time, end_time: end_time}
|
186
|
+
body = request :get, 'event_type_available_times', params: params
|
187
|
+
|
188
|
+
items = body[:collection] || []
|
189
|
+
items.map { |item| EventTypeAvailableTime.new item, self }
|
190
|
+
end
|
191
|
+
|
162
192
|
#
|
163
193
|
# Returns a single Event by its URI.
|
164
194
|
#
|
@@ -118,6 +118,20 @@ module Calendly
|
|
118
118
|
client.event_type uuid
|
119
119
|
end
|
120
120
|
|
121
|
+
#
|
122
|
+
# Returns a list of available times for an event type within a specified date range.
|
123
|
+
# Date range can be no greater than 1 week (7 days).
|
124
|
+
#
|
125
|
+
# @param [String] start_time Start time of the requested availability range.
|
126
|
+
# @param [String] end_time End time of the requested availability range.
|
127
|
+
# @return [Array<Calendly::EventTypeAvailableTime>] The set of available times for the event type matching the criteria.
|
128
|
+
# @raise [Calendly::Error] if the uri is empty.
|
129
|
+
# @raise [Calendly::ApiError] if the api returns error code.
|
130
|
+
# @since 0.13.0
|
131
|
+
def available_times(start_time: nil, end_time: nil)
|
132
|
+
client.event_type_available_times uri, start_time: start_time, end_time: end_time
|
133
|
+
end
|
134
|
+
|
121
135
|
#
|
122
136
|
# Create an associated scheduling link.
|
123
137
|
#
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Calendly
|
4
|
+
# An available meeting time slot for the given event type.
|
5
|
+
class EventTypeAvailableTime
|
6
|
+
include ModelUtils
|
7
|
+
TIME_FIELDS = %i[start_time].freeze
|
8
|
+
|
9
|
+
# Indicates that the open time slot is "available".
|
10
|
+
# @return [String]
|
11
|
+
attr_accessor :status
|
12
|
+
|
13
|
+
# Total remaining invitees for this available time.
|
14
|
+
# For Group Event Type, more than one invitee can book in this available time.
|
15
|
+
# For all other Event Types, only one invitee can book in this available time.
|
16
|
+
# @return [Integer]
|
17
|
+
attr_accessor :invitees_remaining
|
18
|
+
|
19
|
+
# The moment the event was scheduled to start in UTC time.
|
20
|
+
# @return [Time]
|
21
|
+
attr_accessor :start_time
|
22
|
+
|
23
|
+
# The URL of the user’s scheduling site where invitees book this event type.
|
24
|
+
# @return [Time]
|
25
|
+
attr_accessor :scheduling_url
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def inspect_attributes
|
30
|
+
super + %i[start_time invitees_remaining]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -42,7 +42,7 @@ module Calendly
|
|
42
42
|
# The URI of the organization that's associated with the routing form.
|
43
43
|
attr_accessor :organization
|
44
44
|
|
45
|
-
# @return [Calendly::RoutingFormQuestion]
|
45
|
+
# @return [Array<Calendly::RoutingFormQuestion>]
|
46
46
|
# An ordered collection of Routing Form non-deleted questions.
|
47
47
|
attr_accessor :questions
|
48
48
|
|
data/lib/calendly/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calendly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenji Koshikawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -50,6 +50,20 @@ dependencies:
|
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 1.4.4
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: activesupport
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: bundler
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +190,7 @@ files:
|
|
176
190
|
- lib/calendly/loggable.rb
|
177
191
|
- lib/calendly/models/event.rb
|
178
192
|
- lib/calendly/models/event_type.rb
|
193
|
+
- lib/calendly/models/event_type_available_type.rb
|
179
194
|
- lib/calendly/models/event_type_custom_question.rb
|
180
195
|
- lib/calendly/models/event_type_profile.rb
|
181
196
|
- lib/calendly/models/guest.rb
|
@@ -209,7 +224,7 @@ metadata:
|
|
209
224
|
homepage_uri: https://github.com/koshilife/calendly-api-ruby-client
|
210
225
|
source_code_uri: https://github.com/koshilife/calendly-api-ruby-client
|
211
226
|
changelog_uri: https://github.com/koshilife/calendly-api-ruby-client/blob/master/CHANGELOG.md
|
212
|
-
documentation_uri: https://www.rubydoc.info/gems/calendly/0.
|
227
|
+
documentation_uri: https://www.rubydoc.info/gems/calendly/0.13.0
|
213
228
|
post_install_message:
|
214
229
|
rdoc_options: []
|
215
230
|
require_paths:
|