cronofy 0.37.7 → 0.41.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +8 -8
- data/cronofy.gemspec +1 -1
- data/lib/cronofy/api_key.rb +1 -0
- data/lib/cronofy/auth.rb +3 -3
- data/lib/cronofy/client.rb +81 -33
- data/lib/cronofy/types.rb +3 -0
- data/lib/cronofy/version.rb +1 -1
- data/spec/lib/cronofy/client_spec.rb +126 -3
- data/spec/spec_helper.rb +1 -0
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70859d7df67d1abfb03702825b4a304a8e2426f7073d9055343559cb9e41e469
|
4
|
+
data.tar.gz: 0f778ceec16c9a4fd9f25a9cc50f6f7957f643aa8e1980e35d7690483f8cdea5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b15136e06190b874efc0d32c1cb4efa16bf093c0473faf1ad2fb59f66511ef44069cad5199f1f63e9d05e25e74c6376cd4534c380073ec59b55ddc8ef7f6b7c
|
7
|
+
data.tar.gz: 65256a5f09863beb7d620746e6d5fb9d79242c9d374adba3161c1439a9bb93ebf96cbde2b65c72a81876d03a7abec218ea60cb43e50506a47f9a98a112da39c1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
## [0.41.0]
|
2
|
+
|
3
|
+
* Adds support for the query_slots parameter [#111]
|
4
|
+
|
5
|
+
## [0.40.0]
|
6
|
+
|
7
|
+
* Update version of [OAuth2](https://rubygems.org/gems/oauth2) required [#102]
|
8
|
+
|
9
|
+
## [0.39.0]
|
10
|
+
|
11
|
+
* Add conferencing services authorization
|
12
|
+
|
13
|
+
## [0.38.0]
|
14
|
+
|
15
|
+
* Add state parameter to Service Account authorizations [#104]
|
16
|
+
|
1
17
|
## [0.37.7]
|
2
18
|
|
3
19
|
* Update Gem description
|
@@ -212,6 +228,10 @@
|
|
212
228
|
[0.37.5]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.5
|
213
229
|
[0.37.6]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.6
|
214
230
|
[0.37.7]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.7
|
231
|
+
[0.38.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/0.38.0
|
232
|
+
[0.39.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/0.39.0
|
233
|
+
[0.40.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.40.0
|
234
|
+
[0.41.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.41.0
|
215
235
|
|
216
236
|
[#13]: https://github.com/cronofy/cronofy-ruby/pull/13
|
217
237
|
[#16]: https://github.com/cronofy/cronofy-ruby/pull/16
|
@@ -260,3 +280,7 @@
|
|
260
280
|
[#97]: https://github.com/cronofy/cronofy-ruby/pull/97
|
261
281
|
[#99]: https://github.com/cronofy/cronofy-ruby/pull/99
|
262
282
|
[#100]: https://github.com/cronofy/cronofy-ruby/pull/100
|
283
|
+
[#102]: https://github.com/cronofy/cronofy-ruby/pull/102
|
284
|
+
[#104]: https://github.com/cronofy/cronofy-ruby/pull/104
|
285
|
+
[#108]: https://github.com/cronofy/cronofy-ruby/pull/108
|
286
|
+
[#111]: https://github.com/cronofy/cronofy-ruby/pull/111
|
data/README.md
CHANGED
@@ -45,8 +45,8 @@ When using a [personal access token](https://app.cronofy.com/oauth/applications/
|
|
45
45
|
you only need to provide the `access_token` argument.
|
46
46
|
|
47
47
|
When working against your own OAuth application you will need to provide the
|
48
|
-
`client_id` and `client_secret` when [going through the authorization process](https://
|
49
|
-
for a user, and when [refreshing an access token](https://
|
48
|
+
`client_id` and `client_secret` when [going through the authorization process](https://docs.cronofy.com/developers/api/authorization/request-authorization/)
|
49
|
+
for a user, and when [refreshing an access token](https://docs.cronofy.com/developers/api/authorization/refresh-token/).
|
50
50
|
|
51
51
|
If `client_id` and `client_secret` are not specified explicitly the values from
|
52
52
|
the environment variables `CRONOFY_CLIENT_ID` and `CRONOFY_CLIENT_SECRET` will
|
@@ -56,7 +56,7 @@ be used if present.
|
|
56
56
|
|
57
57
|
## Authorization
|
58
58
|
|
59
|
-
[API documentation](https://
|
59
|
+
[API documentation](https://docs.cronofy.com/developers/api/authorization/request-authorization/)
|
60
60
|
|
61
61
|
Generate a link for a user to grant access to their calendars:
|
62
62
|
|
@@ -83,7 +83,7 @@ to perform this process.
|
|
83
83
|
|
84
84
|
## List calendars
|
85
85
|
|
86
|
-
[API documentation](https://
|
86
|
+
[API documentation](https://docs.cronofy.com/developers/api/calendars/list-calendars/)
|
87
87
|
|
88
88
|
Get a list of all the user's calendars:
|
89
89
|
|
@@ -93,7 +93,7 @@ calendars = cronofy.list_calendars
|
|
93
93
|
|
94
94
|
## Read events
|
95
95
|
|
96
|
-
[API documentation](https://
|
96
|
+
[API documentation](https://docs.cronofy.com/developers/api/events/read-events/)
|
97
97
|
|
98
98
|
Get a list of events from the user's calendars:
|
99
99
|
|
@@ -105,7 +105,7 @@ Note that the gem handles iterating through the pages on your behalf.
|
|
105
105
|
|
106
106
|
## Create or update events
|
107
107
|
|
108
|
-
[API documentation](https://
|
108
|
+
[API documentation](https://docs.cronofy.com/developers/api/events/upsert-event/)
|
109
109
|
|
110
110
|
To create/update an event in the user's calendar:
|
111
111
|
|
@@ -126,7 +126,7 @@ cronofy.upsert_event(calendar_id, event_data)
|
|
126
126
|
|
127
127
|
## Delete events
|
128
128
|
|
129
|
-
[API documentation](https://
|
129
|
+
[API documentation](https://docs.cronofy.com/developers/api/events/delete-event/)
|
130
130
|
|
131
131
|
To delete an event from user's calendar:
|
132
132
|
|
@@ -145,6 +145,6 @@ If you would like to request a feature is added by our team then please let us k
|
|
145
145
|
|
146
146
|
## Links
|
147
147
|
|
148
|
-
* [API documentation](https://
|
148
|
+
* [API documentation](https://docs.cronofy.com/developers/api/)
|
149
149
|
* [API mailing list](https://groups.google.com/d/forum/cronofy-api)
|
150
150
|
|
data/cronofy.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = Dir['spec/**/*.rb']
|
19
19
|
|
20
20
|
spec.add_runtime_dependency "hashie", ">= 2.1", "< 5"
|
21
|
-
spec.add_runtime_dependency "oauth2", "
|
21
|
+
spec.add_runtime_dependency "oauth2", ">= 2.0.4"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", ">= 1.6", "< 3"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/cronofy/api_key.rb
CHANGED
data/lib/cronofy/auth.rb
CHANGED
@@ -16,8 +16,8 @@ module Cronofy
|
|
16
16
|
|
17
17
|
@client_credentials_missing = blank?(client_id) || blank?(client_secret)
|
18
18
|
|
19
|
-
@auth_client = OAuth2::Client.new(client_id, client_secret, site: ::Cronofy.app_url(data_center), connection_opts: { headers: { "User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}" } })
|
20
|
-
@api_client = OAuth2::Client.new(client_id, client_secret, site: ::Cronofy.api_url(data_center), connection_opts: { headers: { "User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}" } })
|
19
|
+
@auth_client = OAuth2::Client.new(client_id, client_secret, site: ::Cronofy.app_url(data_center), auth_scheme: :request_body, connection_opts: { headers: { "User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}" } })
|
20
|
+
@api_client = OAuth2::Client.new(client_id, client_secret, site: ::Cronofy.api_url(data_center), auth_scheme: :request_body, connection_opts: { headers: { "User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}" } })
|
21
21
|
|
22
22
|
set_access_token(access_token, refresh_token) if access_token || refresh_token
|
23
23
|
set_api_key(client_secret) if client_secret
|
@@ -35,7 +35,7 @@ module Cronofy
|
|
35
35
|
# :state - Array of states to retain during the OAuth
|
36
36
|
# authorization process (optional).
|
37
37
|
#
|
38
|
-
# See
|
38
|
+
# See https://docs.cronofy.com/developers/api/authorization/request-authorization/ for reference.
|
39
39
|
#
|
40
40
|
# Returns the URL as a String.
|
41
41
|
def user_auth_link(redirect_uri, options = {})
|
data/lib/cronofy/client.rb
CHANGED
@@ -54,7 +54,7 @@ module Cronofy
|
|
54
54
|
# (default: {}):
|
55
55
|
# :color - The color to make the calendar (optional).
|
56
56
|
#
|
57
|
-
# See https://
|
57
|
+
# See https://docs.cronofy.com/developers/api/calendars/create-calendar/ for reference.
|
58
58
|
#
|
59
59
|
# Returns the created Calendar
|
60
60
|
#
|
@@ -77,7 +77,7 @@ module Cronofy
|
|
77
77
|
|
78
78
|
# Public: Lists all the calendars for the account.
|
79
79
|
#
|
80
|
-
# See
|
80
|
+
# See https://docs.cronofy.com/developers/api/calendars/list-calendars/ for reference.
|
81
81
|
#
|
82
82
|
# Returns an Array of Calendars
|
83
83
|
#
|
@@ -148,7 +148,7 @@ module Cronofy
|
|
148
148
|
# long: "0.1234"
|
149
149
|
# })
|
150
150
|
#
|
151
|
-
# See
|
151
|
+
# See https://docs.cronofy.com/developers/api/events/upsert-event/ for reference.
|
152
152
|
#
|
153
153
|
# Returns nothing.
|
154
154
|
#
|
@@ -214,7 +214,7 @@ module Cronofy
|
|
214
214
|
# The first page will be retrieved eagerly so that common errors will happen
|
215
215
|
# inline. However, subsequent pages (if any) will be requested lazily.
|
216
216
|
#
|
217
|
-
# See
|
217
|
+
# See https://docs.cronofy.com/developers/api/events/read-events/ for reference.
|
218
218
|
#
|
219
219
|
# Returns a lazily-evaluated Enumerable of Events
|
220
220
|
#
|
@@ -262,7 +262,7 @@ module Cronofy
|
|
262
262
|
# The first page will be retrieved eagerly so that common errors will happen
|
263
263
|
# inline. However, subsequent pages (if any) will be requested lazily.
|
264
264
|
#
|
265
|
-
# See
|
265
|
+
# See https://docs.cronofy.com/developers/api/events/free-busy/ for reference.
|
266
266
|
#
|
267
267
|
# Returns a lazily-evaluated Enumerable of FreeBusy
|
268
268
|
#
|
@@ -293,7 +293,7 @@ module Cronofy
|
|
293
293
|
# event_id - A String uniquely identifying the event for your application
|
294
294
|
# (note: this is NOT an ID generated by Cronofy).
|
295
295
|
#
|
296
|
-
# See
|
296
|
+
# See https://docs.cronofy.com/developers/api/events/delete-event/ for reference.
|
297
297
|
#
|
298
298
|
# Returns nothing.
|
299
299
|
#
|
@@ -312,6 +312,24 @@ module Cronofy
|
|
312
312
|
nil
|
313
313
|
end
|
314
314
|
|
315
|
+
# Public: Returns an URL where users can authorize access to their conferencing services.
|
316
|
+
#
|
317
|
+
# See https://docs.cronofy.com/developers/api/conferencing-services/authorization/ for reference.
|
318
|
+
#
|
319
|
+
# Returns Cronofy::ConferencingServiceAuthorizationResponse with the generated URL
|
320
|
+
#
|
321
|
+
# Raises Cronofy::BadRequestError if refresh token code is unknown or has
|
322
|
+
# been revoked.
|
323
|
+
# Raises Cronofy::AuthenticationFailureError if the client ID and secret are
|
324
|
+
# not valid.
|
325
|
+
# Raises Cronofy::CredentialsMissingError if no credentials available.
|
326
|
+
def get_conferencing_service_authorizations(redirect_uri)
|
327
|
+
data = { redirect_uri: redirect_uri }
|
328
|
+
|
329
|
+
response = post "/v1/conferencing_service_authorizations", data
|
330
|
+
parse_json(ConferencingServiceAuthorizationResponse, "authorization_request", response)
|
331
|
+
end
|
332
|
+
|
315
333
|
class BatchBuilder
|
316
334
|
include TimeEncoding
|
317
335
|
|
@@ -407,7 +425,7 @@ module Cronofy
|
|
407
425
|
|
408
426
|
# Public: Deletes all events you are managing for the account.
|
409
427
|
#
|
410
|
-
# See https://
|
428
|
+
# See https://docs.cronofy.com/developers/api/events/bulk-delete-events/ for
|
411
429
|
# reference.
|
412
430
|
#
|
413
431
|
# options - The Hash options used to refine the selection (optional):
|
@@ -451,7 +469,7 @@ module Cronofy
|
|
451
469
|
# trigger notifications
|
452
470
|
# (optional).
|
453
471
|
#
|
454
|
-
# See
|
472
|
+
# See https://docs.cronofy.com/developers/api/push-notifications/create-channel/ for reference.
|
455
473
|
#
|
456
474
|
# Returns a Channel.
|
457
475
|
#
|
@@ -502,7 +520,7 @@ module Cronofy
|
|
502
520
|
|
503
521
|
# Public: Lists all the notification channels for the account.
|
504
522
|
#
|
505
|
-
# See
|
523
|
+
# See https://docs.cronofy.com/developers/api/push-notifications/list-channels/ for reference.
|
506
524
|
#
|
507
525
|
# Returns an Array of Channels.
|
508
526
|
#
|
@@ -522,7 +540,7 @@ module Cronofy
|
|
522
540
|
#
|
523
541
|
# channel_id - The String Cronofy ID for the channel to close.
|
524
542
|
#
|
525
|
-
# See
|
543
|
+
# See https://docs.cronofy.com/developers/api/push-notifications/close-channel/ for reference.
|
526
544
|
#
|
527
545
|
# Returns nothing.
|
528
546
|
#
|
@@ -541,7 +559,7 @@ module Cronofy
|
|
541
559
|
|
542
560
|
# Public: Retrieves the details of the account.
|
543
561
|
#
|
544
|
-
# See
|
562
|
+
# See https://docs.cronofy.com/developers/api/identity/account/ for reference.
|
545
563
|
#
|
546
564
|
# Returns an Account.
|
547
565
|
#
|
@@ -559,7 +577,7 @@ module Cronofy
|
|
559
577
|
|
560
578
|
# Public: Lists all the profiles for the account.
|
561
579
|
#
|
562
|
-
# See https://
|
580
|
+
# See https://docs.cronofy.com/developers/api/identity/profile/ for reference.
|
563
581
|
#
|
564
582
|
# Returns an Array of Profiles
|
565
583
|
#
|
@@ -575,7 +593,7 @@ module Cronofy
|
|
575
593
|
|
576
594
|
# Public: Retrieves the userinfo for the account
|
577
595
|
#
|
578
|
-
# See
|
596
|
+
# See https://docs.cronofy.com/developers/api/identity/userinfo/ for
|
579
597
|
# reference.
|
580
598
|
#
|
581
599
|
# Returns an UserInfo.
|
@@ -603,7 +621,7 @@ module Cronofy
|
|
603
621
|
# invite to
|
604
622
|
#
|
605
623
|
#
|
606
|
-
# See
|
624
|
+
# See https://docs.cronofy.com/developers/api/events/delete-event/ for reference.
|
607
625
|
#
|
608
626
|
# Returns nothing.
|
609
627
|
#
|
@@ -641,7 +659,7 @@ module Cronofy
|
|
641
659
|
# longer valid.
|
642
660
|
# Raises Cronofy::TooManyRequestsError if the request exceeds the rate
|
643
661
|
# limits for the application.
|
644
|
-
def authorize_with_service_account(email, scope, callback_url)
|
662
|
+
def authorize_with_service_account(email, scope, callback_url, state)
|
645
663
|
if scope.respond_to?(:join)
|
646
664
|
scope = scope.join(' ')
|
647
665
|
end
|
@@ -649,7 +667,8 @@ module Cronofy
|
|
649
667
|
params = {
|
650
668
|
email: email,
|
651
669
|
scope: scope,
|
652
|
-
callback_url: callback_url
|
670
|
+
callback_url: callback_url,
|
671
|
+
state: state
|
653
672
|
}
|
654
673
|
post("/v1/service_account_authorizations", params)
|
655
674
|
nil
|
@@ -668,7 +687,7 @@ module Cronofy
|
|
668
687
|
# :state - Array of states to retain during the OAuth
|
669
688
|
# authorization process (optional).
|
670
689
|
#
|
671
|
-
# See
|
690
|
+
# See https://docs.cronofy.com/developers/api/authorization/request-authorization/ for reference.
|
672
691
|
#
|
673
692
|
# Returns the URL as a String.
|
674
693
|
def user_auth_link(redirect_url, options = {})
|
@@ -683,7 +702,7 @@ module Cronofy
|
|
683
702
|
# redirect_url - A String specifing the URL the user returned to once they
|
684
703
|
# had completed the authorization steps.
|
685
704
|
#
|
686
|
-
# See
|
705
|
+
# See https://docs.cronofy.com/developers/api/authorization/request-token/ for reference.
|
687
706
|
#
|
688
707
|
# Returns a set of Cronofy::Credentials for the account.
|
689
708
|
#
|
@@ -701,7 +720,7 @@ module Cronofy
|
|
701
720
|
# these usually occur when the access token has expired and needs
|
702
721
|
# refreshing.
|
703
722
|
#
|
704
|
-
# See
|
723
|
+
# See https://docs.cronofy.com/developers/api/authorization/refresh-token/ for reference.
|
705
724
|
#
|
706
725
|
# Returns a set of Cronofy::Credentials for the account.
|
707
726
|
#
|
@@ -716,7 +735,7 @@ module Cronofy
|
|
716
735
|
|
717
736
|
# Public: Obtains access to an application calendar
|
718
737
|
#
|
719
|
-
# See
|
738
|
+
# See https://docs.cronofy.com/developers/api/calendars/application-calendars/ for reference.
|
720
739
|
#
|
721
740
|
# Returns a set of Cronofy::Credentials for the account.
|
722
741
|
#
|
@@ -734,7 +753,7 @@ module Cronofy
|
|
734
753
|
# After making this call the Client will become unusable. You should also
|
735
754
|
# delete the stored credentials used to create this instance.
|
736
755
|
#
|
737
|
-
# See
|
756
|
+
# See https://docs.cronofy.com/developers/api/authorization/revoke/ for
|
738
757
|
# reference.
|
739
758
|
#
|
740
759
|
# Returns nothing.
|
@@ -816,8 +835,10 @@ module Cronofy
|
|
816
835
|
# each must specify a start and end Time.
|
817
836
|
# :start_interval - An Integer representing the start interval
|
818
837
|
# of minutes for the availability query.
|
819
|
-
# :buffer -
|
838
|
+
# :buffer - A Hash containing the buffer to apply to
|
820
839
|
# the availability query.
|
840
|
+
# :query_slots - A Hash containing the query slots to be
|
841
|
+
# used in the availability query.
|
821
842
|
#
|
822
843
|
# Returns an Array of AvailablePeriods.
|
823
844
|
#
|
@@ -842,7 +863,13 @@ module Cronofy
|
|
842
863
|
options[:buffer] = map_availability_buffer(buffer)
|
843
864
|
end
|
844
865
|
|
845
|
-
|
866
|
+
if query_periods = options[:query_periods] || options[:available_periods]
|
867
|
+
translate_available_periods(query_periods)
|
868
|
+
end
|
869
|
+
|
870
|
+
if query_slots = options[:query_slots]
|
871
|
+
translate_query_slots(query_slots)
|
872
|
+
end
|
846
873
|
|
847
874
|
response = availability_post("/v1/availability", options)
|
848
875
|
|
@@ -960,7 +987,7 @@ module Cronofy
|
|
960
987
|
# long: "0.1234"
|
961
988
|
# })
|
962
989
|
#
|
963
|
-
# See
|
990
|
+
# See https://docs.cronofy.com/developers/api/events/upsert-event/ for reference.
|
964
991
|
#
|
965
992
|
# Returns a AddToCalendarResponse.
|
966
993
|
#
|
@@ -1033,7 +1060,9 @@ module Cronofy
|
|
1033
1060
|
# call
|
1034
1061
|
# :required_duration - A hash stating the length of time the event will
|
1035
1062
|
# last for
|
1036
|
-
# :query_periods - A
|
1063
|
+
# :query_periods - A Hash stating the available periods for the event
|
1064
|
+
# :query_slots - A Hash containing the query slots to be
|
1065
|
+
# used in the availability query.
|
1037
1066
|
# :start_interval - An Integer representing the start interval
|
1038
1067
|
# of minutes for the availability query.
|
1039
1068
|
# :buffer - An Hash containing the buffer to apply to
|
@@ -1080,7 +1109,7 @@ module Cronofy
|
|
1080
1109
|
# }]
|
1081
1110
|
# )
|
1082
1111
|
#
|
1083
|
-
# See
|
1112
|
+
# See https://docs.cronofy.com/developers/api/scheduling/real-time-scheduling/ for reference.
|
1084
1113
|
#
|
1085
1114
|
# Returns a AddToCalendarResponse.
|
1086
1115
|
#
|
@@ -1110,7 +1139,14 @@ module Cronofy
|
|
1110
1139
|
end
|
1111
1140
|
end
|
1112
1141
|
|
1113
|
-
|
1142
|
+
if query_periods = availability[:query_periods] || availability[:available_periods]
|
1143
|
+
translate_available_periods(query_periods)
|
1144
|
+
end
|
1145
|
+
|
1146
|
+
if query_slots = availability[:query_slots]
|
1147
|
+
translate_query_slots(query_slots)
|
1148
|
+
end
|
1149
|
+
|
1114
1150
|
body[:availability] = availability
|
1115
1151
|
|
1116
1152
|
response = raw_post("/v1/real_time_scheduling", body)
|
@@ -1259,7 +1295,7 @@ module Cronofy
|
|
1259
1295
|
|
1260
1296
|
# Public: Creates a link_token to allow explicitly linking of an account
|
1261
1297
|
#
|
1262
|
-
# See https://
|
1298
|
+
# See https://docs.cronofy.com/developers/api-alpha/explicit-linking/ for
|
1263
1299
|
# reference.
|
1264
1300
|
#
|
1265
1301
|
# Returns a link token
|
@@ -1276,7 +1312,7 @@ module Cronofy
|
|
1276
1312
|
|
1277
1313
|
# Public: Revokes the authorization to the given profile.
|
1278
1314
|
#
|
1279
|
-
# See https://
|
1315
|
+
# See https://docs.cronofy.com/developers/api/authorization/revoke-profile/ for
|
1280
1316
|
# reference.
|
1281
1317
|
#
|
1282
1318
|
# Returns nothing.
|
@@ -1354,7 +1390,7 @@ module Cronofy
|
|
1354
1390
|
# }
|
1355
1391
|
# )
|
1356
1392
|
#
|
1357
|
-
# See
|
1393
|
+
# See https://docs.cronofy.com/developers/api/smart-invites/create-smart-invite/ for reference.
|
1358
1394
|
#
|
1359
1395
|
# Returns a SmartInviteResponse.
|
1360
1396
|
#
|
@@ -1381,7 +1417,7 @@ module Cronofy
|
|
1381
1417
|
# :email - A String for thee email address you are
|
1382
1418
|
# going to send the Smart Invite to.
|
1383
1419
|
#
|
1384
|
-
# See
|
1420
|
+
# See https://docs.cronofy.com/developers/api/smart-invites/cancel-invite/ for reference.
|
1385
1421
|
#
|
1386
1422
|
# Returns a SmartInviteResponse.
|
1387
1423
|
#
|
@@ -1429,7 +1465,7 @@ module Cronofy
|
|
1429
1465
|
# by Cronofy).
|
1430
1466
|
# recipient_email - The email address for the recipient to get details for.
|
1431
1467
|
#
|
1432
|
-
# See
|
1468
|
+
# See https://docs.cronofy.com/developers/api/smart-invites/invite-status/ for reference.
|
1433
1469
|
#
|
1434
1470
|
# Returns a SmartInviteResponse.
|
1435
1471
|
#
|
@@ -1503,7 +1539,7 @@ module Cronofy
|
|
1503
1539
|
# ]
|
1504
1540
|
# )
|
1505
1541
|
#
|
1506
|
-
# See
|
1542
|
+
# See https://docs.cronofy.com/developers/api/scheduling/availability-rules/ for reference.
|
1507
1543
|
#
|
1508
1544
|
# Returns an AvailabilityRuleResponse.
|
1509
1545
|
#
|
@@ -1698,6 +1734,14 @@ module Cronofy
|
|
1698
1734
|
end
|
1699
1735
|
end
|
1700
1736
|
|
1737
|
+
def translate_query_slots(query_slots)
|
1738
|
+
query_slots.each do |params|
|
1739
|
+
QUERY_SLOTS_TIME_PARAMS.select { |tp| params.key?(tp) }.each do |tp|
|
1740
|
+
params[tp] = to_iso8601(params[tp])
|
1741
|
+
end
|
1742
|
+
end
|
1743
|
+
end
|
1744
|
+
|
1701
1745
|
def map_availability_participants(participants)
|
1702
1746
|
case participants
|
1703
1747
|
when Hash
|
@@ -1828,6 +1872,10 @@ module Cronofy
|
|
1828
1872
|
end
|
1829
1873
|
}.freeze
|
1830
1874
|
|
1875
|
+
QUERY_SLOTS_TIME_PARAMS = %i{
|
1876
|
+
start
|
1877
|
+
}.freeze
|
1878
|
+
|
1831
1879
|
FREE_BUSY_DEFAULT_PARAMS = { tzid: "Etc/UTC" }.freeze
|
1832
1880
|
FREE_BUSY_TIME_PARAMS = %i{
|
1833
1881
|
from
|
data/lib/cronofy/types.rb
CHANGED
data/lib/cronofy/version.rb
CHANGED
@@ -658,14 +658,15 @@ describe Cronofy::Client do
|
|
658
658
|
let(:request_url) { "https://api.cronofy.com/v1/service_account_authorizations" }
|
659
659
|
let(:method) { :post }
|
660
660
|
let(:request_headers) { json_request_headers }
|
661
|
-
let(:request_body) { { email: email, scope: scope.join(' '), callback_url: callback_url } }
|
661
|
+
let(:request_body) { { email: email, scope: scope.join(' '), callback_url: callback_url, state: state } }
|
662
662
|
let(:correct_response_code) { 202 }
|
663
663
|
let(:correct_response_body) { nil }
|
664
664
|
let(:email) { "foo@example.com" }
|
665
665
|
let(:scope) { ['foo', 'bar'] }
|
666
|
-
let(:callback_url) { "
|
666
|
+
let(:callback_url) { "https://example.com/callback" }
|
667
|
+
let(:state) { 'state' }
|
667
668
|
|
668
|
-
subject { client.authorize_with_service_account(email, scope, callback_url) }
|
669
|
+
subject { client.authorize_with_service_account(email, scope, callback_url, state) }
|
669
670
|
|
670
671
|
it_behaves_like 'a Cronofy request'
|
671
672
|
end
|
@@ -1782,6 +1783,51 @@ describe Cronofy::Client do
|
|
1782
1783
|
it_behaves_like 'a Cronofy request with mapped return value'
|
1783
1784
|
end
|
1784
1785
|
|
1786
|
+
context 'when given query_slots instead of available_periods with start interval' do
|
1787
|
+
let(:participants) do
|
1788
|
+
{ members: %w{acc_567236000909002 acc_678347111010113} }
|
1789
|
+
end
|
1790
|
+
|
1791
|
+
let(:required_duration) { 60 }
|
1792
|
+
|
1793
|
+
let(:query_slots) do
|
1794
|
+
[
|
1795
|
+
{ start: Time.parse("2017-01-03T09:00:00Z")},
|
1796
|
+
{ start: Time.parse("2017-01-04T09:00:00Z") },
|
1797
|
+
]
|
1798
|
+
end
|
1799
|
+
|
1800
|
+
let(:request_body) do
|
1801
|
+
{
|
1802
|
+
"participants" => [
|
1803
|
+
{
|
1804
|
+
"members" => [
|
1805
|
+
{ "sub" => "acc_567236000909002" },
|
1806
|
+
{ "sub" => "acc_678347111010113" }
|
1807
|
+
],
|
1808
|
+
"required" => "all"
|
1809
|
+
}
|
1810
|
+
],
|
1811
|
+
"query_slots" => [
|
1812
|
+
{ "start" => "2017-01-03T09:00:00Z" },
|
1813
|
+
{ "start" => "2017-01-04T09:00:00Z" }
|
1814
|
+
],
|
1815
|
+
"required_duration" => { "minutes" => 60 },
|
1816
|
+
}
|
1817
|
+
end
|
1818
|
+
|
1819
|
+
subject do
|
1820
|
+
client.availability(
|
1821
|
+
participants: participants,
|
1822
|
+
required_duration: required_duration,
|
1823
|
+
query_slots: query_slots
|
1824
|
+
)
|
1825
|
+
end
|
1826
|
+
|
1827
|
+
it_behaves_like 'a Cronofy request'
|
1828
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
1829
|
+
end
|
1830
|
+
|
1785
1831
|
context "when trying to auth with only an access_token, as originally implemented" do
|
1786
1832
|
let(:access_token) { "access_token_123"}
|
1787
1833
|
let(:client) { Cronofy::Client.new(access_token: access_token) }
|
@@ -2362,6 +2408,56 @@ describe Cronofy::Client do
|
|
2362
2408
|
mapped_availability[:query_periods] = mapped_availability.delete(:available_periods)
|
2363
2409
|
end
|
2364
2410
|
end
|
2411
|
+
|
2412
|
+
context 'when passing query slots' do
|
2413
|
+
let(:availability) do
|
2414
|
+
{
|
2415
|
+
participants: [
|
2416
|
+
{
|
2417
|
+
members: [{
|
2418
|
+
sub: "acc_567236000909002",
|
2419
|
+
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
|
2420
|
+
}],
|
2421
|
+
required: 'all'
|
2422
|
+
}
|
2423
|
+
],
|
2424
|
+
required_duration: { minutes: 60 },
|
2425
|
+
query_slots: [
|
2426
|
+
{ start: Time.utc(2017, 1, 1, 9, 00) },
|
2427
|
+
{ start: Time.utc(2017, 1, 1, 17, 00) }
|
2428
|
+
],
|
2429
|
+
buffer: {
|
2430
|
+
before: { minutes: 30 },
|
2431
|
+
after: { minutes: 45 },
|
2432
|
+
}
|
2433
|
+
}
|
2434
|
+
end
|
2435
|
+
|
2436
|
+
let(:mapped_availability) do
|
2437
|
+
{
|
2438
|
+
participants: [
|
2439
|
+
{
|
2440
|
+
members: [{
|
2441
|
+
sub: "acc_567236000909002",
|
2442
|
+
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
|
2443
|
+
}],
|
2444
|
+
required: 'all'
|
2445
|
+
}
|
2446
|
+
],
|
2447
|
+
required_duration: { minutes: 60 },
|
2448
|
+
buffer: {
|
2449
|
+
before: { minutes: 30 },
|
2450
|
+
after: { minutes: 45 },
|
2451
|
+
},
|
2452
|
+
query_slots: [
|
2453
|
+
{ start: Time.utc(2017, 1, 1, 9, 00) },
|
2454
|
+
{ start: Time.utc(2017, 1, 1, 17, 00) }
|
2455
|
+
],
|
2456
|
+
}
|
2457
|
+
it_behaves_like 'a Cronofy request'
|
2458
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
2459
|
+
end
|
2460
|
+
end
|
2365
2461
|
end
|
2366
2462
|
|
2367
2463
|
describe "#get_real_time_scheduling_status" do
|
@@ -3709,4 +3805,31 @@ describe Cronofy::Client do
|
|
3709
3805
|
it_behaves_like 'a Cronofy request'
|
3710
3806
|
it_behaves_like 'a Cronofy request with mapped return value'
|
3711
3807
|
end
|
3808
|
+
|
3809
|
+
describe 'Conferencing Services' do
|
3810
|
+
describe '#get_conferencing_service_authorizations' do
|
3811
|
+
let(:redirect_uri) { "http://example.com/not_found" }
|
3812
|
+
let(:request_url) { "https://api.cronofy.com/v1/conferencing_service_authorizations" }
|
3813
|
+
let(:method) { :post }
|
3814
|
+
let(:request_body) {
|
3815
|
+
{ redirect_uri: redirect_uri }
|
3816
|
+
}
|
3817
|
+
let(:correct_response_code) { 200 }
|
3818
|
+
let(:correct_response_body) do
|
3819
|
+
{
|
3820
|
+
"authorization_request" => {
|
3821
|
+
"url": "https://app.cronofy.com/conferencing_services/foo"
|
3822
|
+
}
|
3823
|
+
}
|
3824
|
+
end
|
3825
|
+
let(:correct_mapped_result) do
|
3826
|
+
Cronofy::ConferencingServiceAuthorizationResponse.new(correct_response_body['authorization_request'])
|
3827
|
+
end
|
3828
|
+
|
3829
|
+
subject { client.get_conferencing_service_authorizations(redirect_uri) }
|
3830
|
+
|
3831
|
+
it_behaves_like 'a Cronofy request'
|
3832
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
3833
|
+
end
|
3834
|
+
end
|
3712
3835
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cronofy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.41.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergii Paryzhskyi
|
8
8
|
- Garry Shutler
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
@@ -35,16 +35,16 @@ dependencies:
|
|
35
35
|
name: oauth2
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.0.4
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.0.4
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: bundler
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,7 +141,7 @@ homepage: https://github.com/cronofy/cronofy-ruby
|
|
141
141
|
licenses:
|
142
142
|
- MIT
|
143
143
|
metadata: {}
|
144
|
-
post_install_message:
|
144
|
+
post_install_message:
|
145
145
|
rdoc_options: []
|
146
146
|
require_paths:
|
147
147
|
- lib
|
@@ -156,8 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
|
-
rubygems_version: 3.
|
160
|
-
signing_key:
|
159
|
+
rubygems_version: 3.2.33
|
160
|
+
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: Cronofy - the scheduling platform for business
|
163
163
|
test_files:
|