cronofy 0.37.4 → 0.37.7
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 +22 -5
- data/cronofy.gemspec +1 -1
- data/lib/cronofy/client.rb +63 -7
- data/lib/cronofy/types.rb +4 -0
- data/lib/cronofy/version.rb +1 -1
- data/spec/lib/cronofy/client_spec.rb +244 -105
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72f9a743962bf3c47bdef28e93c0fd4d7cf5fd66101eec219f028ea90fe6291c
|
4
|
+
data.tar.gz: ec455881ea2d6df1e86896508453dbcc6d89173275d23a1fe92b565ee01e1144
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c00a81c85732364c3b6cc384c9bbdc1f10fbacfa756c09959734abbefbe65f58f9de764a8e019f40ba0ec17f4355fb4900c4a457e0cac2d98a0a8dfc653886fd
|
7
|
+
data.tar.gz: 6529d3936e84d1721b458bfdfd2acb91585ba7b425d49c7b839f2cdce621d7ae1ba9d1896c471aaecdc6e16474c6f7b0002aa09a64b1390684e5601fa64f35c7
|
data/CHANGELOG.md
CHANGED
@@ -1,22 +1,34 @@
|
|
1
|
+
## [0.37.7]
|
2
|
+
|
3
|
+
* Update Gem description
|
4
|
+
|
5
|
+
## [0.37.6]
|
6
|
+
|
7
|
+
* Adds support for disabling and fetching the status of Real-Time Scheduling links [#100]
|
8
|
+
|
9
|
+
## [0.37.5]
|
10
|
+
|
11
|
+
* Support `query_periods` as well as the original `available_periods` for Real-Time Scheduling and Real-Time Sequencing [#99]
|
12
|
+
|
1
13
|
## [0.37.4]
|
2
14
|
|
3
|
-
* Support client_secret only clients being able to authorize `#availability` calls. [#97]
|
15
|
+
* Support client_secret only clients being able to authorize `#availability` calls. [#97]
|
4
16
|
|
5
17
|
## [0.37.3]
|
6
18
|
|
7
|
-
* Support `hmac_valid` as well as the original `hmac_match` for Client to verify a HMAC from a push notification using the client's secret.[#95]
|
19
|
+
* Support `hmac_valid` as well as the original `hmac_match` for Client to verify a HMAC from a push notification using the client's secret.[#95]
|
8
20
|
|
9
21
|
## [0.37.2]
|
10
22
|
|
11
|
-
* Support `query_periods` as well as the original `available_periods` for Availability Query and Sequenced Availability [#91]
|
23
|
+
* Support `query_periods` as well as the original `available_periods` for Availability Query and Sequenced Availability [#91]
|
12
24
|
|
13
25
|
## [0.37.1]
|
14
26
|
|
15
|
-
* Rename `data_centre` to `data_centre` (with aliases for backwards compatibility) [#90]
|
27
|
+
* Rename `data_centre` to `data_centre` (with aliases for backwards compatibility) [#90]
|
16
28
|
|
17
29
|
## [0.37.0]
|
18
30
|
|
19
|
-
* Add `revoke_by_token` and `revoke_by_sub` to the Client [#86]
|
31
|
+
* Add `revoke_by_token` and `revoke_by_sub` to the Client [#86]
|
20
32
|
|
21
33
|
## [0.36.1]
|
22
34
|
|
@@ -197,6 +209,9 @@
|
|
197
209
|
[0.37.2]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.2
|
198
210
|
[0.37.3]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.3
|
199
211
|
[0.37.4]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.4
|
212
|
+
[0.37.5]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.5
|
213
|
+
[0.37.6]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.6
|
214
|
+
[0.37.7]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.7
|
200
215
|
|
201
216
|
[#13]: https://github.com/cronofy/cronofy-ruby/pull/13
|
202
217
|
[#16]: https://github.com/cronofy/cronofy-ruby/pull/16
|
@@ -243,3 +258,5 @@
|
|
243
258
|
[#91]: https://github.com/cronofy/cronofy-ruby/pull/91
|
244
259
|
[#95]: https://github.com/cronofy/cronofy-ruby/pull/95
|
245
260
|
[#97]: https://github.com/cronofy/cronofy-ruby/pull/97
|
261
|
+
[#99]: https://github.com/cronofy/cronofy-ruby/pull/99
|
262
|
+
[#100]: https://github.com/cronofy/cronofy-ruby/pull/100
|
data/cronofy.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.authors = ["Sergii Paryzhskyi", "Garry Shutler"]
|
7
7
|
spec.email = ["parizhskiy@gmail.com", "garry@cronofy.com"]
|
8
8
|
spec.summary = %q{Cronofy - the scheduling platform for business}
|
9
|
-
spec.description = %q{
|
9
|
+
spec.description = %q{SDK for Cronofy - the Scheduling Platform for Business}
|
10
10
|
spec.homepage = "https://github.com/cronofy/cronofy-ruby"
|
11
11
|
spec.license = "MIT"
|
12
12
|
|
data/lib/cronofy/client.rb
CHANGED
@@ -1033,7 +1033,7 @@ module Cronofy
|
|
1033
1033
|
# call
|
1034
1034
|
# :required_duration - A hash stating the length of time the event will
|
1035
1035
|
# last for
|
1036
|
-
# :
|
1036
|
+
# :query_periods - A hash stating the available periods for the event
|
1037
1037
|
# :start_interval - An Integer representing the start interval
|
1038
1038
|
# of minutes for the availability query.
|
1039
1039
|
# :buffer - An Hash containing the buffer to apply to
|
@@ -1069,7 +1069,7 @@ module Cronofy
|
|
1069
1069
|
# }
|
1070
1070
|
# ],
|
1071
1071
|
# required_duration: { minutes: 60 },
|
1072
|
-
#
|
1072
|
+
# query_periods: [{
|
1073
1073
|
# start: Time.utc(2017, 1, 1, 9, 00),
|
1074
1074
|
# end: Time.utc(2017, 1, 1, 17, 00),
|
1075
1075
|
# }]
|
@@ -1110,13 +1110,66 @@ module Cronofy
|
|
1110
1110
|
end
|
1111
1111
|
end
|
1112
1112
|
|
1113
|
-
translate_available_periods(availability[:available_periods])
|
1113
|
+
translate_available_periods(availability[:query_periods] || availability[:available_periods])
|
1114
1114
|
body[:availability] = availability
|
1115
1115
|
|
1116
1116
|
response = raw_post("/v1/real_time_scheduling", body)
|
1117
1117
|
parse_json(AddToCalendarResponse, nil , response)
|
1118
1118
|
end
|
1119
1119
|
|
1120
|
+
# Public: Gets the status of a Real-Time Scheduling link.
|
1121
|
+
#
|
1122
|
+
# Provide one of the following arguments to identify the link:
|
1123
|
+
# id - A String uniquely identifying the link, returned on initial
|
1124
|
+
# creation
|
1125
|
+
# token - The token portion of the link's URL
|
1126
|
+
#
|
1127
|
+
# See https://docs.cronofy.com/developers/api/scheduling/real-time-scheduling/status/ for reference.
|
1128
|
+
#
|
1129
|
+
# Returns a RealTimeSchedulingStatus.
|
1130
|
+
#
|
1131
|
+
# Raises ArgumentError if neither 'id' nor 'token' arguments are passed.
|
1132
|
+
# Raises Cronofy::CredentialsMissingError if no credentials available.
|
1133
|
+
# Raises Cronofy::TooManyRequestsError if the request exceeds the rate
|
1134
|
+
# limits for the application.
|
1135
|
+
def get_real_time_scheduling_status(args = {})
|
1136
|
+
if args[:token]
|
1137
|
+
url = "/v1/real_time_scheduling?token=#{args[:token]}"
|
1138
|
+
elsif args[:id]
|
1139
|
+
url = "/v1/real_time_scheduling/#{args[:id]}"
|
1140
|
+
else
|
1141
|
+
raise ArgumentError.new("Must pass either token or id argument")
|
1142
|
+
end
|
1143
|
+
|
1144
|
+
response = wrapped_request { api_key!.get(url) }
|
1145
|
+
parse_json(RealTimeSchedulingStatus, 'real_time_scheduling' , response)
|
1146
|
+
end
|
1147
|
+
|
1148
|
+
# Public: Disables a Real-Time Scheduling link.
|
1149
|
+
#
|
1150
|
+
# id - A String uniquely identifying the link, returned
|
1151
|
+
# on initial creation
|
1152
|
+
# display_message - A message to display to visitors of the disabled link
|
1153
|
+
#
|
1154
|
+
# See https://docs.cronofy.com/developers/api/scheduling/real-time-scheduling/disable/ for reference.
|
1155
|
+
#
|
1156
|
+
# Returns a RealTimeSchedulingStatus.
|
1157
|
+
#
|
1158
|
+
# Raises ArgumentError if no 'id' argument is passed.
|
1159
|
+
# Raises Cronofy::CredentialsMissingError if no credentials available.
|
1160
|
+
# Raises Cronofy::InvalidRequestError if the request contains invalid
|
1161
|
+
# parameters.
|
1162
|
+
# Raises Cronofy::TooManyRequestsError if the request exceeds the rate
|
1163
|
+
# limits for the application.
|
1164
|
+
def disable_real_time_scheduling(args = {})
|
1165
|
+
id = args.delete(:id)
|
1166
|
+
|
1167
|
+
raise ArgumentError.new('id argument is required') unless id
|
1168
|
+
|
1169
|
+
response = wrapped_request { api_key!.post("/v1/real_time_scheduling/#{id}/disable", json_request_args(args)) }
|
1170
|
+
parse_json(RealTimeSchedulingStatus, 'real_time_scheduling' , response)
|
1171
|
+
end
|
1172
|
+
|
1120
1173
|
# Public: Generates an real time sequencing link to start the OAuth process with
|
1121
1174
|
# an event to be automatically upserted
|
1122
1175
|
#
|
@@ -1176,7 +1229,7 @@ module Cronofy
|
|
1176
1229
|
# an array of invitees to invite to or reject from
|
1177
1230
|
# the event. Invitees are represented by a hash of
|
1178
1231
|
# :email and :display_name (optional).
|
1179
|
-
# :
|
1232
|
+
# :query_periods - A hash stating the query periods for the event
|
1180
1233
|
# target_calendars - An array of hashes stating into which calendars to insert the created
|
1181
1234
|
# event
|
1182
1235
|
# Raises Cronofy::CredentialsMissingError if no credentials available.
|
@@ -1194,7 +1247,8 @@ module Cronofy
|
|
1194
1247
|
|
1195
1248
|
if availability = args[:availability]
|
1196
1249
|
availability[:sequence] = map_availability_sequence(availability[:sequence])
|
1197
|
-
|
1250
|
+
periods = availability[:query_periods] || availability[:available_periods]
|
1251
|
+
translate_available_periods(periods) if periods
|
1198
1252
|
end
|
1199
1253
|
|
1200
1254
|
body[:availability] = availability
|
@@ -1748,8 +1802,10 @@ module Cronofy
|
|
1748
1802
|
hash[:required_duration] = map_availability_required_duration(value)
|
1749
1803
|
end
|
1750
1804
|
|
1751
|
-
|
1752
|
-
|
1805
|
+
periods = sequence_item[:query_periods] || sequence_item[:available_periods]
|
1806
|
+
|
1807
|
+
if periods
|
1808
|
+
translate_available_periods(periods)
|
1753
1809
|
end
|
1754
1810
|
|
1755
1811
|
if value = sequence_item[:start_interval]
|
data/lib/cronofy/types.rb
CHANGED
data/lib/cronofy/version.rb
CHANGED
@@ -2190,25 +2190,8 @@ describe Cronofy::Client do
|
|
2190
2190
|
end
|
2191
2191
|
|
2192
2192
|
describe "Real time scheduling" do
|
2193
|
-
let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling" }
|
2194
|
-
let(:url) { URI("https://example.com") }
|
2195
|
-
let(:method) { :post }
|
2196
|
-
|
2197
|
-
let(:request_headers) do
|
2198
|
-
{
|
2199
|
-
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
2200
|
-
"Content-Type" => "application/json; charset=utf-8",
|
2201
|
-
}
|
2202
|
-
end
|
2203
|
-
|
2204
|
-
let(:location) { { :description => "Board room" } }
|
2205
|
-
let(:transparency) { nil }
|
2206
2193
|
let(:client_id) { 'example_id' }
|
2207
2194
|
let(:client_secret) { 'example_secret' }
|
2208
|
-
let(:scope) { 'read_events delete_events' }
|
2209
|
-
let(:state) { 'example_state' }
|
2210
|
-
let(:redirect_uri) { 'http://example.com/redirect' }
|
2211
|
-
|
2212
2195
|
let(:client) do
|
2213
2196
|
Cronofy::Client.new(
|
2214
2197
|
client_id: client_id,
|
@@ -2216,6 +2199,9 @@ describe Cronofy::Client do
|
|
2216
2199
|
)
|
2217
2200
|
end
|
2218
2201
|
|
2202
|
+
let(:url) { URI("https://example.com") }
|
2203
|
+
let(:location) { { :description => "Board room" } }
|
2204
|
+
let(:transparency) { nil }
|
2219
2205
|
let(:event) do
|
2220
2206
|
{
|
2221
2207
|
:event_id => "qTtZdczOccgaPncGJaCiLg",
|
@@ -2232,115 +2218,253 @@ describe Cronofy::Client do
|
|
2232
2218
|
}
|
2233
2219
|
end
|
2234
2220
|
|
2235
|
-
let(:
|
2221
|
+
let(:real_time_scheduling_status_response) do
|
2236
2222
|
{
|
2237
|
-
|
2238
|
-
|
2239
|
-
|
2223
|
+
real_time_scheduling: {
|
2224
|
+
real_time_scheduling_id: 'example_id',
|
2225
|
+
url: 'https://app.cronofy.com/real_time_scheduling/example_token',
|
2226
|
+
event: event,
|
2227
|
+
status: 'disabled',
|
2228
|
+
}
|
2240
2229
|
}
|
2241
2230
|
end
|
2242
2231
|
|
2243
|
-
|
2244
|
-
|
2232
|
+
describe "#real_time_scheduling" do
|
2233
|
+
let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling" }
|
2234
|
+
|
2235
|
+
let(:method) { :post }
|
2236
|
+
|
2237
|
+
let(:request_headers) do
|
2245
2238
|
{
|
2246
|
-
|
2247
|
-
|
2239
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
2240
|
+
"Content-Type" => "application/json; charset=utf-8",
|
2248
2241
|
}
|
2249
|
-
|
2250
|
-
end
|
2242
|
+
end
|
2251
2243
|
|
2252
|
-
|
2253
|
-
{
|
2254
|
-
|
2244
|
+
let(:scope) { 'read_events delete_events' }
|
2245
|
+
let(:state) { 'example_state' }
|
2246
|
+
let(:redirect_uri) { 'http://example.com/redirect' }
|
2247
|
+
|
2248
|
+
let(:oauth_body) do
|
2249
|
+
{
|
2250
|
+
scope: scope,
|
2251
|
+
redirect_uri: redirect_uri,
|
2252
|
+
state: state,
|
2253
|
+
}
|
2254
|
+
end
|
2255
|
+
|
2256
|
+
let(:target_calendars) do
|
2257
|
+
[
|
2255
2258
|
{
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
|
2260
|
-
|
2259
|
+
sub: "acc_567236000909002",
|
2260
|
+
calendar_id: "cal_n23kjnwrw2_jsdfjksn234",
|
2261
|
+
}
|
2262
|
+
]
|
2263
|
+
end
|
2264
|
+
|
2265
|
+
let(:availability) do
|
2266
|
+
{
|
2267
|
+
participants: [
|
2268
|
+
{
|
2269
|
+
members: [{
|
2270
|
+
sub: "acc_567236000909002",
|
2271
|
+
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
|
2272
|
+
}],
|
2273
|
+
required: 'all'
|
2274
|
+
}
|
2275
|
+
],
|
2276
|
+
required_duration: { minutes: 60 },
|
2277
|
+
available_periods: [{
|
2278
|
+
start: Time.utc(2017, 1, 1, 9, 00),
|
2279
|
+
end: Time.utc(2017, 1, 1, 17, 00),
|
2280
|
+
}],
|
2281
|
+
start_interval: { minutes: 60 },
|
2282
|
+
buffer: {
|
2283
|
+
before: { minutes: 30 },
|
2284
|
+
after: { minutes: 45 },
|
2261
2285
|
}
|
2262
|
-
],
|
2263
|
-
required_duration: { minutes: 60 },
|
2264
|
-
available_periods: [{
|
2265
|
-
start: Time.utc(2017, 1, 1, 9, 00),
|
2266
|
-
end: Time.utc(2017, 1, 1, 17, 00),
|
2267
|
-
}],
|
2268
|
-
start_interval: { minutes: 60 },
|
2269
|
-
buffer: {
|
2270
|
-
before: { minutes: 30 },
|
2271
|
-
after: { minutes: 45 },
|
2272
2286
|
}
|
2273
|
-
|
2287
|
+
end
|
2288
|
+
|
2289
|
+
let(:mapped_availability) do
|
2290
|
+
{
|
2291
|
+
participants: [
|
2292
|
+
{
|
2293
|
+
members: [{
|
2294
|
+
sub: "acc_567236000909002",
|
2295
|
+
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
|
2296
|
+
}],
|
2297
|
+
required: 'all'
|
2298
|
+
}
|
2299
|
+
],
|
2300
|
+
required_duration: { minutes: 60 },
|
2301
|
+
start_interval: { minutes: 60 },
|
2302
|
+
buffer: {
|
2303
|
+
before: { minutes: 30 },
|
2304
|
+
after: { minutes: 45 },
|
2305
|
+
},
|
2306
|
+
available_periods: [{
|
2307
|
+
start: "2017-01-01T09:00:00Z",
|
2308
|
+
end: "2017-01-01T17:00:00Z",
|
2309
|
+
}]
|
2310
|
+
}
|
2311
|
+
end
|
2312
|
+
|
2313
|
+
let(:args) do
|
2314
|
+
{
|
2315
|
+
oauth: oauth_body,
|
2316
|
+
event: event,
|
2317
|
+
target_calendars: target_calendars,
|
2318
|
+
availability: availability,
|
2319
|
+
}
|
2320
|
+
end
|
2321
|
+
|
2322
|
+
let(:request_body) do
|
2323
|
+
{
|
2324
|
+
client_id: client_id,
|
2325
|
+
client_secret: client_secret,
|
2326
|
+
oauth: oauth_body,
|
2327
|
+
event: {
|
2328
|
+
:event_id => "qTtZdczOccgaPncGJaCiLg",
|
2329
|
+
:summary => "Board meeting",
|
2330
|
+
:description => "Discuss plans for the next quarter.",
|
2331
|
+
:url => url.to_s,
|
2332
|
+
:location => location,
|
2333
|
+
:transparency => transparency,
|
2334
|
+
:reminders => [
|
2335
|
+
{ :minutes => 60 },
|
2336
|
+
{ :minutes => 0 },
|
2337
|
+
{ :minutes => 10 },
|
2338
|
+
],
|
2339
|
+
},
|
2340
|
+
target_calendars: target_calendars,
|
2341
|
+
availability: mapped_availability,
|
2342
|
+
}
|
2343
|
+
end
|
2344
|
+
let(:correct_response_code) { 202 }
|
2345
|
+
let(:correct_response_body) do
|
2346
|
+
{
|
2347
|
+
oauth_url: "http://www.example.com/oauth?token=example"
|
2348
|
+
}
|
2349
|
+
end
|
2350
|
+
|
2351
|
+
subject { client.real_time_scheduling(args) }
|
2352
|
+
|
2353
|
+
context 'when start/end are Times' do
|
2354
|
+
it_behaves_like 'a Cronofy request'
|
2355
|
+
end
|
2356
|
+
|
2357
|
+
context 'when passing query periods' do
|
2358
|
+
it_behaves_like 'a Cronofy request'
|
2359
|
+
|
2360
|
+
before do
|
2361
|
+
availability[:query_periods] = availability.delete(:available_periods)
|
2362
|
+
mapped_availability[:query_periods] = mapped_availability.delete(:available_periods)
|
2363
|
+
end
|
2364
|
+
end
|
2274
2365
|
end
|
2275
2366
|
|
2276
|
-
|
2277
|
-
{
|
2278
|
-
|
2367
|
+
describe "#get_real_time_scheduling_status" do
|
2368
|
+
let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling" }
|
2369
|
+
let(:method) { :get }
|
2370
|
+
let(:url) { "https://example.com" }
|
2371
|
+
let(:request_headers) do
|
2372
|
+
{
|
2373
|
+
"Authorization" => "Bearer #{client_secret}",
|
2374
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
2375
|
+
"Accept" => "*/*",
|
2376
|
+
"Accept-Encoding" => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3",
|
2377
|
+
}
|
2378
|
+
end
|
2379
|
+
let(:correct_response_code) { 200 }
|
2380
|
+
let(:correct_response_body) { real_time_scheduling_status_response }
|
2381
|
+
let(:correct_mapped_result) do
|
2382
|
+
Cronofy::RealTimeSchedulingStatus.new(correct_response_body[:real_time_scheduling])
|
2383
|
+
end
|
2384
|
+
|
2385
|
+
subject { client.get_real_time_scheduling_status(args) }
|
2386
|
+
|
2387
|
+
context 'when passing id' do
|
2388
|
+
let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling/example_id" }
|
2389
|
+
|
2390
|
+
let(:args) do
|
2279
2391
|
{
|
2280
|
-
|
2281
|
-
sub: "acc_567236000909002",
|
2282
|
-
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
|
2283
|
-
}],
|
2284
|
-
required: 'all'
|
2392
|
+
id: 'example_id'
|
2285
2393
|
}
|
2286
|
-
|
2287
|
-
required_duration: { minutes: 60 },
|
2288
|
-
start_interval: { minutes: 60 },
|
2289
|
-
buffer: {
|
2290
|
-
before: { minutes: 30 },
|
2291
|
-
after: { minutes: 45 },
|
2292
|
-
},
|
2293
|
-
available_periods: [{
|
2294
|
-
start: "2017-01-01T09:00:00Z",
|
2295
|
-
end: "2017-01-01T17:00:00Z",
|
2296
|
-
}]
|
2297
|
-
}
|
2298
|
-
end
|
2394
|
+
end
|
2299
2395
|
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
event: event,
|
2304
|
-
target_calendars: target_calendars,
|
2305
|
-
availability: availability,
|
2306
|
-
}
|
2307
|
-
end
|
2396
|
+
it_behaves_like 'a Cronofy request'
|
2397
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
2398
|
+
end
|
2308
2399
|
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2316
|
-
|
2317
|
-
|
2318
|
-
|
2319
|
-
|
2320
|
-
|
2321
|
-
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2327
|
-
target_calendars: target_calendars,
|
2328
|
-
availability: mapped_availability,
|
2329
|
-
}
|
2330
|
-
end
|
2331
|
-
let(:correct_response_code) { 202 }
|
2332
|
-
let(:correct_response_body) do
|
2333
|
-
{
|
2334
|
-
oauth_url: "http://www.example.com/oauth?token=example"
|
2335
|
-
}
|
2400
|
+
context 'when passing token' do
|
2401
|
+
let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling?token=example_token" }
|
2402
|
+
let(:args) do
|
2403
|
+
{
|
2404
|
+
token: 'example_token'
|
2405
|
+
}
|
2406
|
+
end
|
2407
|
+
|
2408
|
+
it_behaves_like 'a Cronofy request'
|
2409
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
2410
|
+
end
|
2411
|
+
|
2412
|
+
context 'when passing neither id nor token' do
|
2413
|
+
let(:args) { Hash.new }
|
2414
|
+
it 'raises an ArgumentError' do
|
2415
|
+
expect { subject }.to raise_error(ArgumentError)
|
2416
|
+
end
|
2417
|
+
end
|
2336
2418
|
end
|
2337
2419
|
|
2338
|
-
|
2420
|
+
describe "#disable_real_time_scheduling" do
|
2421
|
+
let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling/example_id/disable" }
|
2422
|
+
let(:url) { "https://example.com" }
|
2423
|
+
let(:method) { :post }
|
2424
|
+
let(:request_headers) do
|
2425
|
+
{
|
2426
|
+
"Authorization" => "Bearer #{client_secret}",
|
2427
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
2428
|
+
"Content-Type" => "application/json; charset=utf-8",
|
2429
|
+
}
|
2430
|
+
end
|
2431
|
+
|
2432
|
+
let(:args) do
|
2433
|
+
{
|
2434
|
+
id: 'example_id',
|
2435
|
+
display_message: 'example message'
|
2436
|
+
}
|
2437
|
+
end
|
2438
|
+
|
2439
|
+
let(:request_body) do
|
2440
|
+
{
|
2441
|
+
display_message: 'example message'
|
2442
|
+
}
|
2443
|
+
end
|
2444
|
+
|
2445
|
+
let(:correct_response_code) { 200 }
|
2446
|
+
let(:correct_response_body) { real_time_scheduling_status_response }
|
2447
|
+
let(:correct_mapped_result) do
|
2448
|
+
Cronofy::RealTimeSchedulingStatus.new(correct_response_body[:real_time_scheduling])
|
2449
|
+
end
|
2450
|
+
|
2451
|
+
subject { client.disable_real_time_scheduling(args) }
|
2339
2452
|
|
2340
|
-
context 'when start/end are Times' do
|
2341
2453
|
it_behaves_like 'a Cronofy request'
|
2342
|
-
|
2454
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
2343
2455
|
|
2456
|
+
context 'when omitting id argument' do
|
2457
|
+
let(:args) do
|
2458
|
+
{
|
2459
|
+
display_message: 'example message'
|
2460
|
+
}
|
2461
|
+
end
|
2462
|
+
|
2463
|
+
it 'raises an ArgumentError' do
|
2464
|
+
expect { subject }.to raise_error(ArgumentError)
|
2465
|
+
end
|
2466
|
+
end
|
2467
|
+
end
|
2344
2468
|
end
|
2345
2469
|
|
2346
2470
|
describe "Real time sequencing" do
|
@@ -2529,6 +2653,21 @@ describe Cronofy::Client do
|
|
2529
2653
|
it_behaves_like 'a Cronofy request'
|
2530
2654
|
end
|
2531
2655
|
|
2656
|
+
context 'when passing query periods' do
|
2657
|
+
it_behaves_like 'a Cronofy request'
|
2658
|
+
|
2659
|
+
before do
|
2660
|
+
availability[:query_periods] = availability.delete(:available_periods)
|
2661
|
+
availability[:sequence].each do |sequence|
|
2662
|
+
sequence[:query_periods] = sequence.delete(:available_periods)
|
2663
|
+
end
|
2664
|
+
|
2665
|
+
mapped_availability[:query_periods] = mapped_availability.delete(:available_periods)
|
2666
|
+
mapped_availability[:sequence].each do |sequence|
|
2667
|
+
sequence[:query_periods] = sequence.delete(:available_periods)
|
2668
|
+
end
|
2669
|
+
end
|
2670
|
+
end
|
2532
2671
|
end
|
2533
2672
|
|
2534
2673
|
describe "specifying data_centre" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cronofy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.37.
|
4
|
+
version: 0.37.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergii Paryzhskyi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-05-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
@@ -107,7 +107,7 @@ dependencies:
|
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: 3.9.1
|
110
|
-
description:
|
110
|
+
description: SDK for Cronofy - the Scheduling Platform for Business
|
111
111
|
email:
|
112
112
|
- parizhskiy@gmail.com
|
113
113
|
- garry@cronofy.com
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
|
-
rubygems_version: 3.
|
159
|
+
rubygems_version: 3.3.11
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: Cronofy - the scheduling platform for business
|