Class: EWS::Service
- Inherits:
-
Handsoap::Service
- Object
- Handsoap::Service
- EWS::Service
- Defined in:
- lib/ews/service.rb
Overview
Implementation of Exchange Web Services
Class Method Summary collapse
Instance Method Summary collapse
- #add_delegate! ⇒ Object
- #apply_namespaces!(doc) ⇒ Object
- #convert_id! ⇒ Object
- #copy_folder! ⇒ Object
- #copy_item! ⇒ Object
- #create_attachment! ⇒ Object
- #create_folder! ⇒ Object
- #create_item!(item, destination_folder_id, opts = {}) ⇒ Object
- #create_managed_folder! ⇒ Object
- #delete_attachment! ⇒ Object
- #delete_folder! ⇒ Object
- #delete_item! ⇒ Object
- #expand_dl! ⇒ Object
-
#find_folder(folder_ids = :root, opts = {}) ⇒ Object
Finds folders for the given parent folder.
-
#find_item(folder_ids = :root, opts = {}) ⇒ Object
FindItem - Exchange 2007.
-
#get_attachment(attachment_id, opts = {}) ⇒ Object
GetAttachment.
- #get_delegate ⇒ Object
- #get_events ⇒ Object
-
#get_folder(folder_id = :root, opts = {}) ⇒ Object
MSDN - GetFolder operation.
-
#get_item(item_id, opts = {}) ⇒ Object
GetItem (E-mail Message).
- #get_user_availability ⇒ Object
- #get_user_oof_settings ⇒ Object
- #move_folder! ⇒ Object
-
#move_item!(folder_id, item_id, opts = {}) ⇒ Object
</MoveItem>.
- #on_after_create_http_request(req) ⇒ Object
- #on_create_document(doc) ⇒ Object
- #on_response_document(doc) ⇒ Object
- #register_aliases!(doc) ⇒ Object
- #remove_delegate! ⇒ Object
-
#resolve_names!(unresolved_entry, return_full_contact_data = true) ⇒ Object
public methods.
- #send_item! ⇒ Object
- #set_auth(username, password) ⇒ Object
- #set_user_oof_settings! ⇒ Object
- #subscribe! ⇒ Object
- #sync_folder_hierarchy! ⇒ Object
- #sync_folder_items! ⇒ Object
- #unsubscribe! ⇒ Object
- #update_delegate! ⇒ Object
- #update_folder! ⇒ Object
- #update_item! ⇒ Object
Class Method Details
.endpoint(uri) ⇒ Object
13 14 15 |
# File 'lib/ews/service.rb', line 13 def self.endpoint(uri) super :uri => uri, :version => 1 end |
Instance Method Details
#add_delegate! ⇒ Object
403 404 405 406 407 408 |
# File 'lib/ews/service.rb', line 403 def add_delegate! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/AddDelegate' response = invoke('tns:AddDelegate', soap_action) do || raise "TODO" end end |
#apply_namespaces!(doc) ⇒ Object
43 44 45 46 47 |
# File 'lib/ews/service.rb', line 43 def apply_namespaces!(doc) doc.add_namespace 'soap', '"http://schemas.xmlsoap.org/soap/envelope' doc.add_namespace 't', 'http://schemas.microsoft.com/exchange/services/2006/types' doc.add_namespace 'm', 'http://schemas.microsoft.com/exchange/services/2006/messages' end |
#convert_id! ⇒ Object
133 134 135 136 137 138 |
# File 'lib/ews/service.rb', line 133 def convert_id! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/ConvertId' response = invoke('tns:ConvertId', soap_action) do || raise "TODO" end end |
#copy_folder! ⇒ Object
168 169 170 171 172 173 |
# File 'lib/ews/service.rb', line 168 def copy_folder! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/CopyFolder' response = invoke('tns:CopyFolder', soap_action) do || raise "TODO" end end |
#copy_item! ⇒ Object
351 352 353 354 355 356 |
# File 'lib/ews/service.rb', line 351 def copy_item! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/CopyItem' response = invoke('tns:CopyItem', soap_action) do || raise "TODO" end end |
#create_attachment! ⇒ Object
358 359 360 361 362 363 |
# File 'lib/ews/service.rb', line 358 def soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/CreateAttachment' response = invoke('tns:CreateAttachment', soap_action) do || raise "TODO" end end |
#create_folder! ⇒ Object
140 141 142 143 144 145 |
# File 'lib/ews/service.rb', line 140 def create_folder! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/CreateFolder' response = invoke('tns:CreateFolder', soap_action) do || raise "TODO" end end |
#create_item!(item, destination_folder_id, opts = {}) ⇒ Object
290 291 292 293 294 295 296 297 298 |
# File 'lib/ews/service.rb', line 290 def create_item!(item, destination_folder_id, opts = {}) soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/CreateItem' response = invoke('tns:CreateItem', soap_action) do |create_item| builder(create_item, opts) do folder_id_container! 'SavedItemFolderId', destination_folder_id end raise 'TODO' end end |
#create_managed_folder! ⇒ Object
210 211 212 213 214 215 |
# File 'lib/ews/service.rb', line 210 def create_managed_folder! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/CreateManagedFolder' response = invoke('tns:CreateManagedFolder', soap_action) do || raise "TODO" end end |
#delete_attachment! ⇒ Object
365 366 367 368 369 370 |
# File 'lib/ews/service.rb', line 365 def soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/DeleteAttachment' response = invoke('tns:DeleteAttachment', soap_action) do || raise "TODO" end end |
#delete_folder! ⇒ Object
147 148 149 150 151 152 |
# File 'lib/ews/service.rb', line 147 def delete_folder! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/DeleteFolder' response = invoke('tns:DeleteFolder', soap_action) do || raise "TODO" end end |
#delete_item! ⇒ Object
300 301 302 303 304 305 |
# File 'lib/ews/service.rb', line 300 def delete_item! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/DeleteItem' response = invoke('tns:DeleteItem', soap_action) do || raise "TODO" end end |
#expand_dl! ⇒ Object
61 62 63 64 65 66 |
# File 'lib/ews/service.rb', line 61 def soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/ExpandDL' response = invoke('tns:ExpandDL', soap_action) do || raise "TODO" end end |
#find_folder(folder_ids = :root, opts = {}) ⇒ Object
TODO:
Support options Traversal: Shallow, Deep, SoftDeleted FolderShape: IdOnly, Default, AllProperties
Finds folders for the given parent folder.
FindFolder
FolderShape
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/ews/service.rb', line 92 def find_folder(folder_ids = :root, opts = {}) soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/FindFolder' response = invoke('tns:FindFolder', soap_action) do |find_folder| builder(find_folder, opts) do traversal! folder_shape! folder_id_container! 'tns:ParentFolderIds', folder_ids end end parser.parse_find_folder response.document end |
#find_item(folder_ids = :root, opts = {}) ⇒ Object
FindItem - Exchange 2007
FindItem - Exchange 2010
BaseShape
241 242 243 244 245 246 247 248 249 250 251 |
# File 'lib/ews/service.rb', line 241 def find_item(folder_ids = :root, opts = {}) soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/FindItem' response = invoke('tns:FindItem', soap_action) do |find_item| builder(find_item, opts) do traversal! item_shape! folder_id_container! 'tns:ParentFolderIds', folder_ids end end parser.parse_find_item response.document end |
#get_attachment(attachment_id, opts = {}) ⇒ Object
GetAttachment
383 384 385 386 387 388 389 390 391 392 393 394 |
# File 'lib/ews/service.rb', line 383 def (, opts = {}) raise PreconditionFailed, "Id must be non-empty" if .nil? soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetAttachment' response = invoke('tns:GetAttachment', soap_action) do || builder(, opts) do end end parser. response.document end |
#get_delegate ⇒ Object
396 397 398 399 400 401 |
# File 'lib/ews/service.rb', line 396 def get_delegate soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetDelegate' response = invoke('tns:GetDelegate', soap_action) do || raise "TODO" end end |
#get_events ⇒ Object
189 190 191 192 193 194 |
# File 'lib/ews/service.rb', line 189 def get_events soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetEvents' response = invoke('tns:GetEvents', soap_action) do || raise "TODO" end end |
#get_folder(folder_id = :root, opts = {}) ⇒ Object
MSDN - GetFolder operation
122 123 124 125 126 127 128 129 130 131 |
# File 'lib/ews/service.rb', line 122 def get_folder(folder_id = :root, opts = {}) soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder' response = invoke('tns:GetFolder', soap_action) do |get_folder| builder(get_folder, opts) do folder_shape! folder_id_container! 'tns:FolderIds', folder_id end end parser.parse_get_folder response.document end |
#get_item(item_id, opts = {}) ⇒ Object
GetItem (E-mail Message)
ItemShape
ItmeIds
277 278 279 280 281 282 283 284 285 286 287 288 |
# File 'lib/ews/service.rb', line 277 def get_item(item_id, opts = {}) raise PreconditionFailed, "Id must be non-empty" if item_id.nil? soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetItem' response = invoke('tns:GetItem', soap_action) do |get_item| builder(get_item, opts) do item_shape! item_id_container! 'tns:ItemIds', item_id end end parser.parse_get_item response.document end |
#get_user_availability ⇒ Object
424 425 426 427 428 429 |
# File 'lib/ews/service.rb', line 424 def get_user_availability soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetUserAvailability' response = invoke('tns:GetUserAvailability', soap_action) do || raise "TODO" end end |
#get_user_oof_settings ⇒ Object
431 432 433 434 435 436 |
# File 'lib/ews/service.rb', line 431 def get_user_oof_settings soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/GetUserOofSettings' response = invoke('tns:GetUserOofSettings', soap_action) do || raise "TODO" end end |
#move_folder! ⇒ Object
161 162 163 164 165 166 |
# File 'lib/ews/service.rb', line 161 def move_folder! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/MoveFolder' response = invoke('tns:MoveFolder', soap_action) do || raise "TODO" end end |
#move_item!(folder_id, item_id, opts = {}) ⇒ Object
</MoveItem>
MoveItem
DistinguishedFolderId
341 342 343 344 345 346 347 348 349 |
# File 'lib/ews/service.rb', line 341 def move_item!(folder_id, item_id, opts = {}) soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/MoveItem' response = invoke('tns:MoveItem', soap_action) do |move_item| builder(move_item, opts) do folder_id_container! 'tns:ToFolderId', folder_id item_id_container! 'tns:ItemIds', item_id end end end |
#on_after_create_http_request(req) ⇒ Object
23 24 25 26 27 |
# File 'lib/ews/service.rb', line 23 def on_after_create_http_request(req) if @@username && @@password req.set_auth @@username, @@password end end |
#on_create_document(doc) ⇒ Object
29 30 31 |
# File 'lib/ews/service.rb', line 29 def on_create_document(doc) register_aliases! doc end |
#on_response_document(doc) ⇒ Object
33 34 35 36 |
# File 'lib/ews/service.rb', line 33 def on_response_document(doc) apply_namespaces! doc parser. doc end |
#register_aliases!(doc) ⇒ Object
38 39 40 41 |
# File 'lib/ews/service.rb', line 38 def register_aliases!(doc) doc.alias 'tns', 'http://schemas.microsoft.com/exchange/services/2006/messages' doc.alias 't', 'http://schemas.microsoft.com/exchange/services/2006/types' end |
#remove_delegate! ⇒ Object
410 411 412 413 414 415 |
# File 'lib/ews/service.rb', line 410 def remove_delegate! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/RemoveDelegate' response = invoke('tns:RemoveDelegate', soap_action) do || raise "TODO" end end |
#resolve_names!(unresolved_entry, return_full_contact_data = true) ⇒ Object
public methods
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ews/service.rb', line 50 def resolve_names!(unresolved_entry, return_full_contact_data = true) soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/ResolveNames' response = invoke('tns:ResolveNames', soap_action) do |resolve_names| builder(resolve_names) do unresolved_entry! unresolved_entry return_full_contact_data! return_full_contact_data end end parser.parse_resolve_names response.document end |
#send_item! ⇒ Object
314 315 316 317 318 319 |
# File 'lib/ews/service.rb', line 314 def send_item! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/SendItem' response = invoke('tns:SendItem', soap_action) do || raise "TODO" end end |
#set_auth(username, password) ⇒ Object
19 20 21 |
# File 'lib/ews/service.rb', line 19 def set_auth(username, password) @@username, @@password = username, password end |
#set_user_oof_settings! ⇒ Object
438 439 440 441 442 443 |
# File 'lib/ews/service.rb', line 438 def set_user_oof_settings! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/SetUserOofSettings' response = invoke('tns:SetUserOofSettings', soap_action) do || raise "TODO" end end |
#subscribe! ⇒ Object
175 176 177 178 179 180 |
# File 'lib/ews/service.rb', line 175 def subscribe! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/Subscribe' response = invoke('tns:Subscribe', soap_action) do || raise "TODO" end end |
#sync_folder_hierarchy! ⇒ Object
196 197 198 199 200 201 |
# File 'lib/ews/service.rb', line 196 def sync_folder_hierarchy! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/SyncFolderHierarchy' response = invoke('tns:SyncFolderHierarchy', soap_action) do || raise "TODO" end end |
#sync_folder_items! ⇒ Object
203 204 205 206 207 208 |
# File 'lib/ews/service.rb', line 203 def sync_folder_items! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/SyncFolderItems' response = invoke('tns:SyncFolderItems', soap_action) do || raise "TODO" end end |
#unsubscribe! ⇒ Object
182 183 184 185 186 187 |
# File 'lib/ews/service.rb', line 182 def unsubscribe! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/Unsubscribe' response = invoke('tns:Unsubscribe', soap_action) do || raise "TODO" end end |
#update_delegate! ⇒ Object
417 418 419 420 421 422 |
# File 'lib/ews/service.rb', line 417 def update_delegate! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/UpdateDelegate' response = invoke('tns:UpdateDelegate', soap_action) do || raise "TODO" end end |
#update_folder! ⇒ Object
154 155 156 157 158 159 |
# File 'lib/ews/service.rb', line 154 def update_folder! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/UpdateFolder' response = invoke('tns:UpdateFolder', soap_action) do || raise "TODO" end end |
#update_item! ⇒ Object
307 308 309 310 311 312 |
# File 'lib/ews/service.rb', line 307 def update_item! soap_action = 'http://schemas.microsoft.com/exchange/services/2006/messages/UpdateItem' response = invoke('tns:UpdateItem', soap_action) do || raise "TODO" end end |