viewpoint2 1.3.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.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +216 -0
  3. data/lib/ews/calendar_accessors.rb +34 -0
  4. data/lib/ews/connection.rb +130 -0
  5. data/lib/ews/connection_helper.rb +35 -0
  6. data/lib/ews/convert_accessors.rb +56 -0
  7. data/lib/ews/errors.rb +56 -0
  8. data/lib/ews/ews_client.rb +103 -0
  9. data/lib/ews/exceptions/exceptions.rb +61 -0
  10. data/lib/ews/folder_accessors.rb +264 -0
  11. data/lib/ews/impersonation.rb +30 -0
  12. data/lib/ews/item_accessors.rb +231 -0
  13. data/lib/ews/mailbox_accessors.rb +99 -0
  14. data/lib/ews/message_accessors.rb +93 -0
  15. data/lib/ews/push_subscription_accessors.rb +33 -0
  16. data/lib/ews/room_accessors.rb +48 -0
  17. data/lib/ews/roomlist_accessors.rb +47 -0
  18. data/lib/ews/soap.rb +64 -0
  19. data/lib/ews/soap/builders/ews_builder.rb +1351 -0
  20. data/lib/ews/soap/ews_response.rb +84 -0
  21. data/lib/ews/soap/ews_soap_availability_response.rb +58 -0
  22. data/lib/ews/soap/ews_soap_free_busy_response.rb +119 -0
  23. data/lib/ews/soap/ews_soap_response.rb +103 -0
  24. data/lib/ews/soap/ews_soap_room_response.rb +53 -0
  25. data/lib/ews/soap/ews_soap_roomlist_response.rb +54 -0
  26. data/lib/ews/soap/exchange_availability.rb +61 -0
  27. data/lib/ews/soap/exchange_data_services.rb +780 -0
  28. data/lib/ews/soap/exchange_notification.rb +146 -0
  29. data/lib/ews/soap/exchange_synchronization.rb +93 -0
  30. data/lib/ews/soap/exchange_time_zones.rb +56 -0
  31. data/lib/ews/soap/exchange_user_configuration.rb +33 -0
  32. data/lib/ews/soap/exchange_web_service.rb +264 -0
  33. data/lib/ews/soap/parsers/ews_parser.rb +43 -0
  34. data/lib/ews/soap/parsers/ews_sax_document.rb +70 -0
  35. data/lib/ews/soap/response_message.rb +80 -0
  36. data/lib/ews/soap/responses/create_attachment_response_message.rb +47 -0
  37. data/lib/ews/soap/responses/create_item_response_message.rb +25 -0
  38. data/lib/ews/soap/responses/find_item_response_message.rb +80 -0
  39. data/lib/ews/soap/responses/get_events_response_message.rb +53 -0
  40. data/lib/ews/soap/responses/send_notification_response_message.rb +59 -0
  41. data/lib/ews/soap/responses/subscribe_response_message.rb +35 -0
  42. data/lib/ews/soap/responses/sync_folder_hierarchy_response_message.rb +36 -0
  43. data/lib/ews/soap/responses/sync_folder_items_response_message.rb +36 -0
  44. data/lib/ews/templates/calendar_item.rb +79 -0
  45. data/lib/ews/templates/forward_item.rb +24 -0
  46. data/lib/ews/templates/message.rb +76 -0
  47. data/lib/ews/templates/reply_to_item.rb +25 -0
  48. data/lib/ews/templates/task.rb +74 -0
  49. data/lib/ews/types.rb +194 -0
  50. data/lib/ews/types/attachment.rb +77 -0
  51. data/lib/ews/types/attendee.rb +41 -0
  52. data/lib/ews/types/calendar_folder.rb +50 -0
  53. data/lib/ews/types/calendar_item.rb +133 -0
  54. data/lib/ews/types/contact.rb +7 -0
  55. data/lib/ews/types/contacts_folder.rb +8 -0
  56. data/lib/ews/types/copied_event.rb +51 -0
  57. data/lib/ews/types/created_event.rb +24 -0
  58. data/lib/ews/types/deleted_event.rb +24 -0
  59. data/lib/ews/types/distribution_list.rb +7 -0
  60. data/lib/ews/types/event.rb +62 -0
  61. data/lib/ews/types/export_items_response_message.rb +52 -0
  62. data/lib/ews/types/file_attachment.rb +65 -0
  63. data/lib/ews/types/folder.rb +60 -0
  64. data/lib/ews/types/free_busy_changed_event.rb +24 -0
  65. data/lib/ews/types/generic_folder.rb +418 -0
  66. data/lib/ews/types/item.rb +450 -0
  67. data/lib/ews/types/item_attachment.rb +84 -0
  68. data/lib/ews/types/item_field_uri_map.rb +208 -0
  69. data/lib/ews/types/mailbox_user.rb +156 -0
  70. data/lib/ews/types/meeting_cancellation.rb +7 -0
  71. data/lib/ews/types/meeting_message.rb +7 -0
  72. data/lib/ews/types/meeting_request.rb +7 -0
  73. data/lib/ews/types/meeting_response.rb +7 -0
  74. data/lib/ews/types/message.rb +7 -0
  75. data/lib/ews/types/modified_event.rb +48 -0
  76. data/lib/ews/types/moved_event.rb +51 -0
  77. data/lib/ews/types/new_mail_event.rb +24 -0
  78. data/lib/ews/types/out_of_office.rb +147 -0
  79. data/lib/ews/types/post_item.rb +7 -0
  80. data/lib/ews/types/search_folder.rb +8 -0
  81. data/lib/ews/types/status_event.rb +39 -0
  82. data/lib/ews/types/task.rb +104 -0
  83. data/lib/ews/types/tasks_folder.rb +27 -0
  84. data/lib/viewpoint/logging.rb +27 -0
  85. data/lib/viewpoint/logging/config.rb +24 -0
  86. data/lib/viewpoint/string_utils.rb +76 -0
  87. data/lib/viewpoint2.rb +111 -0
  88. metadata +191 -0
@@ -0,0 +1,77 @@
1
+ =begin
2
+ This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ module Viewpoint::EWS::Types
20
+ # A generic Attachment. This class should not be instantiated directly. You
21
+ # should use one of the subclasses like FileAttachment or ItemAttachment.
22
+ class Attachment
23
+ include Viewpoint::EWS
24
+ include Viewpoint::EWS::Types
25
+ include Viewpoint::EWS::Types::Item
26
+
27
+ ATTACH_KEY_PATHS = {
28
+ :id => [:attachment_id, :attribs, :id],
29
+ :parent_item_id => [:attachment_id, :attribs, :root_item_id],
30
+ :parent_change_key => [:attachment_id, :attribs, :root_item_change_key],
31
+ :name => [:name, :text],
32
+ :content_type => [:content_type, :text],
33
+ :content_id => [:content_id],
34
+ :size => [:size, :text],
35
+ :last_modified_time => [:last_modified_time, :text],
36
+ :is_inline? => [:is_inline, :text],
37
+ }
38
+
39
+ ATTACH_KEY_TYPES = {
40
+ is_inline?: ->(str){str.downcase == 'true'},
41
+ last_modified_type: ->(str){DateTime.parse(str)},
42
+ size: ->(str){str.to_i},
43
+ content_id: :fix_content_id,
44
+ }
45
+
46
+ ATTACH_KEY_ALIAS = { }
47
+
48
+ # @param [Hash] attachment The attachment ews_item
49
+ def initialize(item, attachment)
50
+ @item = item
51
+ super(item.ews, attachment)
52
+ end
53
+
54
+
55
+ private
56
+
57
+
58
+ def key_paths
59
+ @key_paths ||= ATTACH_KEY_PATHS
60
+ end
61
+
62
+ def key_types
63
+ @key_types ||= ATTACH_KEY_TYPES
64
+ end
65
+
66
+ def key_alias
67
+ @key_alias ||= ATTACH_KEY_ALIAS
68
+ end
69
+
70
+ # Sometimes the SOAP response comes back with two identical content_ids.
71
+ # This method fishes them out no matter which way them come.
72
+ def fix_content_id(content_id)
73
+ content_id.is_a?(Array) ? content_id.last[:text] : content_id[:text]
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,41 @@
1
+ =begin
2
+ This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ module Viewpoint::EWS::Types
20
+
21
+ class Attendee < MailboxUser
22
+
23
+ attr_accessor :response_type, :last_response_time
24
+
25
+ def initialize(ews, user_hash)
26
+ mbox_user = nil
27
+ user_hash[:attendee][:elems].each do |a|
28
+ if a[:mailbox]
29
+ mbox_user = a[:mailbox][:elems]
30
+ elsif a[:response_type]
31
+ @response_type = a[:response_type][:text]
32
+ elsif a[:last_response_time]
33
+ @last_response_time = a[:last_response_time][:text]
34
+ end
35
+ end
36
+ super(ews, mbox_user)
37
+ end
38
+
39
+ end # Attendee
40
+
41
+ end # Viewpoint::EWS::Types
@@ -0,0 +1,50 @@
1
+ module Viewpoint::EWS::Types
2
+ class CalendarFolder
3
+ include Viewpoint::EWS
4
+ include Viewpoint::EWS::Types
5
+ include Viewpoint::EWS::Types::GenericFolder
6
+
7
+ # Fetch items between a given time period
8
+ # @param [DateTime] start_date the time to start fetching Items from
9
+ # @param [DateTime] end_date the time to stop fetching Items from
10
+ def items_between(start_date, end_date, opts={})
11
+ items do |obj|
12
+ obj.restriction = { :and =>
13
+ [
14
+ {:is_greater_than_or_equal_to =>
15
+ [
16
+ {:field_uRI => {:field_uRI=>'calendar:Start'}},
17
+ {:field_uRI_or_constant=>{:constant => {:value =>start_date}}}
18
+ ]
19
+ },
20
+ {:is_less_than_or_equal_to =>
21
+ [
22
+ {:field_uRI => {:field_uRI=>'calendar:End'}},
23
+ {:field_uRI_or_constant=>{:constant => {:value =>end_date}}}
24
+ ]
25
+ }
26
+ ]
27
+ }
28
+ end
29
+ end
30
+
31
+ # Creates a new appointment
32
+ # @param attributes [Hash] Parameters of the calendar item. Some example attributes are listed below.
33
+ # @option attributes :subject [String]
34
+ # @option attributes :start [Time]
35
+ # @option attributes :end [Time]
36
+ # @return [CalendarItem]
37
+ # @see Template::CalendarItem
38
+ def create_item(attributes, to_ews_create_opts = {})
39
+ template = Viewpoint::EWS::Template::CalendarItem.new attributes
40
+ template.saved_item_folder_id = {id: self.id, change_key: self.change_key}
41
+ rm = ews.create_item(template.to_ews_create(to_ews_create_opts)).response_messages.first
42
+ if rm && rm.success?
43
+ CalendarItem.new ews, rm.items.first[:calendar_item][:elems].first
44
+ else
45
+ raise EwsCreateItemError, "Could not create item in folder. #{rm.code}: #{rm.message_text}" unless rm
46
+ end
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,133 @@
1
+ module Viewpoint::EWS::Types
2
+ class CalendarItem
3
+ include Viewpoint::EWS
4
+ include Viewpoint::EWS::Types
5
+ include Viewpoint::EWS::Types::Item
6
+ include Viewpoint::StringUtils
7
+
8
+ CALENDAR_ITEM_KEY_PATHS = {
9
+ recurring?: [:is_recurring, :text],
10
+ meeting?: [:is_meeting, :text],
11
+ cancelled?: [:is_cancelled, :text],
12
+ duration: [:duration, :text],
13
+ time_zone: [:time_zone, :text],
14
+ start: [:start, :text],
15
+ end: [:end, :text],
16
+ location: [:location, :text],
17
+ all_day?: [:is_all_day_event, :text],
18
+ legacy_free_busy_status: [:legacy_free_busy_status, :text],
19
+ my_response_type: [:my_response_type, :text],
20
+ organizer: [:organizer, :elems, 0, :mailbox, :elems],
21
+ optional_attendees: [:optional_attendees, :elems ],
22
+ required_attendees: [:required_attendees, :elems ],
23
+ recurrence: [:recurrence, :elems ],
24
+ deleted_occurrences: [:deleted_occurrences, :elems ],
25
+ modified_occurrences: [:modified_occurrences, :elems ]
26
+ }
27
+
28
+ CALENDAR_ITEM_KEY_TYPES = {
29
+ start: ->(str){DateTime.parse(str)},
30
+ end: ->(str){DateTime.parse(str)},
31
+ recurring?: ->(str){str.downcase == 'true'},
32
+ meeting?: ->(str){str.downcase == 'true'},
33
+ cancelled?: ->(str){str.downcase == 'true'},
34
+ all_day?: ->(str){str.downcase == 'true'},
35
+ organizer: :build_mailbox_user,
36
+ optional_attendees: :build_attendees_users,
37
+ required_attendees: :build_attendees_users,
38
+ deleted_occurrences: :build_deleted_occurrences,
39
+ modified_occurrences: :build_modified_occurrences
40
+ }
41
+ CALENDAR_ITEM_KEY_ALIAS = {}
42
+
43
+ # Updates the specified item attributes
44
+ #
45
+ # Uses `SetItemField` if value is present and `DeleteItemField` if value is nil
46
+ # @param updates [Hash] with (:attribute => value)
47
+ # @param options [Hash]
48
+ # @option options :conflict_resolution [String] one of 'NeverOverwrite', 'AutoResolve' (default) or 'AlwaysOverwrite'
49
+ # @option options :send_meeting_invitations_or_cancellations [String] one of 'SendToNone' (default), 'SendOnlyToAll',
50
+ # 'SendOnlyToChanged', 'SendToAllAndSaveCopy' or 'SendToChangedAndSaveCopy'
51
+ # @return [CalendarItem, false]
52
+ # @example Update Subject and Body
53
+ # item = #...
54
+ # item.update_item!(subject: 'New subject', body: 'New Body')
55
+ # @see http://msdn.microsoft.com/en-us/library/exchange/aa580254.aspx
56
+ # @todo AppendToItemField updates not implemented
57
+ def update_item!(updates, options = {})
58
+ item_updates = []
59
+ updates.each do |attribute, value|
60
+ item_field = FIELD_URIS[attribute][:text] if FIELD_URIS.include? attribute
61
+ field = {field_uRI: {field_uRI: item_field}}
62
+
63
+ if value.nil? && item_field
64
+ # Build DeleteItemField Change
65
+ item_updates << {delete_item_field: field}
66
+ elsif item_field
67
+ # Build SetItemField Change
68
+ item = Viewpoint::EWS::Template::CalendarItem.new(attribute => value)
69
+
70
+ # Remap attributes because ews_builder #dispatch_field_item! uses #build_xml!
71
+ item_attributes = item.to_ews_item.map do |name, value|
72
+ if value.is_a? String
73
+ {name => {text: value}}
74
+ elsif value.is_a? Hash
75
+ node = {name => {}}
76
+ value.each do |attrib_key, attrib_value|
77
+ attrib_key = camel_case(attrib_key) unless attrib_key == :text
78
+ node[name][attrib_key] = attrib_value
79
+ end
80
+ node
81
+ else
82
+ {name => value}
83
+ end
84
+ end
85
+
86
+ item_updates << {set_item_field: field.merge(calendar_item: {sub_elements: item_attributes})}
87
+ else
88
+ # Ignore unknown attribute
89
+ end
90
+ end
91
+
92
+ if item_updates.any?
93
+ data = {}
94
+ data[:conflict_resolution] = options[:conflict_resolution] || 'AutoResolve'
95
+ data[:send_meeting_invitations_or_cancellations] = options[:send_meeting_invitations_or_cancellations] || 'SendToNone'
96
+ data[:send_meeting_invitations_or_cancellations_specified] = true if data[:send_meeting_invitations_or_cancellations] != 'SendToNone'
97
+ data[:item_changes] = [{item_id: self.item_id, updates: item_updates}]
98
+ rm = ews.update_item(data).response_messages.first
99
+ if rm && rm.success?
100
+ self.get_all_properties!
101
+ self
102
+ elsif rm
103
+ raise EwsCreateItemError, "Could not update calendar item. #{rm.code}: #{rm.message_text}"
104
+ else
105
+ raise StandardError("No response message received.")
106
+ end
107
+ end
108
+
109
+ end
110
+
111
+ def duration_in_seconds
112
+ iso8601_duration_to_seconds(duration)
113
+ end
114
+
115
+
116
+ private
117
+
118
+
119
+ def key_paths
120
+ super.merge(CALENDAR_ITEM_KEY_PATHS)
121
+ end
122
+
123
+ def key_types
124
+ super.merge(CALENDAR_ITEM_KEY_TYPES)
125
+ end
126
+
127
+ def key_alias
128
+ super.merge(CALENDAR_ITEM_KEY_ALIAS)
129
+ end
130
+
131
+
132
+ end
133
+ end
@@ -0,0 +1,7 @@
1
+ module Viewpoint::EWS::Types
2
+ class Contact
3
+ include Viewpoint::EWS
4
+ include Viewpoint::EWS::Types
5
+ include Viewpoint::EWS::Types::Item
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module Viewpoint::EWS::Types
2
+ class ContactsFolder
3
+ include Viewpoint::EWS
4
+ include Viewpoint::EWS::Types
5
+ include Viewpoint::EWS::Types::GenericFolder
6
+
7
+ end
8
+ end
@@ -0,0 +1,51 @@
1
+ =begin
2
+ This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ module Viewpoint::EWS::Types
20
+
21
+ class CopiedEvent < Event
22
+
23
+ COPIED_EVENT_KEY_PATHS = {
24
+ :old_item_id => [:old_item_id, :attribs],
25
+ :old_folder_id => [:old_folder_id, :attribs],
26
+ :old_parent_folder_id => [:old_parent_folder_id, :attribs],
27
+ }
28
+
29
+ COPIED_EVENT_KEY_TYPES = {
30
+ }
31
+
32
+ COPIED_EVENT_KEY_ALIAS = { }
33
+
34
+
35
+ private
36
+
37
+
38
+ def key_paths
39
+ @key_paths ||= super.merge COPIED_EVENT_KEY_PATHS
40
+ end
41
+
42
+ def key_types
43
+ @key_types ||= super.merge COPIED_EVENT_KEY_TYPES
44
+ end
45
+
46
+ def key_alias
47
+ @key_alias ||= super.merge COPIED_EVENT_KEY_ALIAS
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,24 @@
1
+ =begin
2
+ This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ module Viewpoint::EWS::Types
20
+
21
+ class CreatedEvent < Event
22
+
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ =begin
2
+ This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ module Viewpoint::EWS::Types
20
+
21
+ class DeletedEvent < Event
22
+
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ module Viewpoint::EWS::Types
2
+ class DistributionList
3
+ include Viewpoint::EWS
4
+ include Viewpoint::EWS::Types
5
+ include Viewpoint::EWS::Types::Item
6
+ end
7
+ end
@@ -0,0 +1,62 @@
1
+ =begin
2
+ This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
3
+
4
+ Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ =end
18
+
19
+ module Viewpoint::EWS::Types
20
+
21
+ class Event
22
+ include Viewpoint::EWS
23
+ include Viewpoint::EWS::Types
24
+ include Viewpoint::EWS::Types::Item
25
+
26
+ EVENT_KEY_PATHS = {
27
+ :watermark => [:watermark, :text],
28
+ :timestamp => [:time_stamp, :text],
29
+ :item_id => [:item_id, :attribs],
30
+ :folder_id => [:folder_id, :attribs],
31
+ :parent_folder_id => [:parent_folder_id, :attribs],
32
+ }
33
+
34
+ EVENT_KEY_TYPES = {
35
+ :timestamp => ->(ts){ DateTime.iso8601(ts) }
36
+ }
37
+
38
+ EVENT_KEY_ALIAS = { }
39
+
40
+ def initialize(ews, event)
41
+ @ews = ews
42
+ super(ews, event)
43
+ end
44
+
45
+
46
+ private
47
+
48
+
49
+ def key_paths
50
+ @key_paths ||= EVENT_KEY_PATHS
51
+ end
52
+
53
+ def key_types
54
+ @key_types ||= EVENT_KEY_TYPES
55
+ end
56
+
57
+ def key_alias
58
+ @key_alias ||= EVENT_KEY_ALIAS
59
+ end
60
+
61
+ end
62
+ end