exchanger 0.1.3 → 0.1.4
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 +53 -0
- data/lib/exchanger.rb +2 -0
- data/lib/exchanger/elements/attendee.rb +4 -0
- data/lib/exchanger/elements/base_folder.rb +9 -0
- data/lib/exchanger/elements/calendar_item.rb +5 -0
- data/lib/exchanger/elements/calendar_view.rb +12 -0
- data/lib/exchanger/elements/item.rb +9 -0
- data/lib/exchanger/operations/create_item.rb +4 -2
- data/lib/exchanger/operations/find_item.rb +5 -1
- data/lib/exchanger/persistence.rb +4 -0
- data/lib/exchanger/version.rb +1 -1
- data/spec/cassettes/contact/destroy.yml +58 -0
- data/spec/cassettes/contact/destroy_setup.yml +61 -0
- data/spec/cassettes/contact/find.yml +119 -0
- data/spec/cassettes/contact/find_setup.yml +61 -0
- data/spec/cassettes/contact/save.yml +399 -0
- data/spec/cassettes/contact/save_cleanup.yml +58 -0
- data/spec/cassettes/folder/find_calendar.yml +60 -0
- data/spec/cassettes/folder/find_contacts.yml +60 -0
- data/spec/cassettes/folder/find_root.yml +60 -0
- data/spec/cassettes/folder/find_root_folders.yml +108 -0
- data/spec/cassettes/get_user_availability.yml +75 -0
- data/spec/cassettes/get_user_availability_default.yml +78 -0
- data/spec/cassettes/mailbox/search_test.yml +58 -0
- data/spec/cassettes/mailbox/search_test_members.yml +58 -0
- data/spec/config.yml +9 -6
- data/spec/config.yml.example +3 -3
- data/spec/exchanger/calendar_folder_spec.rb +13 -0
- data/spec/exchanger/calendar_item_spec.rb +13 -0
- data/spec/{client_spec.rb → exchanger/client_spec.rb} +1 -1
- data/spec/exchanger/contact_spec.rb +102 -0
- data/spec/exchanger/element_spec.rb +4 -0
- data/spec/{field_spec.rb → exchanger/field_spec.rb} +1 -1
- data/spec/exchanger/folder_spec.rb +17 -0
- data/spec/exchanger/get_user_availability_spec.rb +46 -0
- data/spec/exchanger/mailbox_spec.rb +18 -0
- data/spec/fixtures/get_user_availability.yml +4 -0
- data/spec/fixtures/get_user_availability.yml.example +3 -3
- data/spec/spec_helper.rb +18 -1
- metadata +91 -69
- data/spec/calendar_item_spec.rb +0 -26
- data/spec/contact_spec.rb +0 -67
- data/spec/element_spec.rb +0 -4
- data/spec/folder_spec.rb +0 -13
- data/spec/get_user_availability_spec.rb +0 -44
- data/spec/mailbox_spec.rb +0 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0bda3ce5bbe28f9fd01929df4590e2cd04c75f2b
|
4
|
+
data.tar.gz: baecb4bdabc3897d1b30d6302f936b877cee302a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7c4ea8792d5c1203a99022d32519ec95c1c01250aa2efa99b1b9da005c0030736374f4a3affd93804aea0d2d581a5b21cac36cd1e18c68f59ebbff7eedf6ceb5
|
7
|
+
data.tar.gz: a77be9430dc2c2bbe01a22041bef5ac42b20c091b1e88db485f012bbc82bd70440b30f84caa1e6d3c580308f98af659bddaa44533550df6b6c189a0d99df041d
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Exchanger
|
2
2
|
=========
|
3
3
|
|
4
|
+
[](http://travis-ci.org/ebeigarts/exchanger)
|
5
|
+
|
4
6
|
Ruby library for accessing Microsoft Exchange using Exchange Web Services.
|
5
7
|
This library tries to make creating and updating items as easy as possible.
|
6
8
|
It will keep track of changed properties and will update only them.
|
@@ -28,6 +30,7 @@ Exchanger.configure do |config|
|
|
28
30
|
config.endpoint = "https://domain.com/EWS/Exchanger.asmx"
|
29
31
|
config.username = "username"
|
30
32
|
config.password = "password"
|
33
|
+
config.debug = true # show Exchange request/response info
|
31
34
|
end
|
32
35
|
```
|
33
36
|
|
@@ -63,6 +66,56 @@ Searching in Global Address Book
|
|
63
66
|
mailboxes = Exchanger::Mailbox.search("John")
|
64
67
|
```
|
65
68
|
|
69
|
+
Searching for Calendar items
|
70
|
+
----------------------------
|
71
|
+
More specific Exchange calendar documentation can be found
|
72
|
+
[here](https://msdn.microsoft.com/en-us/library/office/dn495614(v=exchg.150).aspx).
|
73
|
+
|
74
|
+
1) Return all Calendar items with recurring **master** appointments (without recurring).
|
75
|
+
Also called as non-expanded view.
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
folder = Exchanger::Folder.find(:calendar, "email@example.com")
|
79
|
+
folder.items # return Exchanger::CalendarItem items
|
80
|
+
```
|
81
|
+
|
82
|
+
2) Return Calendar items providing
|
83
|
+
[CalendarView](https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.calendarview(v=exchg.80).aspx) (with recurring).
|
84
|
+
|
85
|
+
Supported `CalendarView` options/attributes:
|
86
|
+
* max_entries_returned
|
87
|
+
* start_date
|
88
|
+
* end_date
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
folder = Exchanger::Folder.find(:calendar, "email@example.com")
|
92
|
+
calendar_view_options = {
|
93
|
+
start_date: (DateTime.now - 1.week),
|
94
|
+
end_date: DateTime.now,
|
95
|
+
}
|
96
|
+
folder.expanded_items(calendar_view_options) # return Exchanger::CalendarItem items
|
97
|
+
```
|
98
|
+
|
99
|
+
Running specs with Exchange Server
|
100
|
+
==================================
|
101
|
+
|
102
|
+
The easiest way is to sign up for a Microsoft Office 365 free trial.
|
103
|
+
|
104
|
+
1. Create a random calendar entry in July 2016
|
105
|
+
2. Create a distribution list named 'Test'
|
106
|
+
3. Create `spec/config.yml` with your Exchange credentials
|
107
|
+
4. Create `spec/fixtures/get_user_availability.yml` with your Exchange email address
|
108
|
+
5. Clear the recorded VCR cassettes by removing `spec/cassettes`
|
109
|
+
6. Run the specs `rake spec`
|
110
|
+
|
111
|
+
It looks like Office 365 trial has some rate limits,
|
112
|
+
so you may have to record the VCR cassettes for each spec separately.
|
113
|
+
|
114
|
+
```
|
115
|
+
Exchanger::Operation::ResponseError:
|
116
|
+
An internal server error occurred. Try again later.
|
117
|
+
```
|
118
|
+
|
66
119
|
Alternatives
|
67
120
|
============
|
68
121
|
|
data/lib/exchanger.rb
CHANGED
@@ -4,6 +4,7 @@ require "base64"
|
|
4
4
|
require 'kconv' # Need for rubyntlm on Ruby 1.9
|
5
5
|
require 'tzinfo'
|
6
6
|
|
7
|
+
require "active_support"
|
7
8
|
require "active_support/core_ext"
|
8
9
|
require "nokogiri"
|
9
10
|
require "httpclient"
|
@@ -25,6 +26,7 @@ require "exchanger/elements/mailbox"
|
|
25
26
|
require "exchanger/elements/single_recipient"
|
26
27
|
require "exchanger/elements/attendee"
|
27
28
|
require "exchanger/elements/complete_name"
|
29
|
+
require "exchanger/elements/calendar_view"
|
28
30
|
# Entry elements
|
29
31
|
require "exchanger/elements/entry"
|
30
32
|
require "exchanger/elements/email_address"
|
@@ -57,5 +57,14 @@ module Exchanger
|
|
57
57
|
item.parent_folder = self
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
# Return items (also recurring calendar items) based on
|
62
|
+
# provided CalendarView options
|
63
|
+
def expanded_items(calendar_view_options)
|
64
|
+
calendar_view = CalendarView.new(calendar_view_options)
|
65
|
+
items = Item.find_calendar_view_set_by_folder_id(id, calendar_view)
|
66
|
+
|
67
|
+
items.each { |item| item.parent_folder = self }
|
68
|
+
end
|
60
69
|
end
|
61
70
|
end
|
@@ -55,5 +55,10 @@ module Exchanger
|
|
55
55
|
element :is_online_meeting, :type => Boolean
|
56
56
|
element :meeting_workspace_url
|
57
57
|
element :net_show_url
|
58
|
+
|
59
|
+
def create
|
60
|
+
CreateItem.run(:folder_id => parent_folder_id.id, :items => [self],
|
61
|
+
:send_meeting_invitations => "SendToAllAndSaveCopy")
|
62
|
+
end
|
58
63
|
end
|
59
64
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Exchanger
|
2
|
+
# The CalendarView element defines a FindItem operation
|
3
|
+
# as returning calendar items in a set as they appear in a calendar.
|
4
|
+
# <CalendarView MaxEntriesReturned="" StartDate="" EndDate="" />
|
5
|
+
|
6
|
+
# https://msdn.microsoft.com/en-us/library/aa564515.aspx
|
7
|
+
class CalendarView < Element
|
8
|
+
key :max_entries_returned
|
9
|
+
key :start_date, type: Time
|
10
|
+
key :end_date, type: Time
|
11
|
+
end
|
12
|
+
end
|
@@ -51,6 +51,15 @@ module Exchanger
|
|
51
51
|
response.items
|
52
52
|
end
|
53
53
|
|
54
|
+
def self.find_calendar_view_set_by_folder_id(folder_id, calendar_view)
|
55
|
+
response = FindItem.run(
|
56
|
+
folder_id: folder_id,
|
57
|
+
calendar_view: calendar_view,
|
58
|
+
)
|
59
|
+
|
60
|
+
response.items
|
61
|
+
end
|
62
|
+
|
54
63
|
attr_writer :parent_folder
|
55
64
|
|
56
65
|
def parent_folder
|
@@ -11,7 +11,8 @@ module Exchanger
|
|
11
11
|
# http://msdn.microsoft.com/en-us/library/aa563797.aspx
|
12
12
|
class CreateItem < Operation
|
13
13
|
class Request < Operation::Request
|
14
|
-
attr_accessor :folder_id, :email_address, :items
|
14
|
+
attr_accessor :folder_id, :email_address, :items,
|
15
|
+
:send_meeting_invitations
|
15
16
|
|
16
17
|
# Reset request options to defaults.
|
17
18
|
def reset
|
@@ -24,7 +25,8 @@ module Exchanger
|
|
24
25
|
Nokogiri::XML::Builder.new do |xml|
|
25
26
|
xml.send("soap:Envelope", "xmlns:soap" => NS["soap"], "xmlns:t" => NS["t"], "xmlns:xsi" => NS["xsi"], "xmlns:xsd" => NS["xsd"]) do
|
26
27
|
xml.send("soap:Body") do
|
27
|
-
xml.CreateItem("xmlns" => NS["m"]
|
28
|
+
xml.CreateItem("xmlns" => NS["m"],
|
29
|
+
'SendMeetingInvitations' => send_meeting_invitations) do
|
28
30
|
xml.SavedItemFolderId do
|
29
31
|
if folder_id.is_a?(Symbol)
|
30
32
|
xml.send("t:DistinguishedFolderId", "Id" => folder_id) do
|
@@ -4,7 +4,7 @@ module Exchanger
|
|
4
4
|
# http://msdn.microsoft.com/en-us/library/aa566107.aspx
|
5
5
|
class FindItem < Operation
|
6
6
|
class Request < Operation::Request
|
7
|
-
attr_accessor :folder_id, :traversal, :base_shape, :email_address
|
7
|
+
attr_accessor :folder_id, :traversal, :base_shape, :email_address, :calendar_view
|
8
8
|
|
9
9
|
# Reset request options to defaults.
|
10
10
|
def reset
|
@@ -12,6 +12,7 @@ module Exchanger
|
|
12
12
|
@traversal = :shallow
|
13
13
|
@base_shape = :all_properties
|
14
14
|
@email_address = nil
|
15
|
+
@calendar_view = nil
|
15
16
|
end
|
16
17
|
|
17
18
|
def to_xml
|
@@ -22,6 +23,9 @@ module Exchanger
|
|
22
23
|
xml.ItemShape do
|
23
24
|
xml.send "t:BaseShape", base_shape.to_s.camelize
|
24
25
|
end
|
26
|
+
if calendar_view
|
27
|
+
xml.CalendarView(calendar_view.to_xml.attributes)
|
28
|
+
end
|
25
29
|
xml.ParentFolderIds do
|
26
30
|
if folder_id.is_a?(Symbol)
|
27
31
|
xml.send("t:DistinguishedFolderId", "Id" => folder_id) do
|
data/lib/exchanger/version.rb
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
|
9
|
+
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
|
10
|
+
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n <soap:Body>\n <DeleteItem
|
11
|
+
xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\" DeleteType=\"HardDelete\">\n
|
12
|
+
\ <ItemIds>\n <t:ItemId Id=\"AAAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAEYAAAAAAFCCRZAuOKtKpGOhX84gI1gHAJoatVMmPNZLthU74SWegbgAAABF7aIAAJoatVMmPNZLthU74SWegbgAAABGa4QAAA==\"/>\n
|
13
|
+
\ </ItemIds>\n </DeleteItem>\n </soap:Body>\n</soap:Envelope>\n"
|
14
|
+
headers:
|
15
|
+
Soapaction:
|
16
|
+
- http://schemas.microsoft.com/exchange/services/2006/messages/DeleteItem
|
17
|
+
Content-Type:
|
18
|
+
- text/xml; charset=utf-8
|
19
|
+
Authorization:
|
20
|
+
- Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
Cache-Control:
|
27
|
+
- private
|
28
|
+
Transfer-Encoding:
|
29
|
+
- chunked
|
30
|
+
Content-Type:
|
31
|
+
- text/xml; charset=utf-8
|
32
|
+
Server:
|
33
|
+
- Microsoft-IIS/7.5
|
34
|
+
Requestid:
|
35
|
+
- 071b403f-65af-4951-84a1-86bedecb925a
|
36
|
+
Set-Cookie:
|
37
|
+
- exchangecookie=e376048b1e0346b7a76245c10898841a; expires=Fri, 11-Oct-2013
|
38
|
+
19:19:23 GMT; path=/; HttpOnly
|
39
|
+
X-Aspnet-Version:
|
40
|
+
- 2.0.50727
|
41
|
+
X-Powered-By:
|
42
|
+
- ASP.NET
|
43
|
+
X-Diaginfo:
|
44
|
+
- AMSPRD0710CA021
|
45
|
+
Date:
|
46
|
+
- Thu, 11 Oct 2012 19:19:23 GMT
|
47
|
+
body:
|
48
|
+
encoding: US-ASCII
|
49
|
+
string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
|
50
|
+
MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
|
51
|
+
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
|
52
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
|
53
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:DeleteItemResponse
|
54
|
+
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:DeleteItemResponseMessage
|
55
|
+
ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode></m:DeleteItemResponseMessage></m:ResponseMessages></m:DeleteItemResponse></s:Body></s:Envelope>
|
56
|
+
http_version:
|
57
|
+
recorded_at: Thu, 11 Oct 2012 19:19:23 GMT
|
58
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,61 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
|
9
|
+
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
|
10
|
+
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n <soap:Body>\n <CreateItem
|
11
|
+
xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\">\n
|
12
|
+
\ <SavedItemFolderId>\n <t:FolderId Id=\"AQAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAC4AAANQgkWQLjirSqRjoV/OICNYAQCaGrVTJjzWS7YVO+ElnoG4AAABRe2iAAAA\"/>\n
|
13
|
+
\ </SavedItemFolderId>\n <Items>\n <t:Contact/>\n </Items>\n
|
14
|
+
\ </CreateItem>\n </soap:Body>\n</soap:Envelope>\n"
|
15
|
+
headers:
|
16
|
+
Soapaction:
|
17
|
+
- http://schemas.microsoft.com/exchange/services/2006/messages/CreateItem
|
18
|
+
Content-Type:
|
19
|
+
- text/xml; charset=utf-8
|
20
|
+
Authorization:
|
21
|
+
- Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
|
22
|
+
response:
|
23
|
+
status:
|
24
|
+
code: 200
|
25
|
+
message: OK
|
26
|
+
headers:
|
27
|
+
Cache-Control:
|
28
|
+
- private
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Content-Type:
|
32
|
+
- text/xml; charset=utf-8
|
33
|
+
Server:
|
34
|
+
- Microsoft-IIS/7.5
|
35
|
+
Requestid:
|
36
|
+
- 07fa3a7f-6a09-4770-b26f-c0e066196b74
|
37
|
+
Set-Cookie:
|
38
|
+
- exchangecookie=5c2328ab96444ff1a4d39c1e0ea7239b; expires=Fri, 11-Oct-2013
|
39
|
+
19:19:23 GMT; path=/; HttpOnly
|
40
|
+
X-Aspnet-Version:
|
41
|
+
- 2.0.50727
|
42
|
+
X-Powered-By:
|
43
|
+
- ASP.NET
|
44
|
+
X-Diaginfo:
|
45
|
+
- AMSPRD0710CA006
|
46
|
+
Date:
|
47
|
+
- Thu, 11 Oct 2012 19:19:22 GMT
|
48
|
+
body:
|
49
|
+
encoding: US-ASCII
|
50
|
+
string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
|
51
|
+
MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
|
52
|
+
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
|
53
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
|
54
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:CreateItemResponse
|
55
|
+
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:CreateItemResponseMessage
|
56
|
+
ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:Items><t:Contact><t:ItemId
|
57
|
+
Id="AAAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAEYAAAAAAFCCRZAuOKtKpGOhX84gI1gHAJoatVMmPNZLthU74SWegbgAAABF7aIAAJoatVMmPNZLthU74SWegbgAAABGa4QAAA=="
|
58
|
+
ChangeKey="EQAAABYAAACaGrVTJjzWS7YVO+ElnoG4AAAARm+v"/></t:Contact></m:Items></m:CreateItemResponseMessage></m:ResponseMessages></m:CreateItemResponse></s:Body></s:Envelope>
|
59
|
+
http_version:
|
60
|
+
recorded_at: Thu, 11 Oct 2012 19:19:23 GMT
|
61
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,119 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n
|
9
|
+
\ <soap:Body>\n <GetItem xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"
|
10
|
+
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\">\n <ItemShape>\n
|
11
|
+
\ <t:BaseShape>AllProperties</t:BaseShape>\n </ItemShape>\n <ItemIds>\n
|
12
|
+
\ <t:ItemId Id=\"AAAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAEYAAAAAAFCCRZAuOKtKpGOhX84gI1gHAJoatVMmPNZLthU74SWegbgAAABF7aIAAJoatVMmPNZLthU74SWegbgAAABGa4UAAA==\"/>\n
|
13
|
+
\ </ItemIds>\n </GetItem>\n </soap:Body>\n</soap:Envelope>\n"
|
14
|
+
headers:
|
15
|
+
Soapaction:
|
16
|
+
- http://schemas.microsoft.com/exchange/services/2006/messages/GetItem
|
17
|
+
Content-Type:
|
18
|
+
- text/xml; charset=utf-8
|
19
|
+
Authorization:
|
20
|
+
- Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
|
21
|
+
response:
|
22
|
+
status:
|
23
|
+
code: 200
|
24
|
+
message: OK
|
25
|
+
headers:
|
26
|
+
Cache-Control:
|
27
|
+
- private
|
28
|
+
Transfer-Encoding:
|
29
|
+
- chunked
|
30
|
+
Content-Type:
|
31
|
+
- text/xml; charset=utf-8
|
32
|
+
Server:
|
33
|
+
- Microsoft-IIS/7.5
|
34
|
+
Requestid:
|
35
|
+
- 8ec07db1-033c-4813-ba49-83b9bc554c22
|
36
|
+
Set-Cookie:
|
37
|
+
- exchangecookie=039a3702ca6b4db89806e742c4a8cec8; expires=Fri, 11-Oct-2013
|
38
|
+
19:19:34 GMT; path=/; HttpOnly
|
39
|
+
X-Aspnet-Version:
|
40
|
+
- 2.0.50727
|
41
|
+
X-Powered-By:
|
42
|
+
- ASP.NET
|
43
|
+
X-Diaginfo:
|
44
|
+
- AMSPRD0710CA022
|
45
|
+
Date:
|
46
|
+
- Thu, 11 Oct 2012 19:19:33 GMT
|
47
|
+
body:
|
48
|
+
encoding: US-ASCII
|
49
|
+
string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
|
50
|
+
MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
|
51
|
+
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
|
52
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
|
53
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:GetItemResponse
|
54
|
+
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:GetItemResponseMessage
|
55
|
+
ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:Items><t:Contact><t:ItemId
|
56
|
+
Id="AAAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAEYAAAAAAFCCRZAuOKtKpGOhX84gI1gHAJoatVMmPNZLthU74SWegbgAAABF7aIAAJoatVMmPNZLthU74SWegbgAAABGa4UAAA=="
|
57
|
+
ChangeKey="EQAAABYAAACaGrVTJjzWS7YVO+ElnoG4AAAARm+z"/><t:ParentFolderId Id="AQAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAC4AAANQgkWQLjirSqRjoV/OICNYAQCaGrVTJjzWS7YVO+ElnoG4AAABRe2iAAAA"
|
58
|
+
ChangeKey="AQAAAA=="/><t:ItemClass>IPM.Contact</t:ItemClass><t:Subject/><t:Sensitivity>Normal</t:Sensitivity><t:Body
|
59
|
+
BodyType="Text"/><t:DateTimeReceived>2012-10-11T19:19:33Z</t:DateTimeReceived><t:Size>147</t:Size><t:Importance>Normal</t:Importance><t:IsSubmitted>false</t:IsSubmitted><t:IsDraft>true</t:IsDraft><t:IsFromMe>false</t:IsFromMe><t:IsResend>false</t:IsResend><t:IsUnmodified>false</t:IsUnmodified><t:DateTimeSent>2012-10-11T19:19:33Z</t:DateTimeSent><t:DateTimeCreated>2012-10-11T19:19:33Z</t:DateTimeCreated><t:DisplayCc/><t:DisplayTo/><t:HasAttachments>false</t:HasAttachments><t:Culture>en-US</t:Culture><t:FileAs/><t:FileAsMapping>None</t:FileAsMapping><t:DisplayName/></t:Contact></m:Items></m:GetItemResponseMessage></m:ResponseMessages></m:GetItemResponse></s:Body></s:Envelope>
|
60
|
+
http_version:
|
61
|
+
recorded_at: Thu, 11 Oct 2012 19:19:33 GMT
|
62
|
+
- request:
|
63
|
+
method: post
|
64
|
+
uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
|
65
|
+
body:
|
66
|
+
encoding: US-ASCII
|
67
|
+
string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n
|
68
|
+
\ <soap:Body>\n <GetFolder xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"
|
69
|
+
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\">\n <FolderShape>\n
|
70
|
+
\ <t:BaseShape>Default</t:BaseShape>\n </FolderShape>\n <FolderIds>\n
|
71
|
+
\ <t:FolderId Id=\"AQAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAC4AAANQgkWQLjirSqRjoV/OICNYAQCaGrVTJjzWS7YVO+ElnoG4AAABRe2iAAAA\"/>\n
|
72
|
+
\ </FolderIds>\n </GetFolder>\n </soap:Body>\n</soap:Envelope>\n"
|
73
|
+
headers:
|
74
|
+
Soapaction:
|
75
|
+
- http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder
|
76
|
+
Content-Type:
|
77
|
+
- text/xml; charset=utf-8
|
78
|
+
Authorization:
|
79
|
+
- Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
|
80
|
+
response:
|
81
|
+
status:
|
82
|
+
code: 200
|
83
|
+
message: OK
|
84
|
+
headers:
|
85
|
+
Cache-Control:
|
86
|
+
- private
|
87
|
+
Transfer-Encoding:
|
88
|
+
- chunked
|
89
|
+
Content-Type:
|
90
|
+
- text/xml; charset=utf-8
|
91
|
+
Server:
|
92
|
+
- Microsoft-IIS/7.5
|
93
|
+
Requestid:
|
94
|
+
- e5ab9ace-fd46-4b92-a9a2-3eb003bc0e5f
|
95
|
+
Set-Cookie:
|
96
|
+
- exchangecookie=ab3d13823795478fbd1ea7156aaaca84; expires=Fri, 11-Oct-2013
|
97
|
+
19:19:34 GMT; path=/; HttpOnly
|
98
|
+
X-Aspnet-Version:
|
99
|
+
- 2.0.50727
|
100
|
+
X-Powered-By:
|
101
|
+
- ASP.NET
|
102
|
+
X-Diaginfo:
|
103
|
+
- AMSPRD0710CA008
|
104
|
+
Date:
|
105
|
+
- Thu, 11 Oct 2012 19:19:34 GMT
|
106
|
+
body:
|
107
|
+
encoding: US-ASCII
|
108
|
+
string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
|
109
|
+
MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
|
110
|
+
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
|
111
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
|
112
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:GetFolderResponse
|
113
|
+
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:GetFolderResponseMessage
|
114
|
+
ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:Folders><t:ContactsFolder><t:FolderId
|
115
|
+
Id="AQAjAGViZWlnYXJ0c0BlYmVpZ2FydHMub25taWNyb3NvZnQuY29tAC4AAANQgkWQLjirSqRjoV/OICNYAQCaGrVTJjzWS7YVO+ElnoG4AAABRe2iAAAA"
|
116
|
+
ChangeKey="AwAAABYAAACaGrVTJjzWS7YVO+ElnoG4AAAARe3C"/><t:DisplayName>Contacts</t:DisplayName><t:TotalCount>7</t:TotalCount><t:ChildFolderCount>0</t:ChildFolderCount></t:ContactsFolder></m:Folders></m:GetFolderResponseMessage></m:ResponseMessages></m:GetFolderResponse></s:Body></s:Envelope>
|
117
|
+
http_version:
|
118
|
+
recorded_at: Thu, 11 Oct 2012 19:19:34 GMT
|
119
|
+
recorded_with: VCR 2.2.5
|