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.
- checksums.yaml +7 -0
- data/README.md +216 -0
- data/lib/ews/calendar_accessors.rb +34 -0
- data/lib/ews/connection.rb +130 -0
- data/lib/ews/connection_helper.rb +35 -0
- data/lib/ews/convert_accessors.rb +56 -0
- data/lib/ews/errors.rb +56 -0
- data/lib/ews/ews_client.rb +103 -0
- data/lib/ews/exceptions/exceptions.rb +61 -0
- data/lib/ews/folder_accessors.rb +264 -0
- data/lib/ews/impersonation.rb +30 -0
- data/lib/ews/item_accessors.rb +231 -0
- data/lib/ews/mailbox_accessors.rb +99 -0
- data/lib/ews/message_accessors.rb +93 -0
- data/lib/ews/push_subscription_accessors.rb +33 -0
- data/lib/ews/room_accessors.rb +48 -0
- data/lib/ews/roomlist_accessors.rb +47 -0
- data/lib/ews/soap.rb +64 -0
- data/lib/ews/soap/builders/ews_builder.rb +1351 -0
- data/lib/ews/soap/ews_response.rb +84 -0
- data/lib/ews/soap/ews_soap_availability_response.rb +58 -0
- data/lib/ews/soap/ews_soap_free_busy_response.rb +119 -0
- data/lib/ews/soap/ews_soap_response.rb +103 -0
- data/lib/ews/soap/ews_soap_room_response.rb +53 -0
- data/lib/ews/soap/ews_soap_roomlist_response.rb +54 -0
- data/lib/ews/soap/exchange_availability.rb +61 -0
- data/lib/ews/soap/exchange_data_services.rb +780 -0
- data/lib/ews/soap/exchange_notification.rb +146 -0
- data/lib/ews/soap/exchange_synchronization.rb +93 -0
- data/lib/ews/soap/exchange_time_zones.rb +56 -0
- data/lib/ews/soap/exchange_user_configuration.rb +33 -0
- data/lib/ews/soap/exchange_web_service.rb +264 -0
- data/lib/ews/soap/parsers/ews_parser.rb +43 -0
- data/lib/ews/soap/parsers/ews_sax_document.rb +70 -0
- data/lib/ews/soap/response_message.rb +80 -0
- data/lib/ews/soap/responses/create_attachment_response_message.rb +47 -0
- data/lib/ews/soap/responses/create_item_response_message.rb +25 -0
- data/lib/ews/soap/responses/find_item_response_message.rb +80 -0
- data/lib/ews/soap/responses/get_events_response_message.rb +53 -0
- data/lib/ews/soap/responses/send_notification_response_message.rb +59 -0
- data/lib/ews/soap/responses/subscribe_response_message.rb +35 -0
- data/lib/ews/soap/responses/sync_folder_hierarchy_response_message.rb +36 -0
- data/lib/ews/soap/responses/sync_folder_items_response_message.rb +36 -0
- data/lib/ews/templates/calendar_item.rb +79 -0
- data/lib/ews/templates/forward_item.rb +24 -0
- data/lib/ews/templates/message.rb +76 -0
- data/lib/ews/templates/reply_to_item.rb +25 -0
- data/lib/ews/templates/task.rb +74 -0
- data/lib/ews/types.rb +194 -0
- data/lib/ews/types/attachment.rb +77 -0
- data/lib/ews/types/attendee.rb +41 -0
- data/lib/ews/types/calendar_folder.rb +50 -0
- data/lib/ews/types/calendar_item.rb +133 -0
- data/lib/ews/types/contact.rb +7 -0
- data/lib/ews/types/contacts_folder.rb +8 -0
- data/lib/ews/types/copied_event.rb +51 -0
- data/lib/ews/types/created_event.rb +24 -0
- data/lib/ews/types/deleted_event.rb +24 -0
- data/lib/ews/types/distribution_list.rb +7 -0
- data/lib/ews/types/event.rb +62 -0
- data/lib/ews/types/export_items_response_message.rb +52 -0
- data/lib/ews/types/file_attachment.rb +65 -0
- data/lib/ews/types/folder.rb +60 -0
- data/lib/ews/types/free_busy_changed_event.rb +24 -0
- data/lib/ews/types/generic_folder.rb +418 -0
- data/lib/ews/types/item.rb +450 -0
- data/lib/ews/types/item_attachment.rb +84 -0
- data/lib/ews/types/item_field_uri_map.rb +208 -0
- data/lib/ews/types/mailbox_user.rb +156 -0
- data/lib/ews/types/meeting_cancellation.rb +7 -0
- data/lib/ews/types/meeting_message.rb +7 -0
- data/lib/ews/types/meeting_request.rb +7 -0
- data/lib/ews/types/meeting_response.rb +7 -0
- data/lib/ews/types/message.rb +7 -0
- data/lib/ews/types/modified_event.rb +48 -0
- data/lib/ews/types/moved_event.rb +51 -0
- data/lib/ews/types/new_mail_event.rb +24 -0
- data/lib/ews/types/out_of_office.rb +147 -0
- data/lib/ews/types/post_item.rb +7 -0
- data/lib/ews/types/search_folder.rb +8 -0
- data/lib/ews/types/status_event.rb +39 -0
- data/lib/ews/types/task.rb +104 -0
- data/lib/ews/types/tasks_folder.rb +27 -0
- data/lib/viewpoint/logging.rb +27 -0
- data/lib/viewpoint/logging/config.rb +24 -0
- data/lib/viewpoint/string_utils.rb +76 -0
- data/lib/viewpoint2.rb +111 -0
- 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,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,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
|