cronofy 0.37.7 → 0.41.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 +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:
|