cronofy 0.21.0 → 0.22.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
2
  SHA1:
3
- metadata.gz: 0b09683a6a1a610a1f4e0790c918b85a403676e4
4
- data.tar.gz: d79520d6abb9e4c51d07b0dc59eb020205c61624
3
+ metadata.gz: a48c75251078b9b71b6921cb317f6691a9add421
4
+ data.tar.gz: b616264212a442276812c5a4a8d944d34e4ba500
5
5
  SHA512:
6
- metadata.gz: f1f7adbeaa413a282fd1d930984b9d52215326959ff3f62f690dade3210ac2f98af7701e3fc2a1975373b8275c0b0120cddf3f0cd653588309a9898089a3c0d4
7
- data.tar.gz: ccb144468e56a76d91f1917647e8e0f405fa9493d66fb517d274d846acfaa418465ce052defba90e9d999e3a0734caa720c31e815a9f2cf2982f17db19b12317
6
+ metadata.gz: 18fb8765fa73771e8b19fdd58e6d349dd792cc82d9e2f8cc817341722e461b74e2d28d7133ddae470ff58cf41441d9dc6b77db118de23e7383586dfa3a44cd61
7
+ data.tar.gz: 39a63b0cdf4d63ce838fdbac5bb94d5f8bf6e3cf37b7102760b4f925f4adcfd12b08224dd64a8ce6c570a299074a8f1f4e4529badfb61102c94f96e8c1fcaa45
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.22.0]
2
+
3
+ * Splitting of Add to Calendar and Real time scheduling [#44]
4
+ * Support for explicit linking of accounts [#43]
5
+
1
6
  ## [0.21.0]
2
7
 
3
8
  * Support Add To Calendar with availability [#40]
@@ -57,7 +62,8 @@
57
62
  [0.18.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.18.0
58
63
  [0.19.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.19.0
59
64
  [0.20.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.20.0
60
- [0.21.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.20.0
65
+ [0.21.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.21.0
66
+ [0.22.0]: https://github.com/cronofy/cronofy-ruby/releases/tag/v0.22.0
61
67
 
62
68
  [#13]: https://github.com/cronofy/cronofy-ruby/pull/13
63
69
  [#16]: https://github.com/cronofy/cronofy-ruby/pull/16
@@ -74,3 +80,5 @@
74
80
  [#37]: https://github.com/cronofy/cronofy-ruby/pull/37
75
81
  [#38]: https://github.com/cronofy/cronofy-ruby/pull/38
76
82
  [#40]: https://github.com/cronofy/cronofy-ruby/pull/40
83
+ [#43]: https://github.com/cronofy/cronofy-ruby/pull/43
84
+ [#44]: https://github.com/cronofy/cronofy-ruby/pull/44
@@ -754,18 +754,9 @@ module Cronofy
754
754
  # an array of invitees to invite to or reject from
755
755
  # the event. Invitees are represented by a hash of
756
756
  # :email and :display_name (optional).
757
- # availability - A Hash describing the availability details for the event:
758
- # :participants - A hash stating who is required for the availability
759
- # call
760
- # :required_duration - A hash stating the length of time the event will
761
- # last for
762
- # :available_periods - A hash stating the available periods for the event
763
- # target_calendars - An array of hashes stating into which calendars to insert the created
764
- # event
765
757
  #
766
- # Examples
758
+ # Example
767
759
  #
768
- # - OAuth example
769
760
  # client.add_to_calendar(
770
761
  # oauth: {
771
762
  # scopes: 'read_events delete_events',
@@ -784,6 +775,85 @@ module Cronofy
784
775
  # long: "0.1234"
785
776
  # })
786
777
  #
778
+ # See http://www.cronofy.com/developers/api#upsert-event for reference.
779
+ #
780
+ # Returns a AddToCalendarResponse.
781
+ #
782
+ # Raises Cronofy::CredentialsMissingError if no credentials available.
783
+ # Raises Cronofy::AuthenticationFailureError if the access token is no
784
+ # longer valid.
785
+ # Raises Cronofy::AuthorizationFailureError if the access token does not
786
+ # include the required scope.
787
+ # Raises Cronofy::NotFoundError if the calendar does not exist.
788
+ # Raises Cronofy::InvalidRequestError if the request contains invalid
789
+ # parameters.
790
+ # Raises Cronofy::TooManyRequestsError if the request exceeds the rate
791
+ # limits for the application.
792
+ def add_to_calendar(args = {})
793
+ body = args.merge(client_id: @client_id, client_secret: @client_secret)
794
+
795
+ body[:event][:start] = encode_event_time(body[:event][:start])
796
+ body[:event][:end] = encode_event_time(body[:event][:end])
797
+
798
+ response = post("/v1/add_to_calendar", body)
799
+ parse_json(AddToCalendarResponse, nil , response)
800
+ end
801
+
802
+ # Public: Generates an real time scheduling link to start the OAuth process with
803
+ # an event to be automatically upserted
804
+ #
805
+ # oauth - A Hash describing the OAuth flow required:
806
+ # :scope - A String representing the scopes to ask for
807
+ # within the OAuth flow
808
+ # :redirect_uri - A String containing a url to redirect the
809
+ # user to after completing the OAuth flow.
810
+ # :scope - A String representing additional state to
811
+ # be passed within the OAuth flow.
812
+ #
813
+ # event - A Hash describing the event with symbolized keys:
814
+ # :event_id - A String uniquely identifying the event for
815
+ # your application (note: this is NOT an ID
816
+ # generated by Cronofy).
817
+ # :summary - A String to use as the summary, sometimes
818
+ # referred to as the name or title, of the
819
+ # event.
820
+ # :description - A String to use as the description, sometimes
821
+ # referred to as the notes or body, of the
822
+ # event.
823
+ # :url - The URL associated with the event.
824
+ # :location - A Hash describing the location of the event
825
+ # with symbolized keys (optional):
826
+ # :description - A String describing the
827
+ # location.
828
+ # :lat - A String of the location's latitude.
829
+ # :long - A String of the location's longitude.
830
+ # :reminders - An Array of Hashes describing the desired
831
+ # reminders for the event. Reminders should be
832
+ # specified in priority order as, for example,
833
+ # when the underlying provider only supports a
834
+ # single reminder then the first reminder will
835
+ # be used.
836
+ # :minutes - An Integer specifying the number
837
+ # of minutes before the start of the
838
+ # event that the reminder should
839
+ # occur.
840
+ # :transparency - The transparency state for the event (optional).
841
+ # Accepted values are "transparent" and "opaque".
842
+ # :attendees - A Hash of :invite and :reject, each of which is
843
+ # an array of invitees to invite to or reject from
844
+ # the event. Invitees are represented by a hash of
845
+ # :email and :display_name (optional).
846
+ # availability - A Hash describing the availability details for the event:
847
+ # :participants - A hash stating who is required for the availability
848
+ # call
849
+ # :required_duration - A hash stating the length of time the event will
850
+ # last for
851
+ # :available_periods - A hash stating the available periods for the event
852
+ # target_calendars - An array of hashes stating into which calendars to insert the created
853
+ # event
854
+ #
855
+ # Examples
856
+ #
787
857
  # - Availability example
788
858
  # client.add_to_calendar(
789
859
  # oauth: {
@@ -835,24 +905,38 @@ module Cronofy
835
905
  # parameters.
836
906
  # Raises Cronofy::TooManyRequestsError if the request exceeds the rate
837
907
  # limits for the application.
838
- def add_to_calendar(args = {})
908
+ def real_time_scheduling(args = {})
839
909
  body = args.merge(client_id: @client_id, client_secret: @client_secret)
840
910
 
841
- if availability = body[:availability]
911
+ if availability = args[:availability]
842
912
  availability[:participants] = map_availability_participants(availability[:participants])
843
913
  availability[:required_duration] = map_availability_required_duration(availability[:required_duration])
844
-
845
- translate_available_periods(availability[:available_periods])
846
- body[:availability] = availability
847
914
  end
848
915
 
849
- body[:event][:start] = encode_event_time(body[:event][:start]) if body[:event][:start]
850
- body[:event][:end] = encode_event_time(body[:event][:end]) if body[:event][:end]
916
+ translate_available_periods(availability[:available_periods])
917
+ body[:availability] = availability
851
918
 
852
- response = post("/v1/add_to_calendar", body)
919
+ response = post("/v1/real_time_scheduling", body)
853
920
  parse_json(AddToCalendarResponse, nil , response)
854
921
  end
855
922
 
923
+ # Public: Creates a link_token to allow explicitly linking of an account
924
+ #
925
+ # See https://www.cronofy.com/developers/api/alpha/#auth-explicit-linking for
926
+ # reference.
927
+ #
928
+ # Returns a link token
929
+ #
930
+ # Raises Cronofy::CredentialsMissingError if no credentials available.
931
+ # Raises Cronofy::AuthenticationFailureError if the access token is no
932
+ # longer valid.
933
+ # Raises Cronofy::TooManyRequestsError if the request exceeds the rate
934
+ # limits for the application.
935
+ def link_token
936
+ response = post("/v1/link_tokens", nil)
937
+ parse_json(String, 'link_token', response)
938
+ end
939
+
856
940
  private
857
941
 
858
942
  def translate_available_periods(periods)
@@ -1,3 +1,3 @@
1
1
  module Cronofy
2
- VERSION = "0.21.0".freeze
2
+ VERSION = "0.22.0".freeze
3
3
  end
@@ -1128,6 +1128,28 @@ describe Cronofy::Client do
1128
1128
  end
1129
1129
  end
1130
1130
 
1131
+ describe '#link_token' do
1132
+ let(:request_url) { 'https://api.cronofy.com/v1/link_tokens' }
1133
+ let(:method) { :post }
1134
+ let(:request_body) { nil }
1135
+
1136
+ let(:correct_response_code) { 200 }
1137
+ let(:correct_response_body) do
1138
+ {
1139
+ "link_token" => "abcd1234"
1140
+ }
1141
+ end
1142
+
1143
+ let(:correct_mapped_result) do
1144
+ "abcd1234"
1145
+ end
1146
+
1147
+ subject { client.link_token }
1148
+
1149
+ it_behaves_like 'a Cronofy request'
1150
+ it_behaves_like 'a Cronofy request with mapped return value'
1151
+ end
1152
+
1131
1153
  describe 'Availability' do
1132
1154
  describe '#availability' do
1133
1155
  let(:method) { :post }
@@ -1488,16 +1510,12 @@ describe Cronofy::Client do
1488
1510
 
1489
1511
  end
1490
1512
 
1491
- describe "Add to calendar availability" do
1492
- let(:request_url) { "https://api.cronofy.com/v1/add_to_calendar" }
1513
+ describe "Real time scheduling" do
1514
+ let(:request_url) { "https://api.cronofy.com/v1/real_time_scheduling" }
1493
1515
  let(:url) { URI("https://example.com") }
1494
1516
  let(:method) { :post }
1495
1517
  let(:request_headers) { json_request_headers }
1496
1518
 
1497
- let(:start_datetime) { Time.utc(2014, 8, 5, 15, 30, 0) }
1498
- let(:end_datetime) { Time.utc(2014, 8, 5, 17, 0, 0) }
1499
- let(:encoded_start_datetime) { "2014-08-05T15:30:00Z" }
1500
- let(:encoded_end_datetime) { "2014-08-05T17:00:00Z" }
1501
1519
  let(:location) { { :description => "Board room" } }
1502
1520
  let(:transparency) { nil }
1503
1521
  let(:client_id) { 'example_id' }
@@ -1623,7 +1641,7 @@ describe Cronofy::Client do
1623
1641
  }
1624
1642
  end
1625
1643
 
1626
- subject { client.add_to_calendar(args) }
1644
+ subject { client.real_time_scheduling(args) }
1627
1645
 
1628
1646
  context 'when start/end are Times' do
1629
1647
  it_behaves_like 'a Cronofy request'
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.21.0
4
+ version: 0.22.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-04-21 00:00:00.000000000 Z
12
+ date: 2017-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth2
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  version: '0'
150
150
  requirements: []
151
151
  rubyforge_project:
152
- rubygems_version: 2.6.4
152
+ rubygems_version: 2.6.12
153
153
  signing_key:
154
154
  specification_version: 4
155
155
  summary: Cronofy - one API for all the calendars