cronofy 0.16.0 → 0.17.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 +46 -0
- data/cronofy.gemspec +1 -1
- data/lib/cronofy/client.rb +35 -8
- data/lib/cronofy/version.rb +1 -1
- data/spec/lib/cronofy/client_spec.rb +72 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a517f51f9e209fd7b2f27d26c97daf641a45b90
|
4
|
+
data.tar.gz: d701d1ca79903ab281ffe138c2d53bb22d81d723
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8aa4f73c917c397d1a2306b40a6f76d4d198186b527c4cbaa974879772551b8140b1cdbe986dcc28f103c476da92f3dae75dc56f1535d5cb87194d62a51dc152
|
7
|
+
data.tar.gz: f132c20db5a57edd377b3b71d8746bc96900d0bea0c642df78255cb55af36f729ffb66929517685494c1fd8f40557e50ddeb600a3d6468e142b4c9d63545a508
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
## [0.17.0]
|
2
|
+
|
3
|
+
* Support member-specific available periods for Availability API [#27]
|
4
|
+
|
5
|
+
## [0.16.0]
|
6
|
+
|
7
|
+
* Support Availability API [#26]
|
8
|
+
|
9
|
+
## [0.15.0]
|
10
|
+
|
11
|
+
* Support for upcoming geo location feature [#24]
|
12
|
+
|
13
|
+
## [0.14.0]
|
14
|
+
|
15
|
+
* Support for setting participant status [#20]
|
16
|
+
|
17
|
+
## [0.13.0]
|
18
|
+
|
19
|
+
* Support for listing resources [#18]
|
20
|
+
|
21
|
+
## [0.12.0]
|
22
|
+
|
23
|
+
* Support for deleting external events [#17]
|
24
|
+
|
25
|
+
## [0.11.0]
|
26
|
+
|
27
|
+
* Support for Enterprise Connect [#13]
|
28
|
+
* Support for elevating permissions [#16]
|
29
|
+
|
30
|
+
|
31
|
+
[0.11.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.11.0
|
32
|
+
[0.12.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.12.0
|
33
|
+
[0.13.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.13.0
|
34
|
+
[0.14.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.14.0
|
35
|
+
[0.15.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.15.0
|
36
|
+
[0.16.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.16.0
|
37
|
+
[0.17.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.17.0
|
38
|
+
|
39
|
+
[#13]: https://github.com/cronofy/cronofy-ruby/pull/13
|
40
|
+
[#16]: https://github.com/cronofy/cronofy-ruby/pull/16
|
41
|
+
[#17]: https://github.com/cronofy/cronofy-ruby/pull/17
|
42
|
+
[#18]: https://github.com/cronofy/cronofy-ruby/pull/18
|
43
|
+
[#20]: https://github.com/cronofy/cronofy-ruby/pull/20
|
44
|
+
[#24]: https://github.com/cronofy/cronofy-ruby/pull/24
|
45
|
+
[#26]: https://github.com/cronofy/cronofy-ruby/pull/26
|
46
|
+
[#27]: https://github.com/cronofy/cronofy-ruby/pull/27
|
data/cronofy.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
|
13
13
|
spec.require_paths = ["lib"]
|
14
14
|
|
15
|
-
spec.files = %w{Gemfile LICENSE.txt README.md Rakefile cronofy.gemspec}
|
15
|
+
spec.files = %w{CHANGELOG.md Gemfile LICENSE.txt README.md Rakefile cronofy.gemspec}
|
16
16
|
spec.files += Dir['lib/**/*.rb']
|
17
17
|
spec.files += Dir['spec/**/*.rb']
|
18
18
|
spec.test_files = Dir['spec/**/*.rb']
|
data/lib/cronofy/client.rb
CHANGED
@@ -652,8 +652,8 @@ module Cronofy
|
|
652
652
|
# Public: Performs an availability query.
|
653
653
|
#
|
654
654
|
# options - The Hash options used to refine the selection (default: {}):
|
655
|
-
# :participants - An Array of participant groups
|
656
|
-
#
|
655
|
+
# :participants - An Array of participant groups or a Hash
|
656
|
+
# for a single participant group.
|
657
657
|
# :required_duration - An Integer representing the minimum number
|
658
658
|
# of minutes of availability required.
|
659
659
|
# :available_periods - An Array of available time periods Hashes,
|
@@ -674,11 +674,7 @@ module Cronofy
|
|
674
674
|
options[:participants] = map_availability_participants(options[:participants])
|
675
675
|
options[:required_duration] = map_availability_required_duration(options[:required_duration])
|
676
676
|
|
677
|
-
options[:available_periods]
|
678
|
-
AVAILABLE_PERIODS_TIME_PARAMS.select { |tp| params.key?(tp) }.each do |tp|
|
679
|
-
params[tp] = to_iso8601(params[tp])
|
680
|
-
end
|
681
|
-
end
|
677
|
+
translate_available_periods(options[:available_periods])
|
682
678
|
|
683
679
|
response = post("/v1/availability", options)
|
684
680
|
parse_collection(AvailablePeriod, "available_periods", response)
|
@@ -686,7 +682,29 @@ module Cronofy
|
|
686
682
|
|
687
683
|
private
|
688
684
|
|
685
|
+
def translate_available_periods(periods)
|
686
|
+
periods.each do |params|
|
687
|
+
AVAILABLE_PERIODS_TIME_PARAMS.select { |tp| params.key?(tp) }.each do |tp|
|
688
|
+
params[tp] = to_iso8601(params[tp])
|
689
|
+
end
|
690
|
+
end
|
691
|
+
end
|
692
|
+
|
689
693
|
def map_availability_participants(participants)
|
694
|
+
case participants
|
695
|
+
when Hash
|
696
|
+
# Allow one group to be specified without being nested
|
697
|
+
[map_availability_participants_group(participants)]
|
698
|
+
when Enumerable
|
699
|
+
participants.map do |group|
|
700
|
+
map_availability_participants_group(group)
|
701
|
+
end
|
702
|
+
else
|
703
|
+
participants
|
704
|
+
end
|
705
|
+
end
|
706
|
+
|
707
|
+
def map_availability_participants_group(participants)
|
690
708
|
case participants
|
691
709
|
when Hash
|
692
710
|
participants[:members].map! do |member|
|
@@ -697,7 +715,11 @@ module Cronofy
|
|
697
715
|
participants[:required] = :all
|
698
716
|
end
|
699
717
|
|
700
|
-
|
718
|
+
participants
|
719
|
+
when Array
|
720
|
+
participants.map do |group|
|
721
|
+
map_availability_participants(group)
|
722
|
+
end
|
701
723
|
else
|
702
724
|
participants
|
703
725
|
end
|
@@ -707,6 +729,11 @@ module Cronofy
|
|
707
729
|
case member
|
708
730
|
when String
|
709
731
|
{ sub: member }
|
732
|
+
when Hash
|
733
|
+
if member[:available_periods]
|
734
|
+
translate_available_periods(member[:available_periods])
|
735
|
+
end
|
736
|
+
member
|
710
737
|
else
|
711
738
|
member
|
712
739
|
end
|
data/lib/cronofy/version.rb
CHANGED
@@ -1096,7 +1096,7 @@ describe Cronofy::Client do
|
|
1096
1096
|
end
|
1097
1097
|
end
|
1098
1098
|
|
1099
|
-
describe 'Availability'
|
1099
|
+
describe 'Availability' do
|
1100
1100
|
describe '#availability' do
|
1101
1101
|
let(:method) { :post }
|
1102
1102
|
let(:request_url) { 'https://api.cronofy.com/v1/availability' }
|
@@ -1193,6 +1193,77 @@ describe Cronofy::Client do
|
|
1193
1193
|
it_behaves_like 'a Cronofy request with mapped return value'
|
1194
1194
|
end
|
1195
1195
|
|
1196
|
+
context "member-specific available periods" do
|
1197
|
+
let(:request_body) do
|
1198
|
+
{
|
1199
|
+
"participants" => [
|
1200
|
+
{
|
1201
|
+
"members" => [
|
1202
|
+
{ "sub" => "acc_567236000909002" },
|
1203
|
+
{
|
1204
|
+
"sub" => "acc_678347111010113",
|
1205
|
+
"available_periods" => [
|
1206
|
+
{
|
1207
|
+
"start" => "2017-01-03T09:00:00Z",
|
1208
|
+
"end" => "2017-01-03T12:00:00Z"
|
1209
|
+
},
|
1210
|
+
{
|
1211
|
+
"start" => "2017-01-04T10:00:00Z",
|
1212
|
+
"end" => "2017-01-04T20:00:00Z"
|
1213
|
+
}
|
1214
|
+
]
|
1215
|
+
}
|
1216
|
+
],
|
1217
|
+
"required" => "all"
|
1218
|
+
}
|
1219
|
+
],
|
1220
|
+
"required_duration" => { "minutes" => 60 },
|
1221
|
+
"available_periods" => [
|
1222
|
+
{
|
1223
|
+
"start" => "2017-01-03T09:00:00Z",
|
1224
|
+
"end" => "2017-01-03T18:00:00Z"
|
1225
|
+
},
|
1226
|
+
{
|
1227
|
+
"start" => "2017-01-04T09:00:00Z",
|
1228
|
+
"end" => "2017-01-04T18:00:00Z"
|
1229
|
+
}
|
1230
|
+
]
|
1231
|
+
}
|
1232
|
+
end
|
1233
|
+
|
1234
|
+
let(:participants) do
|
1235
|
+
[
|
1236
|
+
{
|
1237
|
+
members: [
|
1238
|
+
{ sub: "acc_567236000909002" },
|
1239
|
+
{
|
1240
|
+
sub: "acc_678347111010113",
|
1241
|
+
available_periods: [
|
1242
|
+
{ start: Time.parse("2017-01-03T09:00:00Z"), end: Time.parse("2017-01-03T12:00:00Z") },
|
1243
|
+
{ start: Time.parse("2017-01-04T10:00:00Z"), end: Time.parse("2017-01-04T20:00:00Z") },
|
1244
|
+
],
|
1245
|
+
},
|
1246
|
+
],
|
1247
|
+
required: :all,
|
1248
|
+
}
|
1249
|
+
]
|
1250
|
+
end
|
1251
|
+
|
1252
|
+
let(:required_duration) do
|
1253
|
+
{ minutes: 60 }
|
1254
|
+
end
|
1255
|
+
|
1256
|
+
let(:available_periods) do
|
1257
|
+
[
|
1258
|
+
{ start: Time.parse("2017-01-03T09:00:00Z"), end: Time.parse("2017-01-03T18:00:00Z") },
|
1259
|
+
{ start: Time.parse("2017-01-04T09:00:00Z"), end: Time.parse("2017-01-04T18:00:00Z") },
|
1260
|
+
]
|
1261
|
+
end
|
1262
|
+
|
1263
|
+
it_behaves_like 'a Cronofy request'
|
1264
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
1265
|
+
end
|
1266
|
+
|
1196
1267
|
context "simple values to defaults" do
|
1197
1268
|
let(:participants) do
|
1198
1269
|
{ members: %w{acc_567236000909002 acc_678347111010113} }
|
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.
|
4
|
+
version: 0.17.0
|
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: 2017-
|
12
|
+
date: 2017-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: oauth2
|
@@ -109,6 +109,7 @@ executables: []
|
|
109
109
|
extensions: []
|
110
110
|
extra_rdoc_files: []
|
111
111
|
files:
|
112
|
+
- CHANGELOG.md
|
112
113
|
- Gemfile
|
113
114
|
- LICENSE.txt
|
114
115
|
- README.md
|