Completed
Push — master ( a70bec...ba593a )
by James
03:45
created

Client::setCurlOptions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
/**
3
 * Contains \jamesiarmes\PhpEws\Client.
4
 */
5
6
namespace jamesiarmes\PhpEws;
7
8
/**
9
 * Base class of the Exchange Web Services application.
10
 *
11
 * @package php-ews\Client
12
 */
13
class Client
14
{
15
    /**
16
     * Microsoft Exchange 2007
17
     *
18
     * @var string
19
     */
20
    const VERSION_2007 = 'Exchange2007';
21
22
    /**
23
     * Microsoft Exchange 2007 SP1
24
     *
25
     * @var string
26
     */
27
    const VERSION_2007_SP1 = 'Exchange2007_SP1';
28
29
    /**
30
     * Microsoft Exchange 2007 SP2
31
     *
32
     * @var string
33
     */
34
    const VERSION_2007_SP2 = 'Exchange2007_SP2';
35
36
    /**
37
     * Microsoft Exchange 2007 SP3
38
     *
39
     * @var string
40
     */
41
    const VERSION_2007_SP3 = 'Exchange2007_SP3';
42
43
    /**
44
     * Microsoft Exchange 2010
45
     *
46
     * @var string
47
     */
48
    const VERSION_2010 = 'Exchange2010';
49
50
    /**
51
     * Microsoft Exchange 2010 SP1
52
     *
53
     * @var string
54
     */
55
    const VERSION_2010_SP1 = 'Exchange2010_SP1';
56
57
    /**
58
     * Microsoft Exchange 2010 SP2
59
     *
60
     * @var string
61
     */
62
    const VERSION_2010_SP2 = 'Exchange2010_SP2';
63
64
    /**
65
     * Microsoft Exchange 2013.
66
     *
67
     * @var string
68
     */
69
    const VERSION_2013 = 'Exchange2013';
70
71
    /**
72
     * Microsoft Exchange 2013 SP1.
73
     *
74
     * @var string
75
     */
76
    const VERSION_2013_SP1 = 'Exchange2013_SP1';
77
78
    /**
79
     * Microsoft Exchange 2016.
80
     *
81
     * @var string
82
     */
83
    const VERSION_2016 = 'Exchange2016';
84
85
    /**
86
     * cURL options to be passed to the SOAP client.
87
     *
88
     * @var array
89
     */
90
    protected $curl_options = array();
91
92
    /**
93
     * Password to use when connecting to the Exchange server.
94
     *
95
     * @var string
96
     */
97
    protected $password;
98
99
    /**
100
     * Location of the Exchange server.
101
     *
102
     * @var string
103
     */
104
    protected $server;
105
106
    /**
107
     * SOAP client used to make the request
108
     *
109
     * @var \jamesiarmes\PhpEws\SoapClient
110
     */
111
    protected $soap;
112
113
    /**
114
     * Username to use when connecting to the Exchange server.
115
     *
116
     * @var string
117
     */
118
    protected $username;
119
120
    /**
121
     * Exchange impersonation
122
     *
123
     * @var \jamesiarmes\PhpEws\Type\ExchangeImpersonationType
124
     */
125
    protected $impersonation;
126
127
    /**
128
     * Microsoft Exchange version that we are going to connect to
129
     *
130
     * @var string
131
     *
132
     * @see Client::VERSION_2007
133
     * @see Client::VERSION_2007_SP1
134
     * @see Client::VERSION_2007_SP2
135
     * @see Client::VERSION_2007_SP3
136
     * @see Client::VERSION_2010
137
     * @see Client::VERSION_2010_SP1
138
     * @see Client::VERSION_2010_SP2
139
     */
140
    protected $version;
141
142
    /**
143
     * Constructor for the ExchangeWebServices class
144
     *
145
     * @param string $server
146
     * @param string $username
147
     * @param string $password
148
     * @param string $version
149
     *   One of the Client::VERSION_* constants.
150
     */
151
    public function __construct(
152
        $server = null,
153
        $username = null,
154
        $password = null,
155
        $version = self::VERSION_2007
156
    ) {
157
        // Set the object properties.
158
        $this->setServer($server);
159
        $this->setUsername($username);
160
        $this->setPassword($password);
161
        $this->setVersion($version);
162
    }
163
164
    /**
165
     * Returns the SOAP Client that may be used to make calls against the server
166
     *
167
     * @return \jamesiarmes\PhpEws\SoapClient
168
     */
169
    public function getClient()
170
    {
171
        return $this->initializeSoapClient();
172
    }
173
174
    /**
175
     * Sets the cURL options that will be set on the SOAP client.
176
     *
177
     * @param array $options
178
     */
179
    public function setCurlOptions(array $options)
180
    {
181
        $this->curl_options = $options;
182
    }
183
184
    /**
185
     * Sets the impersonation property
186
     *
187
     * @param \jamesiarmes\PhpEws\Type\ExchangeImpersonationType $impersonation
188
     */
189
    public function setImpersonation($impersonation)
190
    {
191
        $this->impersonation = $impersonation;
192
    }
193
194
    /**
195
     * Sets the password property
196
     *
197
     * @param string $password
198
     */
199
    public function setPassword($password)
200
    {
201
        $this->password = $password;
202
    }
203
204
    /**
205
     * Sets the server property
206
     *
207
     * @param string $server
208
     */
209
    public function setServer($server)
210
    {
211
        $this->server = $server;
212
    }
213
214
    /**
215
     * Sets the user name property
216
     *
217
     * @param string $username
218
     */
219
    public function setUsername($username)
220
    {
221
        $this->username = $username;
222
    }
223
224
    /**
225
     * Sets the version property
226
     *
227
     * @param string $version
228
     */
229
    public function setVersion($version)
230
    {
231
        $this->version = $version;
232
    }
233
234
    /**
235
     * Adds one or more delegates to a principal's mailbox and sets specific
236
     * access permissions.
237
     *
238
     * @since Exchange 2007 SP1
239
     *
240
     * @param \jamesiarmes\PhpEws\Request\AddDelegateType $request
241
     * @return \jamesiarmes\PhpEws\Response\AddDelegateResponseMessageType
242
     */
243
    public function AddDelegate($request)
244
    {
245
        return $this->makeRequest(__FUNCTION__, $request);
246
    }
247
248
    /**
249
     * Adds a distribution group to the instant messaging (IM) list in the
250
     * Unified Contact Store.
251
     *
252
     * @since Exchange 2013
253
     *
254
     * @param \jamesiarmes\PhpEws\Request\AddDistributionGroupToImListType $request
255
     * @return \jamesiarmes\PhpEws\Response\AddDistributionGroupToImListResponseMessageType
256
     */
257
    public function AddDistributionGroupToImList($request)
258
    {
259
        return $this->makeRequest(__FUNCTION__, $request);
260
    }
261
262
    /**
263
     * Adds an existing instant messaging (IM) contact to a group.
264
     *
265
     * @since Exchange 2013
266
     *
267
     * @param \jamesiarmes\PhpEws\Request\AddImContactToGroup $request
268
     * @return \jamesiarmes\PhpEws\Response\AddImContactToGroupResponseMessageType
269
     */
270
    public function AddImContactToGroup($request)
271
    {
272
        return $this->makeRequest(__FUNCTION__, $request);
273
    }
274
275
    /**
276
     * Adds a new instant messaging (IM) group to a mailbox.
277
     *
278
     * @since Exchange 2013
279
     *
280
     * @param \jamesiarmes\PhpEws\Request\AddImGroupType $request
281
     * @return \jamesiarmes\PhpEws\Response\AddImGroupResponseMessageType
282
     */
283
    public function AddImGroup($request)
284
    {
285
        return $this->makeRequest(__FUNCTION__, $request);
286
    }
287
288
    /**
289
     * Adds a new contact to an instant messaging (IM) group.
290
     *
291
     * @since Exchange 2013
292
     *
293
     * @param \jamesiarmes\PhpEws\Request\AddNewImContactToGroup $request
294
     * @return \jamesiarmes\PhpEws\Response\AddNewImContactToGroupResponseMessageType
295
     */
296
    public function AddNewImContactToGroup($request)
297
    {
298
        return $this->makeRequest(__FUNCTION__, $request);
299
    }
300
301
    /**
302
     * Adds a new contact to a group based on a contact's phone number.
303
     *
304
     * @since Exchange 2013
305
     *
306
     * @param \jamesiarmes\PhpEws\Request\AddNewTelUriContactToGroupType $request
307
     * @return \jamesiarmes\PhpEws\Response\AddNewTelUriContactToGroupResponse
308
     */
309
    public function AddNewTelUriContactToGroup($request)
310
    {
311
        return $this->makeRequest(__FUNCTION__, $request);
312
    }
313
314
    /**
315
     * Sets a one-time or follow up action on all the items in a conversation.
316
     *
317
     * This operation allows you to categorize, move, copy, delete, and set the
318
     * read state on all items in a conversation. Actions can also be set for
319
     * new messages in a conversation.
320
     *
321
     * @since Exchange 2010 SP1
322
     *
323
     * @param \jamesiarmes\PhpEws\Request\ApplyConversationActionType $request
324
     * @return \jamesiarmes\PhpEws\Response\ApplyConversationActionResponseType
325
     */
326
    public function ApplyConversationAction($request)
327
    {
328
        return $this->makeRequest(__FUNCTION__, $request);
329
    }
330
331
    /**
332
     * Moves an item into the mailbox user's archive mailbox.
333
     *
334
     * @since Exchange 2013
335
     *
336
     * @param \jamesiarmes\PhpEws\Request\ArchiveItemType $request
337
     * @return \jamesiarmes\PhpEws\Response\ArchiveItemResponse
338
     */
339
    public function ArchiveItem($request)
340
    {
341
        return $this->makeRequest(__FUNCTION__, $request);
342
    }
343
344
    /**
345
     * Converts item and folder identifiers between formats that are accepted by
346
     * Exchange Online, Exchange Online as part of Office 365, and on-premises
347
     * versions of Exchange.
348
     *
349
     * @since Exchange 2007 SP1
350
     *
351
     * @param \jamesiarmes\PhpEws\Request\ConvertIdType $request
352
     * @return \jamesiarmes\PhpEws\Response\ConvertIdResponseType
353
     */
354
    public function ConvertId($request)
355
    {
356
        return $this->makeRequest(__FUNCTION__, $request);
357
    }
358
359
    /**
360
     * Copies folders in a mailbox.
361
     *
362
     * @since Exchange 2007
363
     *
364
     * @param \jamesiarmes\PhpEws\Request\CopyFolderType $request
365
     * @return \jamesiarmes\PhpEws\Response\CopyFolderResponseType
366
     */
367
    public function CopyFolder($request)
368
    {
369
        return $this->makeRequest(__FUNCTION__, $request);
370
    }
371
372
    /**
373
     * Copies items and puts the items in a different folder.
374
     *
375
     * @since Exchange 2007
376
     *
377
     * @param \jamesiarmes\PhpEws\Request\CopyItemType $request
378
     * @return \jamesiarmes\PhpEws\Response\CopyItemResponseType
379
     */
380
    public function CopyItem($request)
381
    {
382
        return $this->makeRequest(__FUNCTION__, $request);
383
    }
384
385
    /**
386
     * Creates either an item or file attachment and attaches it to the
387
     * specified item.
388
     *
389
     * @since Exchange 2007
390
     *
391
     * @param \jamesiarmes\PhpEws\Request\CreateAttachmentType $request
392
     * @return \jamesiarmes\PhpEws\Response\CreateAttachmentResponseType
393
     */
394
    public function CreateAttachment($request)
395
    {
396
        return $this->makeRequest(__FUNCTION__, $request);
397
    }
398
399
    /**
400
     * Creates folders, calendar folders, contacts folders, tasks folders, and
401
     * search folders.
402
     *
403
     * @since Exchange 2007
404
     *
405
     * @param \jamesiarmes\PhpEws\Request\CreateFolderType $request
406
     * @return \jamesiarmes\PhpEws\Response\CreateFolderResponseType
407
     */
408
    public function CreateFolder($request)
409
    {
410
        return $this->makeRequest(__FUNCTION__, $request);
411
    }
412
413
    /**
414
     * Creates a folder hierarchy.
415
     *
416
     * @since Exchange 2013
417
     *
418
     * @param \jamesiarmes\PhpEws\Request\CreateFolderPathType $request
419
     * @return \jamesiarmes\PhpEws\Response\CreateFolderPathResponseType
420
     */
421
    public function CreateFolderPath($request)
422
    {
423
        return $this->makeRequest(__FUNCTION__, $request);
424
    }
425
426
    /**
427
     * Creates items in the Exchange store.
428
     *
429
     * @since Exchange 2007
430
     *
431
     * @param \jamesiarmes\PhpEws\Request\CreateItemType $request
432
     * @return \jamesiarmes\PhpEws\Response\CreateItemResponseType
433
     */
434
    public function CreateItem($request)
435
    {
436
        return $this->makeRequest(__FUNCTION__, $request);
437
    }
438
439
    /**
440
     * Creates a managed folder in the Exchange store.
441
     *
442
     * @since Exchange 2007
443
     *
444
     * @param \jamesiarmes\PhpEws\Request\CreateManagedFolderRequestType $request
445
     * @return \jamesiarmes\PhpEws\Response\CreateManagedFolderResponseType
446
     */
447
    public function CreateManagedFolder($request)
448
    {
449
        return $this->makeRequest(__FUNCTION__, $request);
450
    }
451
452
    /**
453
     * Creates a user configuration object on a folder.
454
     *
455
     * @since Exchange 2010
456
     *
457
     * @param \jamesiarmes\PhpEws\Request\CreateUserConfigurationType $request
458
     * @return \jamesiarmes\PhpEws\Response\CreateUserConfigurationResponseType
459
     */
460
    public function CreateUserConfiguration($request)
461
    {
462
        return $this->makeRequest(__FUNCTION__, $request);
463
    }
464
465
    /**
466
     * Deletes file and item attachments from an existing item in the Exchange
467
     * store.
468
     *
469
     * @since Exchange 2007
470
     *
471
     * @param \jamesiarmes\PhpEws\Request\DeleteAttachmentType $request
472
     * @return \jamesiarmes\PhpEws\Response\DeleteAttachmentResponseType
473
     */
474
    public function DeleteAttachment($request)
475
    {
476
        return $this->makeRequest(__FUNCTION__, $request);
477
    }
478
479
    /**
480
     * Deletes folders from a mailbox.
481
     *
482
     * @since Exchange 2007
483
     *
484
     * @param \jamesiarmes\PhpEws\Request\DeleteFolderType $request
485
     * @return \jamesiarmes\PhpEws\Response\DeleteFolderResponseType
486
     */
487
    public function DeleteFolder($request)
488
    {
489
        return $this->makeRequest(__FUNCTION__, $request);
490
    }
491
492
    /**
493
     * Deletes items in the Exchange store.
494
     *
495
     * @since Exchange 2007
496
     *
497
     * @param \jamesiarmes\PhpEws\Request\DeleteItemType $request
498
     * @return \jamesiarmes\PhpEws\Response\DeleteItemResponseType
499
     */
500
    public function DeleteItem($request)
501
    {
502
        return $this->makeRequest(__FUNCTION__, $request);
503
    }
504
505
    /**
506
     * Deletes a user configuration object on a folder.
507
     *
508
     * @since Exchange 2010
509
     *
510
     * @param \jamesiarmes\PhpEws\Request\DeleteUserConfigurationType $request
511
     * @return \jamesiarmes\PhpEws\Response\DeleteUserConfigurationResponseType
512
     */
513
    public function DeleteUserConfiguration($request)
514
    {
515
        return $this->makeRequest(__FUNCTION__, $request);
516
    }
517
518
    /**
519
     * Disables a mail app for Outlook.
520
     *
521
     * @since Exchange 2013
522
     *
523
     * @param \jamesiarmes\PhpEws\Request\DisableAppType $request
524
     * @return \jamesiarmes\PhpEws\Response\DisableAppResponseType
525
     */
526
    public function DisableApp($request)
527
    {
528
        return $this->makeRequest(__FUNCTION__, $request);
529
    }
530
531
    /**
532
     * Terminates a telephone call.
533
     *
534
     * @since Exchange 2010
535
     *
536
     * @param \jamesiarmes\PhpEws\Request\DisconnectPhoneCallType $request
537
     * @return \jamesiarmes\PhpEws\Response\DisconnectPhoneCallResponseMessageType
538
     */
539
    public function DisconnectPhoneCall($request)
540
    {
541
        return $this->makeRequest(__FUNCTION__, $request);
542
    }
543
544
    /**
545
     * Empties folders in a mailbox.
546
     *
547
     * Optionally, this operation enables you to delete the subfolders of the
548
     * specified folder. When a subfolder is deleted, the subfolder and the
549
     * messages within the subfolder are deleted.
550
     *
551
     * @since Exchange 2010
552
     *
553
     * @param \jamesiarmes\PhpEws\Request\EmptyFolderType $request
554
     * @return \jamesiarmes\PhpEws\Response\EmptyFolderResponseType
555
     */
556
    public function EmptyFolder($request)
557
    {
558
        return $this->makeRequest(__FUNCTION__, $request);
559
    }
560
561
    /**
562
     * Exposes the full membership of distribution lists.
563
     *
564
     * @since Exchange 2007
565
     *
566
     * @param \jamesiarmes\PhpEws\Request\ExpandDLType $request
567
     * @return \jamesiarmes\PhpEws\Response\ExpandDLResponseType
568
     */
569
    public function ExpandDL($request)
570
    {
571
        return $this->makeRequest(__FUNCTION__, $request);
572
    }
573
574
    /**
575
     * Exports items out of a mailbox.
576
     *
577
     * @since Exchange 2010 SP1
578
     *
579
     * @param \jamesiarmes\PhpEws\Request\ExportItemsType $request
580
     * @return \jamesiarmes\PhpEws\Response\ExportItemsResponseType
581
     */
582
    public function ExportItems($request)
583
    {
584
        return $this->makeRequest(__FUNCTION__, $request);
585
    }
586
587
    /**
588
     * Enumerates a list of conversations in a folder.
589
     *
590
     * @param \jamesiarmes\PhpEws\Request\FindConversationType $request
591
     * @return \jamesiarmes\PhpEws\Response\FindConversationResponseMessageType
592
     */
593
    public function FindConversation($request)
594
    {
595
        return $this->makeRequest(__FUNCTION__, $request);
596
    }
597
598
    /**
599
     * Finds subfolders of an identified folder and returns a set of properties
600
     * that describe the set of subfolders.
601
     *
602
     * @since Exchange 2007
603
     *
604
     * @param \jamesiarmes\PhpEws\Request\FindFolderType $request
605
     * @return \jamesiarmes\PhpEws\Response\FindFolderResponseType
606
     */
607
    public function FindFolder($request)
608
    {
609
        return $this->makeRequest(__FUNCTION__, $request);
610
    }
611
612
    /**
613
     * Searches for items that are located in a user’s mailbox.
614
     *
615
     * This operation provides many ways to filter and format how search results
616
     * are returned to the caller.
617
     *
618
     * @since Exchange 2007
619
     *
620
     * @param \jamesiarmes\PhpEws\Request\FindItemType $request
621
     * @return \jamesiarmes\PhpEws\Response\FindItemResponseType
622
     */
623
    public function FindItem($request)
624
    {
625
        return $this->makeRequest(__FUNCTION__, $request);
626
    }
627
628
    /**
629
     * Finds messages that meet the specified criteria.
630
     *
631
     * @since Exchange 2010
632
     *
633
     * @param \jamesiarmes\PhpEws\Request\FindMessageTrackingReportRequestType $request
634
     * @return \jamesiarmes\PhpEws\Response\FindMessageTrackingReportResponseMessageType
635
     */
636
    public function FindMessageTrackingReport($request)
637
    {
638
        return $this->makeRequest(__FUNCTION__, $request);
639
    }
640
641
    /**
642
     * Returns all persona objects from a specified Contacts folder or retrieves
643
     * contacts that match a specified query string.
644
     *
645
     * @since Exchange 2013
646
     *
647
     * @param \jamesiarmes\PhpEws\Request\FindPeopleType $request
648
     * @return \jamesiarmes\PhpEws\Response\FindPeopleResponseMessageType
649
     */
650
    public function FindPeople($request)
651
    {
652
        return $this->makeRequest(__FUNCTION__, $request);
653
    }
654
655
    /**
656
     * Retrieves app manifests.
657
     *
658
     * @since Exchange 2013 SP1
659
     *
660
     * @param \jamesiarmes\PhpEws\Request\GetAppManifestsType $request
661
     * @return \jamesiarmes\PhpEws\Response\GetAppManifestsResponseType
662
     */
663
    public function GetAppManifests($request)
664
    {
665
        return $this->makeRequest(__FUNCTION__, $request);
666
    }
667
668
    /**
669
     * Retrieves the URL for the app marketplace that a client can visit to
670
     * acquire apps to install in a mailbox.
671
     *
672
     * @since Exchange 2013 SP1
673
     *
674
     * @param \jamesiarmes\PhpEws\Request\GetAppMarketplaceUrl $request
675
     * @return \jamesiarmes\PhpEws\Response\GetAppMarketplaceUrlResponseMessageType
676
     */
677
    public function GetAppMarketplaceUrl($request)
678
    {
679
        return $this->makeRequest(__FUNCTION__, $request);
680
    }
681
682
    /**
683
     * Retrieves existing attachments on items in the Exchange store.
684
     *
685
     * @since Exchange 2007
686
     *
687
     * @param \jamesiarmes\PhpEws\Request\GetAttachmentType $request
688
     * @return \jamesiarmes\PhpEws\Response\GetAttachmentResponseType
689
     */
690
    public function GetAttachment($request)
691
    {
692
        return $this->makeRequest(__FUNCTION__, $request);
693
    }
694
695
    /**
696
     * Gets a client access token for a mail app for Outlook.
697
     *
698
     * @since Exchange 2013
699
     *
700
     * @param \jamesiarmes\PhpEws\Request\GetClientAccessTokenType $request
701
     * @return \jamesiarmes\PhpEws\Response\GetClientAccessTokenResponseType
702
     */
703
    public function GetClientAccessToken($request)
704
    {
705
        return $this->makeRequest(__FUNCTION__, $request);
706
    }
707
708
    /**
709
     * Retrieves one or more sets of items that are organized in to nodes in a
710
     * conversation.
711
     *
712
     * @since Exchange 2013
713
     *
714
     * @param \jamesiarmes\PhpEws\Request\GetConversationItemsType $request
715
     * @return \jamesiarmes\PhpEws\Response\GetConversationItemsResponseType
716
     */
717
    public function GetConversationItems($request)
718
    {
719
        return $this->makeRequest(__FUNCTION__, $request);
720
    }
721
722
    /**
723
     * Retrieves the delegate settings for a specified mailbox.
724
     *
725
     * @since Exchange 2007 SP1
726
     *
727
     * @param \jamesiarmes\PhpEws\Request\GetDelegateType $request
728
     * @return \jamesiarmes\PhpEws\Response\GetDelegateResponseMessageType
729
     */
730
    public function GetDelegate($request)
731
    {
732
        return $this->makeRequest(__FUNCTION__, $request);
733
    }
734
735
    /**
736
     * Returns configuration information for in-place holds, saved discovery
737
     * searches, and the mailboxes that are enabled for discovery search.
738
     *
739
     * @since Exchange 2013
740
     *
741
     * @param \jamesiarmes\PhpEws\Request\GetDiscoverySearchConfigurationType $request
742
     * @return \jamesiarmes\PhpEws\Response\GetDiscoverySearchConfigurationResponseMessageType
743
     */
744
    public function GetDiscoverySearchConfiguration($request)
745
    {
746
        return $this->makeRequest(__FUNCTION__, $request);
747
    }
748
749
    /**
750
     * Used by pull subscription clients to request notifications from the
751
     * Client Access server.
752
     *
753
     * The response returns an array of items and events that have occurred in a
754
     * mailbox since the last the notification.
755
     *
756
     * @since Exchange 2007
757
     *
758
     * @param \jamesiarmes\PhpEws\Request\GetEventsType $request
759
     * @return \jamesiarmes\PhpEws\Response\GetEventsResponseType
760
     */
761
    public function GetEvents($request)
762
    {
763
        return $this->makeRequest(__FUNCTION__, $request);
764
    }
765
766
    /**
767
     * Gets folders from the Exchange store.
768
     *
769
     * @since Exchange 2007
770
     *
771
     * @param \jamesiarmes\PhpEws\Request\GetFolderType $request
772
     * @return \jamesiarmes\PhpEws\Response\GetFolderResponseType
773
     */
774
    public function GetFolder($request)
775
    {
776
        return $this->makeRequest(__FUNCTION__, $request);
777
    }
778
779
    /**
780
     * Retrieves the mailboxes that are under a specific hold and the associated
781
     * hold query.
782
     *
783
     * @since Exchange 2013
784
     *
785
     * @param \jamesiarmes\PhpEws\Request\GetHoldOnMailboxesType $request
786
     * @return \jamesiarmes\PhpEws\Response\GetHoldOnMailboxesResponseMessageType
787
     */
788
    public function GetHoldOnMailboxes($request)
789
    {
790
        return $this->makeRequest(__FUNCTION__, $request);
791
    }
792
793
    /**
794
     * Retrieves the list of instant messaging (IM) groups and IM contact
795
     * personas in a mailbox.
796
     *
797
     * @since Exchange 2013
798
     *
799
     * @param \jamesiarmes\PhpEws\Request\GetImItemListType $request
800
     * @return \jamesiarmes\PhpEws\Response\GetImItemListResponseMessageType
801
     */
802
    public function GetImItemList($request)
803
    {
804
        return $this->makeRequest(__FUNCTION__, $request);
805
    }
806
807
    /**
808
     * Retrieves information about instant messaging (IM) groups and IM contact
809
     * personas.
810
     *
811
     * @since Exchange 2013
812
     *
813
     * @param \jamesiarmes\PhpEws\Request\GetImItemsType $request
814
     * @return \jamesiarmes\PhpEws\Response\GetImItemsResponse
815
     */
816
    public function GetImItems($request)
817
    {
818
        return $this->makeRequest(__FUNCTION__, $request);
819
    }
820
821
    /**
822
     * Retrieves Inbox rules in the identified user's mailbox.
823
     *
824
     * @since Exchange 2010
825
     *
826
     * @param \jamesiarmes\PhpEws\Request\GetInboxRulesRequestType $request
827
     * @return \jamesiarmes\PhpEws\Response\GetInboxRulesResponseType
828
     */
829
    public function GetInboxRules($request)
830
    {
831
        return $this->makeRequest(__FUNCTION__, $request);
832
    }
833
834
    /**
835
     * Gets folders from the Exchange store.
836
     *
837
     * @since Exchange 2007
838
     *
839
     * @param \jamesiarmes\PhpEws\Request\GetItemType $request
840
     * @return \jamesiarmes\PhpEws\Response\GetItemResponseType
841
     */
842
    public function GetItem($request)
843
    {
844
        return $this->makeRequest(__FUNCTION__, $request);
845
    }
846
847
    /**
848
     * Retrieves the mail tips information for the specified mailbox.
849
     *
850
     * @since Exchange 2010
851
     *
852
     * @param \jamesiarmes\PhpEws\Request\GetMailTipsType $request
853
     * @return \jamesiarmes\PhpEws\Response\GetMailTipsResponseMessageType
854
     */
855
    public function GetMailTips($request)
856
    {
857
        return $this->makeRequest(__FUNCTION__, $request);
858
    }
859
860
    /**
861
     * Retrieves tracking information about the specified messages.
862
     *
863
     * @since Exchange 2010
864
     *
865
     * @param \jamesiarmes\PhpEws\Request\GetMessageTrackingReportRequestType $request
866
     * @return \jamesiarmes\PhpEws\Response\GetMessageTrackingReportResponseMessageType
867
     */
868
    public function GetMessageTrackingReport($request)
869
    {
870
        return $this->makeRequest(__FUNCTION__, $request);
871
    }
872
873
    /**
874
     * Retrieves details about items that cannot be indexed.
875
     *
876
     * This includes, but is not limited to, the item identifier, an error code,
877
     * an error description, when an attempt was made to index the item, and
878
     * additional information about the file.
879
     *
880
     * @since Exchange 2013
881
     *
882
     * @param \jamesiarmes\PhpEws\Request\GetNonIndexableItemDetailsType $request
883
     * @return \jamesiarmes\PhpEws\Response\GetNonIndexableItemDetailsResponseMessageType
884
     */
885
    public function GetNonIndexableItemDetails($request)
886
    {
887
        return $this->makeRequest(__FUNCTION__, $request);
888
    }
889
890
    /**
891
     * Retrieves the count of items that cannot be indexed in a mailbox.
892
     *
893
     * @since Exchange 2013
894
     *
895
     * @param \jamesiarmes\PhpEws\Request\GetNonIndexableItemStatisticsType $request
896
     * @return \jamesiarmes\PhpEws\Response\GetNonIndexableItemStatisticsResponseMessageType
897
     */
898
    public function GetNonIndexableItemStatistics($request)
899
    {
900
        return $this->makeRequest(__FUNCTION__, $request);
901
    }
902
903
    /**
904
     * Provides the email account password expiration date for the current user.
905
     *
906
     * @since Exchange 2010 SP2
907
     *
908
     * @param \jamesiarmes\PhpEws\Request\GetPasswordExpirationDateType $request
909
     * @return \jamesiarmes\PhpEws\Response\GetPasswordExpirationDateResponseMessageType
910
     */
911
    public function GetPasswordExpirationDate($request)
912
    {
913
        return $this->makeRequest(__FUNCTION__, $request);
914
    }
915
916
    /**
917
     * Retrieves a set of properties that are associated with a persona.
918
     *
919
     * @since Exchange 2013
920
     *
921
     * @param \jamesiarmes\PhpEws\Request\GetPersonaType $request
922
     * @return \jamesiarmes\PhpEws\Response\GetPersonaResponseMessageType
923
     */
924
    public function GetPersona($request)
925
    {
926
        return $this->makeRequest(__FUNCTION__, $request);
927
    }
928
929
    /**
930
     * Retrieves information about the specified telephone call.
931
     *
932
     * @since Exchange 2010
933
     *
934
     * @param \jamesiarmes\PhpEws\Request\GetPhoneCallInformationType $request
935
     * @return \jamesiarmes\PhpEws\Response\GetPhoneCallInformationResponseMessageType
936
     */
937
    public function GetPhoneCallInformation($request)
938
    {
939
        return $this->makeRequest(__FUNCTION__, $request);
940
    }
941
942
    /**
943
     * Retrieves reminders for calendar and task items.
944
     *
945
     * @since Exchange 2013
946
     *
947
     * @param \jamesiarmes\PhpEws\Request\GetRemindersType $request
948
     * @return \jamesiarmes\PhpEws\Response\GetRemindersResponseMessageType
949
     */
950
    public function GetReminders($request)
951
    {
952
        return $this->makeRequest(__FUNCTION__, $request);
953
    }
954
955
    /**
956
     * Retrieves the room lists that are available within the Exchange
957
     * organization.
958
     *
959
     * @since Exchange 2010
960
     *
961
     * @param \jamesiarmes\PhpEws\Request\GetRoomListsType $request
962
     * @return \jamesiarmes\PhpEws\Response\GetRoomListsResponseMessageType
963
     */
964
    public function GetRoomLists($request)
965
    {
966
        return $this->makeRequest(__FUNCTION__, $request);
967
    }
968
969
    /**
970
     * Retrieves the rooms within the specified room list.
971
     *
972
     * @since Exchange 2010 SP1
973
     *
974
     * @param \jamesiarmes\PhpEws\Request\GetRoomsType $request
975
     * @return \jamesiarmes\PhpEws\Response\GetRoomsResponseMessageType
976
     */
977
    public function GetRooms($request)
978
    {
979
        return $this->makeRequest(__FUNCTION__, $request);
980
    }
981
982
    /**
983
     * Retrieves a scoped set of searchable mailboxes for discovery searches.
984
     *
985
     * The scope of searchable mailboxes returned in the response is determined
986
     * by the search filter and whether distribution group membership is
987
     * expanded.
988
     *
989
     * @since Exchange 2013
990
     *
991
     * @param \jamesiarmes\PhpEws\Request\GetSearchableMailboxesType $request
992
     * @return \jamesiarmes\PhpEws\Response\GetSearchableMailboxesResponseMessageType
993
     */
994
    public function GetSearchableMailboxes($request)
995
    {
996
        return $this->makeRequest(__FUNCTION__, $request);
997
    }
998
999
    /**
1000
     * Retrieve the timezones supported by the server.
1001
     *
1002
     * @since Exchange 2010
1003
     *
1004
     * @param \jamesiarmes\PhpEws\Request\GetServerTimeZonesType $request
1005
     * @return \jamesiarmes\PhpEws\Response\GetServerTimeZonesResponseType
1006
     */
1007
    public function GetServerTimeZones($request)
1008
    {
1009
        return $this->makeRequest(__FUNCTION__, $request);
1010
    }
1011
1012
    /**
1013
     * Retrieves configuration information for the specified type of service.
1014
     *
1015
     * This operation can return configuration settings for the Unified
1016
     * Messaging, Protection Rules, and Mail Tips services.
1017
     *
1018
     * @since Exchange 2010
1019
     *
1020
     * @param \jamesiarmes\PhpEws\Request\GetServiceConfigurationType $request
1021
     * @return \jamesiarmes\PhpEws\Response\GetServiceConfigurationResponseMessageType
1022
     */
1023
    public function GetServiceConfiguration($request)
1024
    {
1025
        return $this->makeRequest(__FUNCTION__, $request);
1026
    }
1027
1028
    /**
1029
     * Retrieves the local folder identifier of a specified shared folder.
1030
     *
1031
     * @since Exchange 2010
1032
     *
1033
     * @param \jamesiarmes\PhpEws\Request\GetSharingFolderType $request
1034
     * @return \jamesiarmes\PhpEws\Response\GetSharingFolderResponseMessageType
1035
     */
1036
    public function GetSharingFolder($request)
1037
    {
1038
        return $this->makeRequest(__FUNCTION__, $request);
1039
    }
1040
1041
    /**
1042
     * Gets an opaque authentication token that identifies a sharing invitation.
1043
     *
1044
     * @since Exchange 2010
1045
     *
1046
     * @param \jamesiarmes\PhpEws\Request\GetSharingMetadataType $request
1047
     * @return \jamesiarmes\PhpEws\Response\GetSharingMetadataResponseMessageType
1048
     */
1049
    public function GetSharingMetadata($request)
1050
    {
1051
        return $this->makeRequest(__FUNCTION__, $request);
1052
    }
1053
1054
    /**
1055
     * Requests notifications from the Client Access server.
1056
     *
1057
     * The GetStreamingEvents response returns an array of items and events that
1058
     * have occurred in a mailbox since the last the notification.
1059
     *
1060
     * @since Exchange 2010 SP1
1061
     *
1062
     * @param \jamesiarmes\PhpEws\Request\GetStreamingEventsType $request
1063
     * @return \jamesiarmes\PhpEws\Response\GetStreamingEventsResponseType
1064
     */
1065
    public function GetStreamingEvents($request)
1066
    {
1067
        return $this->makeRequest(__FUNCTION__, $request);
1068
    }
1069
1070
    /**
1071
     * Provides detailed information about the availability of a set of users,
1072
     * rooms, and resources within a specified time period.
1073
     *
1074
     * @since Exchange 2007
1075
     *
1076
     * @param \jamesiarmes\PhpEws\Request\GetUserAvailabilityRequestType $request
1077
     * @return \jamesiarmes\PhpEws\Response\GetUserAvailabilityResponseType
1078
     */
1079
    public function GetUserAvailability($request)
1080
    {
1081
        return $this->makeRequest(__FUNCTION__, $request);
1082
    }
1083
1084
    /**
1085
     * Retrieves a user configuration object from a folder.
1086
     *
1087
     * @since Exchange 2010
1088
     *
1089
     * @param \jamesiarmes\PhpEws\Request\GetUserConfigurationType $request
1090
     * @return \jamesiarmes\PhpEws\Response\GetUserConfigurationResponseType
1091
     */
1092
    public function GetUserConfiguration($request)
1093
    {
1094
        return $this->makeRequest(__FUNCTION__, $request);
1095
    }
1096
1097
    /**
1098
     * Gets a mailbox user's Out of Office (OOF) settings and messages.
1099
     *
1100
     * @since Exchange 2007
1101
     *
1102
     * @param \jamesiarmes\PhpEws\Request\GetUserOofSettingsRequest $request
1103
     * @return \jamesiarmes\PhpEws\Response\GetUserOofSettingsResponse
1104
     */
1105
    public function GetUserOofSettings($request)
1106
    {
1107
        return $this->makeRequest(__FUNCTION__, $request);
1108
    }
1109
1110
    /**
1111
     * Retrieves a user photo from Active Directory Domain Services (AD DS).
1112
     *
1113
     * @since Exchange 2013
1114
     *
1115
     * @param \jamesiarmes\PhpEws\Request\GetUserPhotoType $request
1116
     * @return \jamesiarmes\PhpEws\Response\GetUserPhotoResponseMessageType
1117
     */
1118
    public function GetUserPhoto($request)
1119
    {
1120
        return $this->makeRequest(__FUNCTION__, $request);
1121
    }
1122
1123
    /**
1124
     * Retrieves a list of all default, system folder, and personal tags that
1125
     * are associated with a user by means of a system policy or that were
1126
     * applied by the user.
1127
     *
1128
     * @since Exchange 2013
1129
     *
1130
     * @param \jamesiarmes\PhpEws\Request\GetUserRetentionPolicyTagsType $request
1131
     * @return \jamesiarmes\PhpEws\Response\GetUserRetentionPolicyTagsResponseMessageType
1132
     */
1133
    public function GetUserRetentionPolicyTags($request)
1134
    {
1135
        return $this->makeRequest(__FUNCTION__, $request);
1136
    }
1137
1138
    /**
1139
     * Installs a mail app for Outlook in a mailbox.
1140
     *
1141
     * @since Exchange 2013
1142
     *
1143
     * @param \jamesiarmes\PhpEws\Request\InstallAppType $request
1144
     * @return \jamesiarmes\PhpEws\Response\InstallAppResponseType
1145
     */
1146
    public function InstallApp($request)
1147
    {
1148
        return $this->makeRequest(__FUNCTION__, $request);
1149
    }
1150
1151
    /**
1152
     * Sets the IsRead property on all items, in one or more folders, to
1153
     * indicate that all items are either read or unread.
1154
     *
1155
     * @since Exchange 2013
1156
     *
1157
     * @param \jamesiarmes\PhpEws\Request\MarkAllItemsAsRead $request
1158
     * @return \jamesiarmes\PhpEws\Response\MarkAllItemsAsReadResponseType
1159
     */
1160
    public function MarkAllItemsAsRead($request)
1161
    {
1162
        return $this->makeRequest(__FUNCTION__, $request);
1163
    }
1164
1165
    /**
1166
     * Adds and removes users from the blocked email list and moves email
1167
     * messages to the Junk Email folder.
1168
     *
1169
     * @since Exchange 2013
1170
     *
1171
     * @param \jamesiarmes\PhpEws\Request\MarkAsJunkType $request
1172
     * @return \jamesiarmes\PhpEws\Response\MarkAsJunkResponseType
1173
     */
1174
    public function MarkAsJunk($request)
1175
    {
1176
        return $this->makeRequest(__FUNCTION__, $request);
1177
    }
1178
1179
    /**
1180
     * Moves folders from a specified folder and puts them in another folder.
1181
     *
1182
     * @since Exchange 2007
1183
     *
1184
     * @param \jamesiarmes\PhpEws\Request\MoveFolderType $request
1185
     * @return \jamesiarmes\PhpEws\Response\MoveFolderResponseType
1186
     */
1187
    public function MoveFolder($request)
1188
    {
1189
        return $this->makeRequest(__FUNCTION__, $request);
1190
    }
1191
1192
    /**
1193
     * Moves one or more items to a single destination folder.
1194
     *
1195
     * @since Exchange 2007
1196
     *
1197
     * @param \jamesiarmes\PhpEws\Request\MoveItemType $request
1198
     * @return \jamesiarmes\PhpEws\Response\MoveItemResponseType
1199
     */
1200
    public function MoveItem($request)
1201
    {
1202
        return $this->makeRequest(__FUNCTION__, $request);
1203
    }
1204
1205
    /**
1206
     * Initiates a dismiss or snooze action on a reminder.
1207
     *
1208
     * @since Exchange 2013
1209
     *
1210
     * @param \jamesiarmes\PhpEws\Request\PerformReminderActionType $request
1211
     * @return \jamesiarmes\PhpEws\Response\PerformReminderActionResponseMessageType
1212
     */
1213
    public function PerformReminderAction($request)
1214
    {
1215
        return $this->makeRequest(__FUNCTION__, $request);
1216
    }
1217
1218
    /**
1219
     * Initiates an outbound call and plays a message over the telephone.
1220
     *
1221
     * @since Exchange 2010
1222
     *
1223
     * @param \jamesiarmes\PhpEws\Request\PlayOnPhoneType $request
1224
     * @return \jamesiarmes\PhpEws\Response\PlayOnPhoneResponseMessageType
1225
     */
1226
    public function PlayOnPhone($request)
1227
    {
1228
        return $this->makeRequest(__FUNCTION__, $request);
1229
    }
1230
1231
    /**
1232
     * Refreshes the specified local folder with the latest data from the folder
1233
     * that is being shared.
1234
     *
1235
     * @since Exchange 2010
1236
     *
1237
     * @param \jamesiarmes\PhpEws\Request\RefreshSharingFolderType $request
1238
     * @return \jamesiarmes\PhpEws\Response\RefreshSharingFolderResponseMessageType
1239
     */
1240
    public function RefreshSharingFolder($request)
1241
    {
1242
        return $this->makeRequest(__FUNCTION__, $request);
1243
    }
1244
1245
    /**
1246
     * Removes contacts from the Lync instant messaging (IM) list when Lync uses
1247
     * Exchange for the contact store.
1248
     *
1249
     * @since Exchange 2013
1250
     *
1251
     * @param \jamesiarmes\PhpEws\Request\RemoveContactFromImListType $request
1252
     * @return \jamesiarmes\PhpEws\Response\RemoveContactFromImListResponseMessageType
1253
     */
1254
    public function RemoveContactFromImList($request)
1255
    {
1256
        return $this->makeRequest(__FUNCTION__, $request);
1257
    }
1258
1259
    /**
1260
     * Removes one or more delegates from a user's mailbox.
1261
     *
1262
     * @since Exchange 2007 SP1
1263
     *
1264
     * @param \jamesiarmes\PhpEws\Request\RemoveDelegateType $request
1265
     * @return \jamesiarmes\PhpEws\Response\RemoveDelegateResponseMessageType
1266
     */
1267
    public function RemoveDelegate($request)
1268
    {
1269
        return $this->makeRequest(__FUNCTION__, $request);
1270
    }
1271
1272
    /**
1273
     * Removes a distribution group from the Lync instant messaging (IM) list
1274
     * when Lync uses Exchange for the contact store.
1275
     *
1276
     * @since Exchange 2013
1277
     *
1278
     * @param \jamesiarmes\PhpEws\Request\RemoveDistributionGroupFromImListType $request
1279
     * @return \jamesiarmes\PhpEws\Response\RemoveDistributionGroupFromImListResponseMessageType
1280
     */
1281
    public function RemoveDistributionGroupFromImList($request)
1282
    {
1283
        return $this->makeRequest(__FUNCTION__, $request);
1284
    }
1285
1286
    /**
1287
     * Removes a single IM contact from an IM group.
1288
     *
1289
     * @since Exchange 2013
1290
     *
1291
     * @param \jamesiarmes\PhpEws\Request\RemoveImContactFromGroupType $request
1292
     * @return \jamesiarmes\PhpEws\Response\RemoveImContactFromGroupResponseMessageType
1293
     */
1294
    public function RemoveImContactFromGroup($request)
1295
    {
1296
        return $this->makeRequest(__FUNCTION__, $request);
1297
    }
1298
1299
    /**
1300
     * Removes a single instant messaging (IM) group from a mailbox.
1301
     *
1302
     * @since Exchange 2013
1303
     *
1304
     * @param \jamesiarmes\PhpEws\Request\RemoveImGroupType $request
1305
     * @return \jamesiarmes\PhpEws\Response\RemoveImGroupResponseMessageType
1306
     */
1307
    public function RemoveImGroup($request)
1308
    {
1309
        return $this->makeRequest(__FUNCTION__, $request);
1310
    }
1311
1312
    /**
1313
     * Resolves ambiguous email addresses and display names.
1314
     *
1315
     * @since Exchange 2007
1316
     *
1317
     * @param \jamesiarmes\PhpEws\Request\ResolveNamesType $request
1318
     * @return \jamesiarmes\PhpEws\Response\ResolveNamesResponseType
1319
     */
1320
    public function ResolveNames($request)
1321
    {
1322
        return $this->makeRequest(__FUNCTION__, $request);
1323
    }
1324
1325
    /**
1326
     * Searches mailboxes for occurrences of terms in mailbox items.
1327
     *
1328
     * @since Exchange 2013
1329
     *
1330
     * @param \jamesiarmes\PhpEws\Request\SearchMailboxesType $request
1331
     * @return \jamesiarmes\PhpEws\Response\SearchMailboxesResponseType
1332
     */
1333
    public function SearchMailboxes($request)
1334
    {
1335
        return $this->makeRequest(__FUNCTION__, $request);
1336
    }
1337
1338
    /**
1339
     * Sends e-mail messages that are located in the Exchange store.
1340
     *
1341
     * @since Exchange 2007
1342
     *
1343
     * @param \jamesiarmes\PhpEws\Request\SendItemType $request
1344
     * @return \jamesiarmes\PhpEws\Response\SendItemResponseType
1345
     */
1346
    public function SendItem($request)
1347
    {
1348
        return $this->makeRequest(__FUNCTION__, $request);
1349
    }
1350
1351
    /**
1352
     * Sets a mailbox hold policy on mailboxes.
1353
     *
1354
     * @since Exchange 2013
1355
     *
1356
     * @param \jamesiarmes\PhpEws\Request\SetHoldOnMailboxesType $request
1357
     * @return \jamesiarmes\PhpEws\Response\SetHoldOnMailboxesResponseMessageType
1358
     */
1359
    public function SetHoldOnMailboxes($request)
1360
    {
1361
        return $this->makeRequest(__FUNCTION__, $request);
1362
    }
1363
1364
    /**
1365
     * Changes the display name of an instant messaging (IM) group.
1366
     *
1367
     * @since Exchange 2013
1368
     *
1369
     * @param \jamesiarmes\PhpEws\Request\SetImGroupType $request
1370
     * @return \jamesiarmes\PhpEws\Response\SetImGroupResponseMessageType
1371
     */
1372
    public function SetImGroup($request)
1373
    {
1374
        return $this->makeRequest(__FUNCTION__, $request);
1375
    }
1376
1377
    /**
1378
     * Sets a mailbox user's Out of Office (OOF) settings and message.
1379
     *
1380
     * @since Exchange 2007
1381
     *
1382
     * @param \jamesiarmes\PhpEws\Request\SetUserOofSettingsRequest $request
1383
     * @return \jamesiarmes\PhpEws\Response\SetUserOofSettingsResponse
1384
     */
1385
    public function SetUserOofSettings($request)
1386
    {
1387
        return $this->makeRequest(__FUNCTION__, $request);
1388
    }
1389
1390
    /**
1391
     * Subscribes client applications to either push or pull notifications.
1392
     *
1393
     * It is important to be aware that the structure of the request messages
1394
     * and responses is different depending on the type of event notification.
1395
     *
1396
     * @since Exchange 2007
1397
     *
1398
     * @param \jamesiarmes\PhpEws\Request\SubscribeType $request
1399
     * @return \jamesiarmes\PhpEws\Response\SubscribeResponseType
1400
     */
1401
    public function Subscribe($request)
1402
    {
1403
        return $this->makeRequest(__FUNCTION__, $request);
1404
    }
1405
1406
    /**
1407
     * Synchronizes folders between the computer that is running Microsoft
1408
     * Exchange Server and the client.
1409
     *
1410
     * @since Exchange 2007
1411
     *
1412
     * @param \jamesiarmes\PhpEws\Request\SyncFolderHierarchyType $request
1413
     * @return \jamesiarmes\PhpEws\Response\SyncFolderHierarchyResponseType
1414
     */
1415
    public function SyncFolderHierarchy($request)
1416
    {
1417
        return $this->makeRequest(__FUNCTION__, $request);
1418
    }
1419
1420
    /**
1421
     * Synchronizes items between the Exchange server and the client.
1422
     *
1423
     * @since Exchange 2007
1424
     *
1425
     * @param \jamesiarmes\PhpEws\Request\SyncFolderItemsType $request
1426
     * @return \jamesiarmes\PhpEws\Response\SyncFolderItemsResponseType
1427
     */
1428
    public function SyncFolderItems($request)
1429
    {
1430
        return $this->makeRequest(__FUNCTION__, $request);
1431
    }
1432
1433
    /**
1434
     * Uninstalls a mail app for Outlook.
1435
     *
1436
     * @since Exchange 2013
1437
     *
1438
     * @param \jamesiarmes\PhpEws\Request\UninstallAppType $request
1439
     * @return \jamesiarmes\PhpEws\Response\UninstallAppResponseType
1440
     */
1441
    public function UninstallApp($request)
1442
    {
1443
        return $this->makeRequest(__FUNCTION__, $request);
1444
    }
1445
1446
    /**
1447
     * Ends a pull notification subscription.
1448
     *
1449
     * Use this operation rather than letting a subscription timeout. This
1450
     * operation is only valid for pull notifications.
1451
     *
1452
     * @since Exchange 2007
1453
     *
1454
     * @param \jamesiarmes\PhpEws\Request\UnsubscribeType $request
1455
     * @return \jamesiarmes\PhpEws\Response\UnsubscribeResponseType
1456
     */
1457
    public function Unsubscribe($request)
1458
    {
1459
        return $this->makeRequest(__FUNCTION__, $request);
1460
    }
1461
1462
    /**
1463
     * Updates delegate permissions on a principal's mailbox.
1464
     *
1465
     * @since Exchange 2007 SP1
1466
     *
1467
     * @param \jamesiarmes\PhpEws\Request\UpdateDelegateType $request
1468
     * @return \jamesiarmes\PhpEws\Response\UpdateDelegateResponseMessageType
1469
     */
1470
    public function UpdateDelegate($request)
1471
    {
1472
        return $this->makeRequest(__FUNCTION__, $request);
1473
    }
1474
1475
    /**
1476
     * Modifies properties of an existing item in the Exchange store.
1477
     *
1478
     * Each UpdateFolder operation consists of the following:
1479
     * - A FolderId element that specifies a folder to update.
1480
     * - An internal path of an element in the folder, as specified by the
1481
     *   folder shape, which specifies the data to update.
1482
     * - A folder that contains the new value of the updated field, if the
1483
     *   update is not a deletion.
1484
     *
1485
     * @since Exchange 2007
1486
     *
1487
     * @param \jamesiarmes\PhpEws\Request\UpdateFolderType $request
1488
     * @return \jamesiarmes\PhpEws\Response\UpdateFolderResponseType
1489
     */
1490
    public function UpdateFolder($request)
1491
    {
1492
        return $this->makeRequest(__FUNCTION__, $request);
1493
    }
1494
1495
    /**
1496
     * Updates the authenticated user's Inbox rules by applying the specified
1497
     * operations.
1498
     *
1499
     * This operation is used to create an Inbox rule, to set an Inbox rule, or
1500
     * to delete an Inbox rule.
1501
     *
1502
     * @since Exchange 2010 SP1
1503
     *
1504
     * @param \jamesiarmes\PhpEws\Request\UpdateInboxRulesRequestType $request
1505
     * @return \jamesiarmes\PhpEws\Response\UpdateInboxRulesResponseType
1506
     */
1507
    public function UpdateInboxRules($request)
1508
    {
1509
        return $this->makeRequest(__FUNCTION__, $request);
1510
    }
1511
1512
    /**
1513
     * Used to modify the properties of an existing item in the Exchange store.
1514
     *
1515
     * @since Exchange 2007
1516
     *
1517
     * @param \jamesiarmes\PhpEws\Request\UpdateItemType $request
1518
     * @return \jamesiarmes\PhpEws\Response\UpdateItemResponseType
1519
     */
1520
    public function UpdateItem($request)
1521
    {
1522
        return $this->makeRequest(__FUNCTION__, $request);
1523
    }
1524
1525
    /**
1526
     * Updates a user configuration object on a folder.
1527
     *
1528
     * @since Exchange 2010
1529
     *
1530
     * @param \jamesiarmes\PhpEws\Request\UpdateUserConfigurationType $request
1531
     * @return \jamesiarmes\PhpEws\Response\UpdateUserConfigurationResponseType
1532
     */
1533
    public function UpdateUserConfiguration($request)
1534
    {
1535
        return $this->makeRequest(__FUNCTION__, $request);
1536
    }
1537
1538
    /**
1539
     * Uploads a stream of items into an Exchange mailbox.
1540
     *
1541
     * @since Exchange 2010 SP1
1542
     *
1543
     * @param \jamesiarmes\PhpEws\Request\UploadItemsType $request
1544
     * @return \jamesiarmes\PhpEws\Response\UploadItemsResponseType
1545
     */
1546
    public function UploadItems($request)
1547
    {
1548
        return $this->makeRequest(__FUNCTION__, $request);
1549
    }
1550
1551
    /**
1552
     * Initializes the SoapClient object to make a request
1553
     *
1554
     * @return \jamesiarmes\PhpEws\SoapClient
1555
     */
1556
    protected function initializeSoapClient()
1557
    {
1558
        $this->soap = new SoapClient(
1559
            dirname(__FILE__) . '/assets/services.wsdl',
1560
            array(
1561
                'user' => $this->username,
1562
                'password' => $this->password,
1563
                'version' => $this->version,
1564
                'location' => 'https://' . $this->server . '/EWS/Exchange.asmx',
1565
                'impersonation' => $this->impersonation,
1566
                'classmap' => ClassMap::getMap(),
1567
                'curlopts' => $this->curl_options,
1568
            )
1569
        );
1570
1571
        return $this->soap;
1572
    }
1573
1574
    /**
1575
     * Makes the SOAP call for a request.
1576
     *
1577
     * @param string $operation
1578
     *   The operation to be called.
1579
     * @param \jamesiarmes\PhpEws\Request $request
1580
     *   The request object for the operation.
1581
     * @return \jamesiarmes\PhpEws\Response
1582
     *   The response object for the operation.
1583
     */
1584
    protected function makeRequest($operation, $request)
1585
    {
1586
        $this->initializeSoapClient();
1587
        $response = $this->soap->{$operation}($request);
1588
1589
        return $this->processResponse($response);
1590
    }
1591
1592
    /**
1593
     * Process a response to verify that it succeeded and take the appropriate
1594
     * action
1595
     *
1596
     * @throws \Exception
1597
     *
1598
     * @param \stdClass $response
1599
     * @return \stdClass
1600
     */
1601
    protected function processResponse($response)
1602
    {
1603
        // If the soap call failed then we need to throw an exception.
1604
        $code = $this->soap->getResponseCode();
1605
        if ($code != 200) {
1606
            throw new \Exception(
1607
                "SOAP client returned status of $code.",
1608
                $code
1609
            );
1610
        }
1611
1612
        return $response;
1613
    }
1614
}
1615