viewpoint 0.1.26 → 1.1.1
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 +203 -0
- data/lib/ews/calendar_accessors.rb +34 -0
- data/lib/ews/connection.rb +140 -0
- data/lib/ews/connection_helper.rb +35 -0
- data/lib/ews/convert_accessors.rb +56 -0
- data/lib/{exceptions/exceptions.rb → ews/errors.rb} +29 -19
- data/lib/ews/ews_client.rb +105 -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 +242 -0
- data/lib/ews/mailbox_accessors.rb +92 -0
- data/lib/ews/meeting_accessors.rb +39 -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 +1384 -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/{model/item_attachment.rb → ews/soap/parsers/ews_parser.rb} +24 -14
- 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/{model/meeting_message.rb → ews/soap/responses/create_item_response_message.rb} +7 -10
- 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/{model/attachment.rb → ews/soap/responses/subscribe_response_message.rb} +17 -13
- data/lib/{model/attendee.rb → ews/soap/responses/sync_folder_hierarchy_response_message.rb} +14 -15
- 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 +85 -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/{model/meeting_cancellation.rb → ews/types/attendee.rb} +9 -8
- data/lib/ews/types/calendar_folder.rb +50 -0
- data/lib/ews/types/calendar_item.rb +130 -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/{soap/handsoap/builder.rb → ews/types/created_event.rb} +5 -2
- 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 +447 -0
- data/lib/ews/types/item_attachment.rb +84 -0
- data/lib/{model → ews/types}/item_field_uri_map.rb +2 -18
- 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/{extensions/string.rb → ews/types/moved_event.rb} +31 -15
- 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 +41 -0
- data/lib/ews/types/tasks_folder.rb +27 -0
- data/lib/viewpoint.rb +85 -108
- data/lib/{model/distribution_list.rb → viewpoint/logging.rb} +6 -3
- data/lib/{model/meeting_response.rb → viewpoint/logging/config.rb} +3 -3
- data/lib/viewpoint/string_utils.rb +76 -0
- metadata +156 -123
- data/README +0 -114
- data/lib/model/calendar_folder.rb +0 -67
- data/lib/model/calendar_item.rb +0 -267
- data/lib/model/contact.rb +0 -238
- data/lib/model/contacts_folder.rb +0 -46
- data/lib/model/event.rb +0 -116
- data/lib/model/file_attachment.rb +0 -53
- data/lib/model/folder.rb +0 -47
- data/lib/model/generic_folder.rb +0 -461
- data/lib/model/item.rb +0 -312
- data/lib/model/mailbox_user.rb +0 -146
- data/lib/model/meeting_request.rb +0 -39
- data/lib/model/message.rb +0 -142
- data/lib/model/model.rb +0 -269
- data/lib/model/search_folder.rb +0 -48
- data/lib/model/task.rb +0 -121
- data/lib/model/tasks_folder.rb +0 -44
- data/lib/soap/handsoap/builders/ews_build_helpers.rb +0 -383
- data/lib/soap/handsoap/builders/ews_builder.rb +0 -146
- data/lib/soap/handsoap/ews_service.rb +0 -790
- data/lib/soap/handsoap/parser.rb +0 -104
- data/lib/soap/handsoap/parsers/ews_parser.rb +0 -245
- data/lib/soap/soap_provider.rb +0 -64
data/lib/soap/handsoap/parser.rb
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
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
|
|
20
|
-
module EWS
|
|
21
|
-
module SOAP
|
|
22
|
-
module Parser
|
|
23
|
-
|
|
24
|
-
def initialize(response)
|
|
25
|
-
# Unwrap SOAP Envelope
|
|
26
|
-
@response = response
|
|
27
|
-
@response_type = (response/"//#{NS_SOAP}:Body/*").first.node_name
|
|
28
|
-
|
|
29
|
-
rmsg = (response/'//*[@ResponseClass]').first
|
|
30
|
-
@response_message = EwsSoapResponse.new(rmsg['ResponseClass'],
|
|
31
|
-
(rmsg/'m:ResponseCode/text()').first.to_s,
|
|
32
|
-
(rmsg/'m:MessageText/text()').first.to_s)
|
|
33
|
-
|
|
34
|
-
@response_message.set_soap_resp(response)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# This is the main parser method. It takes the response type and tries to
|
|
38
|
-
# call a Ruby method of the same name.
|
|
39
|
-
# @todo Decide on an appropriate response if a method does not exist.
|
|
40
|
-
def parse(opts)
|
|
41
|
-
resp_method = @response_type.ruby_case
|
|
42
|
-
if(respond_to?(resp_method))
|
|
43
|
-
puts "Method Exists: #{resp_method}" if $DEBUG
|
|
44
|
-
method(resp_method).call(opts)
|
|
45
|
-
else
|
|
46
|
-
puts "No Method: #{resp_method}" if $DEBUG
|
|
47
|
-
end
|
|
48
|
-
@response_message
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def method_exists?(method_name)
|
|
54
|
-
return self.methods.include?(method_name)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Create a Hash from a Nokogiri element tree
|
|
58
|
-
# @param [Nokogiri::XML::Element, Nokogiri::XML::Text] nokoelem The Nokogiri element passed to this method
|
|
59
|
-
# @example XML
|
|
60
|
-
# <tiptop>
|
|
61
|
-
# <top Id="32fss">TestText</top>
|
|
62
|
-
# <middle Id='TestTestMiddle' />
|
|
63
|
-
# <bottom />
|
|
64
|
-
# </tiptop>
|
|
65
|
-
# becomes...
|
|
66
|
-
# {:tiptop=>{:top=>{:id=>"32fss", :text=>"TestText"}, :middle=>{:id=>"TestTestMiddle"}}}
|
|
67
|
-
def xml_to_hash!(nokoelem)
|
|
68
|
-
e_hash = {}
|
|
69
|
-
node_name = nokoelem.name.ruby_case.to_sym
|
|
70
|
-
|
|
71
|
-
if nokoelem.is_a? Nokogiri::XML::Element
|
|
72
|
-
nokoelem.attributes.each_pair do |k, v|
|
|
73
|
-
e_hash[k.ruby_case.to_sym] = v.value
|
|
74
|
-
end
|
|
75
|
-
nokoelem.children.each do |c|
|
|
76
|
-
new_hash = xml_to_hash!(c)
|
|
77
|
-
unless new_hash.nil?
|
|
78
|
-
e_hash.merge!(new_hash) do |k,v1,v2|
|
|
79
|
-
if(v1.is_a?(Array))
|
|
80
|
-
v1 << v2
|
|
81
|
-
else
|
|
82
|
-
[v1, v2]
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
return e_hash.empty? ? nil : {node_name => e_hash}
|
|
88
|
-
elsif nokoelem.is_a? Nokogiri::XML::Text
|
|
89
|
-
# Return a :text to value hash or nil if the text is empty
|
|
90
|
-
return {node_name => nokoelem.text} if nokoelem.text != "\n"
|
|
91
|
-
nil
|
|
92
|
-
else
|
|
93
|
-
# If something strange gets passed just return nil
|
|
94
|
-
return nil
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
end # Parser
|
|
100
|
-
end # SOAP
|
|
101
|
-
end # SPWS
|
|
102
|
-
end # Viewpoint
|
|
103
|
-
|
|
104
|
-
require 'soap/handsoap/parsers/ews_parser'
|
|
@@ -1,245 +0,0 @@
|
|
|
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
|
|
20
|
-
module EWS
|
|
21
|
-
module SOAP
|
|
22
|
-
class EwsParser
|
|
23
|
-
include Parser
|
|
24
|
-
|
|
25
|
-
# Parsing Methods
|
|
26
|
-
# ---------------
|
|
27
|
-
|
|
28
|
-
def resolve_names_response(opts)
|
|
29
|
-
@response_message.items = resolution_set
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def get_folder_response(opts)
|
|
33
|
-
@response_message.items = folders
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def find_folder_response(opts)
|
|
37
|
-
folders = []
|
|
38
|
-
(@response/"//#{NS_EWS_MESSAGES}:FindFolderResponseMessage//#{NS_EWS_TYPES}:Folders/*").each do |f|
|
|
39
|
-
folders << xml_to_hash!(f.native_element)
|
|
40
|
-
end
|
|
41
|
-
@response_message.items = folders
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def create_folder_response(opts)
|
|
45
|
-
if(@response_message.status == 'Success')
|
|
46
|
-
folders = []
|
|
47
|
-
(@response/"//#{NS_EWS_MESSAGES}:Folders/*").each do |f|
|
|
48
|
-
folders << xml_to_hash!(f.native_element)
|
|
49
|
-
end
|
|
50
|
-
@response_message.items = folders
|
|
51
|
-
else
|
|
52
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def delete_folder_response(opts)
|
|
57
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}" unless @response_message.status == 'Success'
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def get_events_response(opts)
|
|
61
|
-
if @response_message.status == 'Success'
|
|
62
|
-
events = []
|
|
63
|
-
events << {}
|
|
64
|
-
events.first[:subscription_id] = (@response/"//#{NS_EWS_MESSAGES}:Notification/#{NS_EWS_TYPES}:SubscriptionId").first.to_s
|
|
65
|
-
events.first[:more_events] = (@response/"//#{NS_EWS_MESSAGES}:Notification/#{NS_EWS_TYPES}:SubscriptionId").first.to_boolean
|
|
66
|
-
|
|
67
|
-
(@response/"//#{NS_EWS_MESSAGES}:Notification/*[position()>3]").each do |e|
|
|
68
|
-
events << xml_to_hash!(e.native_element)
|
|
69
|
-
events.first[:watermark] = events.last[events.last.keys.first][:watermark][:text]
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
@response_message.items = events
|
|
73
|
-
else
|
|
74
|
-
raise EwsSubscriptionTimeout.new("#{@response_message.code}: #{@response_message.message}")
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def find_item_response(opts)
|
|
79
|
-
items = []
|
|
80
|
-
items << {}
|
|
81
|
-
items.first[:total_items_in_view] = (@response/"//#{NS_EWS_MESSAGES}:FindItemResponseMessage/#{NS_EWS_MESSAGES}:RootFolder/@TotalItemsInView").first.to_i
|
|
82
|
-
|
|
83
|
-
(@response/"//#{NS_EWS_MESSAGES}:FindItemResponseMessage//#{NS_EWS_TYPES}:Items/*").each do |i|
|
|
84
|
-
items << xml_to_hash!(i.native_element)
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
@response_message.items = items
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Parsers the response from the SOAP Subscribe operation
|
|
91
|
-
# @see http://msdn.microsoft.com/en-us/library/aa566188.aspx
|
|
92
|
-
#
|
|
93
|
-
# @return [Hash] A hash with the keys :watermark and :subscription_id
|
|
94
|
-
# @raise [EwsError] Raise an error if the ResponseClass is not Success
|
|
95
|
-
def subscribe_response(opts)
|
|
96
|
-
subscription = []
|
|
97
|
-
sid = xml_to_hash!((@response/"//#{NS_EWS_MESSAGES}:SubscriptionId").first.native_element)
|
|
98
|
-
wmk = xml_to_hash!((@response/"//#{NS_EWS_MESSAGES}:Watermark").first.native_element)
|
|
99
|
-
subscription << sid.merge(wmk)
|
|
100
|
-
@response_message.items = subscription
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# @todo Better handle error messages
|
|
104
|
-
def unsubscribe_response(opts)
|
|
105
|
-
@response_message
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def get_item_response(opts)
|
|
109
|
-
if(@response_message.status == 'Success')
|
|
110
|
-
(@response/"//#{NS_EWS_MESSAGES}:Items/*").each do |item|
|
|
111
|
-
@response_message.items << xml_to_hash!(item.native_element)
|
|
112
|
-
end
|
|
113
|
-
else
|
|
114
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def copy_item_response(opts)
|
|
119
|
-
if(@response_message.status == 'Success')
|
|
120
|
-
@response_message.items << xml_to_hash!((@response/"//#{NS_EWS_MESSAGES}:Items/*").first.native_element)
|
|
121
|
-
else
|
|
122
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def move_item_response(opts)
|
|
127
|
-
if(@response_message.status == 'Success')
|
|
128
|
-
@response_message.items << xml_to_hash!((@response/"//#{NS_EWS_MESSAGES}:Items/*").first.native_element)
|
|
129
|
-
else
|
|
130
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
# @todo need to find out out to us XPath to get ItemId. It doesn't seem to work now.
|
|
135
|
-
def create_item_response(opts)
|
|
136
|
-
if(@response_message.status == 'Success')
|
|
137
|
-
items = []
|
|
138
|
-
(@response/"//#{NS_EWS_MESSAGES}:Items/*").each do |i|
|
|
139
|
-
items << xml_to_hash!(i.native_element)
|
|
140
|
-
end
|
|
141
|
-
@response_message.items = items
|
|
142
|
-
else
|
|
143
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
def update_item_response(opts)
|
|
148
|
-
create_item_response(opts)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def send_item_response(opts)
|
|
152
|
-
if(@response_message.status == 'Success')
|
|
153
|
-
items = []
|
|
154
|
-
(@response/"//#{NS_EWS_MESSAGES}:Items/*").each do |i|
|
|
155
|
-
items << xml_to_hash!(i.native_element)
|
|
156
|
-
end
|
|
157
|
-
@response_message.items = items
|
|
158
|
-
else
|
|
159
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
def get_attachment_response(opts)
|
|
164
|
-
atts = []
|
|
165
|
-
if(@response_message.status == 'Success')
|
|
166
|
-
att_id = (@response/"//#{NS_EWS_MESSAGES}:Attachments/*").each do |a|
|
|
167
|
-
atts << xml_to_hash!(a.native_element)
|
|
168
|
-
end
|
|
169
|
-
@response_message.items = atts
|
|
170
|
-
#@response_message.items = @response
|
|
171
|
-
else
|
|
172
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def create_attachment_response(opts)
|
|
177
|
-
if(@response_message.status == 'Success')
|
|
178
|
-
att_id = (@response/"//#{NS_EWS_TYPES}:FileAttachment/*").last
|
|
179
|
-
att_id = xml_to_hash!(att_id.native_element)
|
|
180
|
-
@response_message.items = [att_id]
|
|
181
|
-
else
|
|
182
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def sync_folder_items_response(opts)
|
|
187
|
-
if(@response_message.status == 'Success')
|
|
188
|
-
sync = []
|
|
189
|
-
sync << {}
|
|
190
|
-
sync.first[:sync_state] = (@response/"//#{NS_EWS_MESSAGES}:SyncState").first.to_s
|
|
191
|
-
sync.first[:includes_last_item_in_range] = (@response/"//#{NS_EWS_MESSAGES}:IncludesLastItemInRange").first.to_boolean
|
|
192
|
-
(@response/"//m:Changes/*").each do |c|
|
|
193
|
-
sync << xml_to_hash!(c.native_element)
|
|
194
|
-
end
|
|
195
|
-
@response_message.items = sync
|
|
196
|
-
else
|
|
197
|
-
raise EwsError, "#{@response_message.code}: #{@response_message.message}"
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
def get_user_oof_settings_response(opts)
|
|
202
|
-
@response_message.items = xml_to_hash!((@response/"//#{NS_EWS_TYPES}:OofSettings").first.native_element)
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
# Parse out the free/busy time.
|
|
206
|
-
# @see http://msdn.microsoft.com/en-us/library/aa494212.aspx
|
|
207
|
-
def get_user_availability_response(opts)
|
|
208
|
-
@response_message.items = xml_to_hash!((@response/"//#{NS_EWS_MESSAGES}:FreeBusyView").first.native_element)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
# Parse out a Mailbox element
|
|
212
|
-
# @param [XML] mbox The <t:Mailbox> element
|
|
213
|
-
# @return [Hash] Values of EWS Mailbox type :name, :email_address, :routing_type, :mailbox_type, :item_id
|
|
214
|
-
def mailbox(mbox_xml)
|
|
215
|
-
xml_to_hash!(mbox_xml.native_element)
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
def contact(contact_xml)
|
|
219
|
-
xml_to_hash!(contact_xml.native_element)
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
# Parse out Resolutions from a ResolutionSet from the ResolveNames operation
|
|
223
|
-
# @return [Array] An array of :mailbox,:contact Hashes that resolved.
|
|
224
|
-
def resolution_set
|
|
225
|
-
resolution_set = []
|
|
226
|
-
(@response/"//#{NS_EWS_MESSAGES}:ResolutionSet/*").each do |r|
|
|
227
|
-
mbox_hash = mailbox((r/"#{NS_EWS_TYPES}:Mailbox").first)
|
|
228
|
-
contact_hash = contact((r/"#{NS_EWS_TYPES}:Contact").first)
|
|
229
|
-
resolution_set << mbox_hash.merge(contact_hash)
|
|
230
|
-
end
|
|
231
|
-
resolution_set
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
def folders
|
|
235
|
-
folders = []
|
|
236
|
-
(@response/"//#{NS_EWS_MESSAGES}:Folders/*").each do |f|
|
|
237
|
-
folders << xml_to_hash!(f.native_element)
|
|
238
|
-
end
|
|
239
|
-
folders
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
end # EwsParser
|
|
243
|
-
end # SOAP
|
|
244
|
-
end # EWS
|
|
245
|
-
end # Viewpoint
|
data/lib/soap/soap_provider.rb
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
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
|
-
# This file requires the appropriate SOAP Library (Handsoap today) and also
|
|
20
|
-
# defines certain contants that SOAP methods may use.
|
|
21
|
-
module Viewpoint
|
|
22
|
-
module EWS
|
|
23
|
-
module SOAP
|
|
24
|
-
|
|
25
|
-
# CONSTANTS
|
|
26
|
-
|
|
27
|
-
NS_SOAP = 'soap' # http://schemas.xmlsoap.org/soap/envelope/
|
|
28
|
-
NS_EWS_TYPES = 't' # http://schemas.microsoft.com/exchange/services/2006/types
|
|
29
|
-
NS_EWS_MESSAGES = 'm' # http://schemas.microsoft.com/exchange/services/2006/messages
|
|
30
|
-
|
|
31
|
-
# used in ResolveNames to determine where names are resolved
|
|
32
|
-
ActiveDirectory = 'ActiveDirectory'
|
|
33
|
-
ActiveDirectoryContacts = 'ActiveDirectoryContacts'
|
|
34
|
-
Contacts = 'Contacts'
|
|
35
|
-
ContactsActiveDirectory = 'ContactsActiveDirectory'
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
# A Generic Class for SOAP returns.
|
|
40
|
-
# @attr_reader [String] :message The text from the EWS element <m:ResponseCode>
|
|
41
|
-
class EwsSoapResponse
|
|
42
|
-
|
|
43
|
-
attr_reader :status, :code, :message, :soap_response
|
|
44
|
-
attr_accessor :items
|
|
45
|
-
|
|
46
|
-
def initialize(status, code, message)
|
|
47
|
-
@status, @code, @message = status, code, message
|
|
48
|
-
|
|
49
|
-
# Items is an array where hash types get stored for return
|
|
50
|
-
@items = []
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def set_soap_resp(response)
|
|
54
|
-
@soap_response = response
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
end # EwsSoapResponse
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
end # SOAP
|
|
61
|
-
end # EWS
|
|
62
|
-
end # Viewpoint
|
|
63
|
-
|
|
64
|
-
require 'soap/handsoap/ews_service'
|