cronofy 0.37.3 → 0.37.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/cronofy/client.rb +13 -2
- data/lib/cronofy/version.rb +1 -1
- data/spec/lib/cronofy/client_spec.rb +142 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1338eaab0825a963c74f2c5fd3c434d01185a4bbc36fa57504b0e1edd539fe9e
|
4
|
+
data.tar.gz: 55a045316dbb1545ee7e4f14284ebbbc0aa7b91848ba28d165968125d2221bb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38ee7c99226bfe70c6e970a22477de0130e93fe07130b9d2c0a596e17178f66435ec58a97be5f18e9b6ac5624eefef7dde96443a8cc91c85f02818016ed64f7d
|
7
|
+
data.tar.gz: 8d0d1641e57b0751988ac5f7978571d2dbd6d6ea12b96ff2314a33d0d9b87c7a11eb5e16775c55b070a312c2efb6b8b353dc3c3f7a8cbe9b3f42c943d6afa21a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## [0.37.4]
|
2
|
+
|
3
|
+
* Support client_secret only clients being able to authorize `#availability` calls. [#97]
|
4
|
+
|
1
5
|
## [0.37.3]
|
2
6
|
|
3
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]
|
@@ -192,6 +196,7 @@
|
|
192
196
|
[0.37.1]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.1
|
193
197
|
[0.37.2]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.2
|
194
198
|
[0.37.3]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.3
|
199
|
+
[0.37.4]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.37.4
|
195
200
|
|
196
201
|
[#13]: https://github.com/cronofy/cronofy-ruby/pull/13
|
197
202
|
[#16]: https://github.com/cronofy/cronofy-ruby/pull/16
|
@@ -237,3 +242,4 @@
|
|
237
242
|
[#90]: https://github.com/cronofy/cronofy-ruby/pull/90
|
238
243
|
[#91]: https://github.com/cronofy/cronofy-ruby/pull/91
|
239
244
|
[#95]: https://github.com/cronofy/cronofy-ruby/pull/95
|
245
|
+
[#97]: https://github.com/cronofy/cronofy-ruby/pull/97
|
data/lib/cronofy/client.rb
CHANGED
@@ -844,7 +844,7 @@ module Cronofy
|
|
844
844
|
|
845
845
|
translate_available_periods(options[:query_periods] || options[:available_periods])
|
846
846
|
|
847
|
-
response =
|
847
|
+
response = availability_post("/v1/availability", options)
|
848
848
|
|
849
849
|
parse_collections(
|
850
850
|
response,
|
@@ -889,7 +889,7 @@ module Cronofy
|
|
889
889
|
|
890
890
|
translate_available_periods(options[:query_periods] || options[:available_periods])
|
891
891
|
|
892
|
-
response =
|
892
|
+
response = availability_post("/v1/sequenced_availability", options)
|
893
893
|
parse_collection(Sequence, "sequences", response)
|
894
894
|
end
|
895
895
|
|
@@ -1811,6 +1811,17 @@ module Cronofy
|
|
1811
1811
|
wrapped_request { @auth.api_client.request(:post, url, json_request_args(body)) }
|
1812
1812
|
end
|
1813
1813
|
|
1814
|
+
# Availability Query could originally be authenticated via an access_token
|
1815
|
+
# Whilst it should be authed via an API key now, we try access_token first
|
1816
|
+
# for backward compatibility
|
1817
|
+
def availability_post(url, body)
|
1818
|
+
if @auth.access_token
|
1819
|
+
post(url, body)
|
1820
|
+
else
|
1821
|
+
wrapped_request { api_key!.post(url, json_request_args(body)) }
|
1822
|
+
end
|
1823
|
+
end
|
1824
|
+
|
1814
1825
|
def wrapped_request
|
1815
1826
|
yield
|
1816
1827
|
rescue OAuth2::Error => e
|
data/lib/cronofy/version.rb
CHANGED
@@ -1257,6 +1257,17 @@ describe Cronofy::Client do
|
|
1257
1257
|
let(:request_url) { 'https://api.cronofy.com/v1/availability' }
|
1258
1258
|
let(:request_headers) { json_request_headers }
|
1259
1259
|
|
1260
|
+
let(:client_id) { 'example_id' }
|
1261
|
+
let(:client_secret) { 'example_secret' }
|
1262
|
+
let(:token) { client_secret }
|
1263
|
+
|
1264
|
+
let(:client) do
|
1265
|
+
Cronofy::Client.new(
|
1266
|
+
client_id: client_id,
|
1267
|
+
client_secret: client_secret,
|
1268
|
+
)
|
1269
|
+
end
|
1270
|
+
|
1260
1271
|
let(:request_body) do
|
1261
1272
|
{
|
1262
1273
|
"participants" => [
|
@@ -1770,6 +1781,87 @@ describe Cronofy::Client do
|
|
1770
1781
|
it_behaves_like 'a Cronofy request'
|
1771
1782
|
it_behaves_like 'a Cronofy request with mapped return value'
|
1772
1783
|
end
|
1784
|
+
|
1785
|
+
context "when trying to auth with only an access_token, as originally implemented" do
|
1786
|
+
let(:access_token) { "access_token_123"}
|
1787
|
+
let(:client) { Cronofy::Client.new(access_token: access_token) }
|
1788
|
+
let(:request_headers) do
|
1789
|
+
{
|
1790
|
+
"Authorization" => "Bearer #{access_token}",
|
1791
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
1792
|
+
"Content-Type" => "application/json; charset=utf-8",
|
1793
|
+
}
|
1794
|
+
end
|
1795
|
+
|
1796
|
+
let(:participants) do
|
1797
|
+
{ members: %w{acc_567236000909002 acc_678347111010113} }
|
1798
|
+
end
|
1799
|
+
|
1800
|
+
let(:required_duration) { 60 }
|
1801
|
+
|
1802
|
+
let(:available_periods) do
|
1803
|
+
[
|
1804
|
+
{ start: Time.parse("2017-01-03T09:00:00Z"), end: Time.parse("2017-01-03T18:00:00Z") },
|
1805
|
+
{ start: Time.parse("2017-01-04T09:00:00Z"), end: Time.parse("2017-01-04T18:00:00Z") },
|
1806
|
+
]
|
1807
|
+
end
|
1808
|
+
|
1809
|
+
it_behaves_like 'a Cronofy request'
|
1810
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
1811
|
+
end
|
1812
|
+
|
1813
|
+
context "when trying to auth with both a client_secret and access_token" do
|
1814
|
+
let(:access_token) { "access_token_123" }
|
1815
|
+
let(:client_secret) { "client_secret_456" }
|
1816
|
+
let(:client) { Cronofy::Client.new(access_token: access_token, client_secret: client_secret) }
|
1817
|
+
let(:request_headers) do
|
1818
|
+
{
|
1819
|
+
"Authorization" => "Bearer #{access_token}",
|
1820
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
1821
|
+
"Content-Type" => "application/json; charset=utf-8",
|
1822
|
+
}
|
1823
|
+
end
|
1824
|
+
|
1825
|
+
let(:participants) do
|
1826
|
+
{ members: %w{acc_567236000909002 acc_678347111010113} }
|
1827
|
+
end
|
1828
|
+
|
1829
|
+
let(:required_duration) { 60 }
|
1830
|
+
|
1831
|
+
let(:available_periods) do
|
1832
|
+
[
|
1833
|
+
{ start: Time.parse("2017-01-03T09:00:00Z"), end: Time.parse("2017-01-03T18:00:00Z") },
|
1834
|
+
{ start: Time.parse("2017-01-04T09:00:00Z"), end: Time.parse("2017-01-04T18:00:00Z") },
|
1835
|
+
]
|
1836
|
+
end
|
1837
|
+
|
1838
|
+
describe "it prefers the access_token for backward compatibility" do
|
1839
|
+
it_behaves_like 'a Cronofy request'
|
1840
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
1841
|
+
end
|
1842
|
+
end
|
1843
|
+
|
1844
|
+
context "when trying to auth without a client_secret or access_token" do
|
1845
|
+
let(:client) { Cronofy::Client.new }
|
1846
|
+
|
1847
|
+
let(:participants) do
|
1848
|
+
{ members: %w{acc_567236000909002 acc_678347111010113} }
|
1849
|
+
end
|
1850
|
+
|
1851
|
+
let(:required_duration) { 60 }
|
1852
|
+
|
1853
|
+
let(:available_periods) do
|
1854
|
+
[
|
1855
|
+
{ start: Time.parse("2017-01-03T09:00:00Z"), end: Time.parse("2017-01-03T18:00:00Z") },
|
1856
|
+
{ start: Time.parse("2017-01-04T09:00:00Z"), end: Time.parse("2017-01-04T18:00:00Z") },
|
1857
|
+
]
|
1858
|
+
end
|
1859
|
+
|
1860
|
+
|
1861
|
+
it "raises an API Key error" do
|
1862
|
+
expect{ subject }.to raise_error(Cronofy::CredentialsMissingError)
|
1863
|
+
end
|
1864
|
+
end
|
1773
1865
|
end
|
1774
1866
|
end
|
1775
1867
|
|
@@ -1779,6 +1871,17 @@ describe Cronofy::Client do
|
|
1779
1871
|
let(:request_url) { 'https://api.cronofy.com/v1/sequenced_availability' }
|
1780
1872
|
let(:request_headers) { json_request_headers }
|
1781
1873
|
|
1874
|
+
let(:client_id) { 'example_id' }
|
1875
|
+
let(:client_secret) { 'example_secret' }
|
1876
|
+
let(:token) { client_secret }
|
1877
|
+
|
1878
|
+
let(:client) do
|
1879
|
+
Cronofy::Client.new(
|
1880
|
+
client_id: client_id,
|
1881
|
+
client_secret: client_secret,
|
1882
|
+
)
|
1883
|
+
end
|
1884
|
+
|
1782
1885
|
let(:request_body) do
|
1783
1886
|
{
|
1784
1887
|
"sequence" => [
|
@@ -1937,6 +2040,45 @@ describe Cronofy::Client do
|
|
1937
2040
|
it_behaves_like 'a Cronofy request'
|
1938
2041
|
it_behaves_like 'a Cronofy request with mapped return value'
|
1939
2042
|
end
|
2043
|
+
|
2044
|
+
context "when trying to auth with access_token only" do
|
2045
|
+
let(:access_token) { "access_token_123"}
|
2046
|
+
let(:client) { Cronofy::Client.new(access_token: access_token) }
|
2047
|
+
let(:request_headers) do
|
2048
|
+
{
|
2049
|
+
"Authorization" => "Bearer #{access_token}",
|
2050
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
2051
|
+
"Content-Type" => "application/json; charset=utf-8",
|
2052
|
+
}
|
2053
|
+
end
|
2054
|
+
|
2055
|
+
it_behaves_like 'a Cronofy request'
|
2056
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
2057
|
+
end
|
2058
|
+
|
2059
|
+
context "when trying to auth with both access_token and client_secret provided" do
|
2060
|
+
let(:client_id) { 'example_id' }
|
2061
|
+
let(:client_secret) { 'example_secret' }
|
2062
|
+
let(:access_token) { "access_token_123"}
|
2063
|
+
|
2064
|
+
let(:client) do
|
2065
|
+
Cronofy::Client.new(
|
2066
|
+
client_id: client_id,
|
2067
|
+
client_secret: client_secret,
|
2068
|
+
access_token: access_token,
|
2069
|
+
)
|
2070
|
+
end
|
2071
|
+
let(:request_headers) do
|
2072
|
+
{
|
2073
|
+
"Authorization" => "Bearer #{access_token}",
|
2074
|
+
"User-Agent" => "Cronofy Ruby #{::Cronofy::VERSION}",
|
2075
|
+
"Content-Type" => "application/json; charset=utf-8",
|
2076
|
+
}
|
2077
|
+
end
|
2078
|
+
|
2079
|
+
it_behaves_like 'a Cronofy request'
|
2080
|
+
it_behaves_like 'a Cronofy request with mapped return value'
|
2081
|
+
end
|
1940
2082
|
end
|
1941
2083
|
end
|
1942
2084
|
|
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.4
|
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:
|
12
|
+
date: 2022-03-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
@@ -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.2.
|
159
|
+
rubygems_version: 3.2.32
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: Cronofy - the scheduling platform for business
|