cronofy 0.30.0 → 0.31.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 855b1d8409f077ff215dc67c60607b3eb3845164
4
- data.tar.gz: 60ded29938e28d782fc0eee85b07ef37ecbbbac0
2
+ SHA256:
3
+ metadata.gz: 33f1ecf7569c8c425473149e5f926e64e9f1a09c194f2c77dfa092048e0a347a
4
+ data.tar.gz: ca5415981d65cc82c9b53ea9886f8e1acdd299390f2db18a6f78b8203f680968
5
5
  SHA512:
6
- metadata.gz: dc85f2f4bd445ba656e08ab9d62e40afdbcb03b2c86929f79b7975e81d759b30a507374b0e6c43b145c835611f711fa418bf4bd5da2eac7f85a9385e2b0ebd02
7
- data.tar.gz: bc9795fce358b5e0c7d5b0412bc2de728a764a36a94e800b10da0850101f9f9f49c390db939cf03081117e89057e542b94b1d770fb624647790129934a459e33
6
+ metadata.gz: 846e3d33bb4a9c7b72e51881df03d42176e51e190563603d589d036c8f1d29d5f36ff54f2a6abe906264f03928e9efca06035694f3a8207cbe790527323b2e41
7
+ data.tar.gz: 064dbc5c4b14edb8917eeccefebf93ab82e94e6e2be751d82949f1ecd0c6a65f8f255a29c4910e9d219c21d30e774e816c784776d21349f48fc8ae73db9afc4a
@@ -1,3 +1,7 @@
1
+ ## [0.31.0]
2
+
3
+ * Added support for Element Tokens [#69]
4
+
1
5
  ## [0.30.0]
2
6
 
3
7
  * Added support for sequencing, buffers and intervals [#62]
@@ -127,6 +131,7 @@
127
131
  [0.28.1]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.28.1
128
132
  [0.29.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.29.0
129
133
  [0.30.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.30.0
134
+ [0.31.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.31.0
130
135
 
131
136
  [#13]: https://github.com/cronofy/cronofy-ruby/pull/13
132
137
  [#16]: https://github.com/cronofy/cronofy-ruby/pull/16
@@ -159,3 +164,4 @@
159
164
  [#59]: https://github.com/cronofy/cronofy-ruby/pull/59
160
165
  [#60]: https://github.com/cronofy/cronofy-ruby/pull/60
161
166
  [#62]: https://github.com/cronofy/cronofy-ruby/pull/62
167
+ [#69]: https://github.com/cronofy/cronofy-ruby/pull/69
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_runtime_dependency "oauth2", "~> 1.0"
21
21
  spec.add_runtime_dependency "hashie", ">= 2.1", "< 4"
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.6"
23
+ spec.add_development_dependency "bundler", ">= 1.6", "< 3"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rspec", "~> 3.2"
26
26
  spec.add_development_dependency "webmock", "~> 1.21"
@@ -1258,7 +1258,7 @@ module Cronofy
1258
1258
  # client.upsert_smart_invite(
1259
1259
  # smart_invite_id: "qTtZdczOccgaPncGJaCiLg",
1260
1260
  # callback_url: "http://www.example.com",
1261
- # attendee: {
1261
+ # recipient: {
1262
1262
  # email: "example@example.com"
1263
1263
  # },
1264
1264
  # event: {
@@ -1339,6 +1339,33 @@ module Cronofy
1339
1339
  parse_json(SmartInviteResponse, nil, response)
1340
1340
  end
1341
1341
 
1342
+
1343
+ # Public: Creates an element_token to pass to a UI Element
1344
+ #
1345
+ # options - A Hash of options for the token
1346
+ # :permissions - An Array of strings describing the
1347
+ # permissions required for the token
1348
+ # :subs - An Array of sub values for the account(s)
1349
+ # the element will be accessing
1350
+ # :origin - The scheme://hostname where the token will
1351
+ # be used.
1352
+ # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin
1353
+ #
1354
+ # See https://docs.cronofy.com/developers/ui-elements/authentication for
1355
+ # reference.
1356
+ #
1357
+ # Returns an element token
1358
+ #
1359
+ # Raises Cronofy::CredentialsMissingError if no credentials available.
1360
+ # Raises Cronofy::AuthenticationFailureError if the access token is no
1361
+ # longer valid.
1362
+ # Raises Cronofy::TooManyRequestsError if the request exceeds the rate
1363
+ # limits for the application.
1364
+ def element_token(options)
1365
+ response = wrapped_request { api_key!.post("/v1/element_tokens", json_request_args(options)) }
1366
+ parse_json(ElementToken, "element_token", response)
1367
+ end
1368
+
1342
1369
  private
1343
1370
 
1344
1371
  def translate_available_periods(periods)
@@ -377,4 +377,7 @@ module Cronofy
377
377
 
378
378
  coerce_key :participants, ParticipantEnumerable
379
379
  end
380
+
381
+ class ElementToken < CronofyMash
382
+ end
380
383
  end
@@ -1,3 +1,3 @@
1
1
  module Cronofy
2
- VERSION = "0.30.0".freeze
2
+ VERSION = "0.31.0".freeze
3
3
  end
@@ -1172,6 +1172,70 @@ describe Cronofy::Client do
1172
1172
  it_behaves_like 'a Cronofy request with mapped return value'
1173
1173
  end
1174
1174
 
1175
+ describe '#element_token' do
1176
+ let(:permissions) { ["agenda", "availability"] }
1177
+ let(:subs) { ["acc_567236000909002", "acc_678347111010113"] }
1178
+ let(:origin) { "https://local.test/page" }
1179
+
1180
+ let(:request_url) { 'https://api.cronofy.com/v1/element_tokens' }
1181
+ let(:method) { :post }
1182
+
1183
+ let(:request_headers) do
1184
+ {
1185
+ "Authorization" => "Bearer #{client_secret}",
1186
+ "User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
1187
+ "Content-Type" => "application/json; charset=utf-8",
1188
+ }
1189
+ end
1190
+
1191
+ let(:request_body) do
1192
+ {
1193
+ permissions: permissions,
1194
+ subs: subs,
1195
+ origin: origin
1196
+ }
1197
+ end
1198
+
1199
+ let(:expected_token) { "ELEMENT_TOKEN_1276534" }
1200
+
1201
+ let(:correct_response_code) { 200 }
1202
+ let(:correct_response_body) do
1203
+ {
1204
+ "element_token" => {
1205
+ "permissions" => permissions,
1206
+ "origin" => origin,
1207
+ "token" => expected_token,
1208
+ "expires_in" => 64800
1209
+ }
1210
+ }
1211
+ end
1212
+
1213
+ let(:correct_mapped_result) do
1214
+ Cronofy::ElementToken.new(correct_response_body['element_token'])
1215
+ end
1216
+
1217
+ let(:client_id) { 'example_id' }
1218
+ let(:client_secret) { 'example_secret' }
1219
+
1220
+ let(:client) do
1221
+ Cronofy::Client.new(
1222
+ client_id: client_id,
1223
+ client_secret: client_secret,
1224
+ )
1225
+ end
1226
+
1227
+ subject do
1228
+ client.element_token({
1229
+ permissions: permissions,
1230
+ subs: subs,
1231
+ origin: origin
1232
+ })
1233
+ end
1234
+
1235
+ it_behaves_like 'a Cronofy request'
1236
+ it_behaves_like 'a Cronofy request with mapped return value'
1237
+ end
1238
+
1175
1239
  describe '#revoke_profile_authorization' do
1176
1240
  let(:request_url) { "https://api.cronofy.com/v1/profiles/#{profile_id}/revoke" }
1177
1241
  let(:method) { :post }
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.30.0
4
+ version: 0.31.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: 2018-08-17 00:00:00.000000000 Z
12
+ date: 2019-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth2
@@ -49,16 +49,22 @@ dependencies:
49
49
  name: bundler
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
+ - - "<"
56
+ - !ruby/object:Gem::Version
57
+ version: '3'
55
58
  type: :development
56
59
  prerelease: false
57
60
  version_requirements: !ruby/object:Gem::Requirement
58
61
  requirements:
59
- - - "~>"
62
+ - - ">="
60
63
  - !ruby/object:Gem::Version
61
64
  version: '1.6'
65
+ - - "<"
66
+ - !ruby/object:Gem::Version
67
+ version: '3'
62
68
  - !ruby/object:Gem::Dependency
63
69
  name: rake
64
70
  requirement: !ruby/object:Gem::Requirement
@@ -150,8 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
156
  - !ruby/object:Gem::Version
151
157
  version: '0'
152
158
  requirements: []
153
- rubyforge_project:
154
- rubygems_version: 2.5.1
159
+ rubygems_version: 3.0.3
155
160
  signing_key:
156
161
  specification_version: 4
157
162
  summary: Cronofy - one API for all the calendars