stxt-viewpoint 1.0.0.beta.3
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/Changelog.txt +1004 -0
- data/README.md +201 -0
- data/TODO +17 -0
- data/lib/ews/calendar_accessors.rb +46 -0
- data/lib/ews/connection.rb +120 -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 +101 -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 +92 -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/builders/ews_builder.rb +1257 -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/soap.rb +63 -0
- data/lib/ews/templates/calendar_item.rb +78 -0
- data/lib/ews/templates/forward_item.rb +24 -0
- data/lib/ews/templates/message.rb +73 -0
- data/lib/ews/templates/reply_to_item.rb +25 -0
- data/lib/ews/templates/task.rb +74 -0
- data/lib/ews/types/attachment.rb +77 -0
- data/lib/ews/types/attendee.rb +27 -0
- data/lib/ews/types/calendar_folder.rb +50 -0
- data/lib/ews/types/calendar_item.rb +122 -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 +420 -0
- data/lib/ews/types/item.rb +438 -0
- data/lib/ews/types/item_attachment.rb +84 -0
- data/lib/ews/types/item_field_uri_map.rb +224 -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/search_folder.rb +8 -0
- data/lib/ews/types/status_event.rb +39 -0
- data/lib/ews/types/task.rb +37 -0
- data/lib/ews/types/tasks_folder.rb +27 -0
- data/lib/ews/types.rb +191 -0
- data/lib/viewpoint/logging/config.rb +24 -0
- data/lib/viewpoint/logging.rb +27 -0
- data/lib/viewpoint/string_utils.rb +44 -0
- data/lib/viewpoint.rb +109 -0
- metadata +191 -0
@@ -0,0 +1,93 @@
|
|
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
|
+
module Viewpoint::EWS::MessageAccessors
|
19
|
+
include Viewpoint::EWS
|
20
|
+
|
21
|
+
# Send an E-mail message
|
22
|
+
#
|
23
|
+
# @param [Hash] opts A Hash with message params
|
24
|
+
# @option opts [String] :subject The message subject
|
25
|
+
# @option opts [String] :body The message body
|
26
|
+
# @option opts [Array] :to_recipients An array of e-mail addresses to send to
|
27
|
+
# @option opts [Array] :cc_recipients An array of e-mail addresses to send to
|
28
|
+
# @option opts [Array] :bcc_recipients An array of e-mail addresses to send to
|
29
|
+
# @option opts [Array] :extended_properties An array of extended properties
|
30
|
+
# [{extended_field_uri: {epros}, value: <val>}] or values: [<val>, <val>]
|
31
|
+
# @option opts [Boolean] :draft if true it will save to the draft folder
|
32
|
+
# without sending the message.
|
33
|
+
# @option opts [String,Symbol,Hash] saved_item_folder_id Either a
|
34
|
+
# FolderId(String) or a DistinguishedFolderId(Symbol). You can also pass a
|
35
|
+
# Hash in the form: {id: <fold_id>, change_key: <change_key>}
|
36
|
+
# @option opts [Array<File>] :file_attachments an Array of File or Tempfile objects
|
37
|
+
# @option opts [Array<File>] :inline_attachments an Array of Inline File or Tempfile objects
|
38
|
+
# @return [Message,Boolean] Returns true if the message is sent, false if
|
39
|
+
# nothing is returned from EWS or if draft is true it will return the
|
40
|
+
# Message object. Finally, if something goes wrong, it raises an error
|
41
|
+
# with a message stating why the e-mail could not be sent.
|
42
|
+
# @todo Finish ItemAttachments
|
43
|
+
def send_message(opts = {}, &block)
|
44
|
+
msg = Template::Message.new opts.clone
|
45
|
+
yield msg if block_given?
|
46
|
+
if msg.has_attachments?
|
47
|
+
draft = msg.draft
|
48
|
+
msg.draft = true
|
49
|
+
resp = parse_create_item(ews.create_item(msg.to_ews))
|
50
|
+
msg.file_attachments.each do |f|
|
51
|
+
next unless f.kind_of?(File) or f.kind_of?(Tempfile)
|
52
|
+
resp.add_file_attachment(f)
|
53
|
+
end
|
54
|
+
msg.inline_attachments.each do |f|
|
55
|
+
next unless f.kind_of?(File) or f.kind_of?(Tempfile)
|
56
|
+
resp.add_inline_attachment(f)
|
57
|
+
end
|
58
|
+
if draft
|
59
|
+
resp.submit_attachments!
|
60
|
+
resp
|
61
|
+
else
|
62
|
+
resp.submit!
|
63
|
+
end
|
64
|
+
else
|
65
|
+
resp = ews.create_item(msg.to_ews)
|
66
|
+
resp.response_messages ? parse_create_item(resp) : false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# See #send_message for options
|
71
|
+
def draft_message(opts = {}, &block)
|
72
|
+
send_message opts.merge(draft: true), &block
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
|
79
|
+
def parse_create_item(resp)
|
80
|
+
rm = resp.response_messages[0]
|
81
|
+
if(rm.status == 'Success')
|
82
|
+
rm.items.empty? ? true : parse_message(rm.items.first)
|
83
|
+
else
|
84
|
+
raise EwsError, "Could not send message. #{rm.code}: #{rm.message_text}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def parse_message(msg)
|
89
|
+
mtype = msg.keys.first
|
90
|
+
message = class_by_name(mtype).new(ews, msg[mtype])
|
91
|
+
end
|
92
|
+
|
93
|
+
end # Viewpoint::EWS::MessageAccessors
|
@@ -0,0 +1,33 @@
|
|
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::PushSubscriptionAccessors
|
20
|
+
include Viewpoint::EWS
|
21
|
+
|
22
|
+
def parse_send_notification(msg)
|
23
|
+
parser = Viewpoint::EWS::SOAP::EwsParser.new(msg)
|
24
|
+
resp = parser.parse response_class: Viewpoint::EWS::SOAP::EwsResponse
|
25
|
+
rmsg = resp.response_messages[0]
|
26
|
+
if rmsg.success?
|
27
|
+
rmsg
|
28
|
+
else
|
29
|
+
raise EwsSubscriptionError, "#{rmsg.code}: #{rmsg.message_text}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end # Viewpoint::EWS::PushSubscriptionAccessors
|
@@ -0,0 +1,48 @@
|
|
1
|
+
=begin
|
2
|
+
This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
|
3
|
+
|
4
|
+
Copyright © 2013 Camille Baldock <viewpoint@camillebaldock.co.uk>
|
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::RoomAccessors
|
20
|
+
include Viewpoint::EWS
|
21
|
+
|
22
|
+
# Gets the rooms that are available within the specified room distribution list
|
23
|
+
# @see http://msdn.microsoft.com/en-us/library/dd899415.aspx
|
24
|
+
# @param [String] roomDistributionList
|
25
|
+
def get_rooms(roomDistributionList)
|
26
|
+
resp = ews.get_rooms(roomDistributionList)
|
27
|
+
get_rooms_parser(resp)
|
28
|
+
end
|
29
|
+
|
30
|
+
def room_name( room )
|
31
|
+
room[:room][:elems][:id][:elems][0][:name][:text]
|
32
|
+
end
|
33
|
+
|
34
|
+
def room_email( room )
|
35
|
+
room[:room][:elems][:id][:elems][1][:email_address][:text]
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def get_rooms_parser(resp)
|
41
|
+
if resp.success?
|
42
|
+
resp
|
43
|
+
else
|
44
|
+
raise EwsError, "GetRooms produced an error: #{resp.code}: #{resp.message}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end # Viewpoint::EWS::RoomAccessors
|
@@ -0,0 +1,47 @@
|
|
1
|
+
=begin
|
2
|
+
This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
|
3
|
+
|
4
|
+
Copyright © 2013 Camille Baldock <viewpoint@camillebaldock.co.uk>
|
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::RoomlistAccessors
|
20
|
+
include Viewpoint::EWS
|
21
|
+
|
22
|
+
# Gets the room lists that are available within the Exchange organization.
|
23
|
+
# @see http://msdn.microsoft.com/en-us/library/dd899416.aspx
|
24
|
+
def get_room_lists
|
25
|
+
resp = ews.get_room_lists
|
26
|
+
get_room_lists_parser(resp)
|
27
|
+
end
|
28
|
+
|
29
|
+
def roomlist_name( roomlist )
|
30
|
+
roomlist[:address][:elems][:name][:text]
|
31
|
+
end
|
32
|
+
|
33
|
+
def roomlist_email( roomlist )
|
34
|
+
roomlist[:address][:elems][:email_address][:text]
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def get_room_lists_parser(resp)
|
40
|
+
if resp.success?
|
41
|
+
resp
|
42
|
+
else
|
43
|
+
raise EwsError, "GetRoomLists produced an error: #{resp.code}: #{resp.message}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end # Viewpoint::EWS::RoomlistAccessors
|