viewpoint 0.0.5 → 0.1.0
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.
- data/README +84 -45
- data/Rakefile +7 -5
- data/TODO +6 -0
- data/VERSION +1 -1
- data/lib/exceptions/exceptions.rb +34 -0
- data/lib/extensions/string.rb +37 -0
- data/lib/model/calendar_folder.rb +45 -0
- data/lib/model/calendar_item.rb +145 -0
- data/lib/model/contact.rb +58 -0
- data/lib/model/contacts_folder.rb +35 -0
- data/lib/model/distribution_list.rb +26 -0
- data/lib/model/event.rb +118 -0
- data/lib/model/folder.rb +36 -0
- data/lib/model/generic_folder.rb +302 -0
- data/lib/model/item.rb +126 -0
- data/lib/model/mailbox_user.rb +107 -0
- data/lib/model/meeting_cancellation.rb +28 -0
- data/lib/{viewpoint/errors.rb → model/meeting_message.rb} +10 -14
- data/lib/model/meeting_request.rb +26 -0
- data/lib/model/meeting_response.rb +26 -0
- data/lib/model/message.rb +73 -0
- data/lib/model/model.rb +161 -0
- data/lib/model/search_folder.rb +36 -0
- data/lib/model/task.rb +62 -0
- data/lib/model/task_list.rb +19 -0
- data/lib/model/tasks_folder.rb +33 -0
- data/lib/soap/handsoap/builder.rb +22 -0
- data/lib/soap/handsoap/builders/ews_build_helpers.rb +317 -0
- data/lib/soap/handsoap/builders/ews_builder.rb +86 -0
- data/lib/soap/handsoap/ews_service.rb +646 -0
- data/lib/soap/handsoap/parser.rb +106 -0
- data/lib/soap/handsoap/parsers/ews_parser.rb +165 -0
- data/lib/soap/soap_provider.rb +75 -0
- data/lib/viewpoint.rb +98 -3
- data/preamble +1 -1
- data/test/spec/basic_functions.spec +51 -0
- data/test/spec/folder_subscriptions.spec +35 -0
- data/test/spec/folder_synchronization.spec +28 -0
- data/utils/ewsWSDL2rb.rb +29 -0
- metadata +101 -43
- data/lib/exchwebserv.rb +0 -6
- data/lib/soap/viewpoint.conf +0 -3
- data/lib/viewpoint/calendar.rb +0 -128
- data/lib/viewpoint/calendar_item.rb +0 -118
- data/lib/viewpoint/event.rb +0 -0
- data/lib/viewpoint/exchange_headers.rb +0 -49
- data/lib/viewpoint/exchwebserv.rb +0 -236
- data/lib/viewpoint/folder.rb +0 -358
- data/lib/viewpoint/item.rb +0 -101
- data/lib/viewpoint/mail.rb +0 -117
- data/lib/viewpoint/message.rb +0 -132
- data/lib/viewpoint/task.rb +0 -0
- data/lib/viewpoint/tasks.rb +0 -0
- data/lib/wsdl/defaultMappingRegistry.rb +0 -10680
- data/lib/wsdl/exchangeServiceBinding.rb +0 -349
- data/lib/wsdl/exchangeServiceTypes.rb +0 -11013
- data/test/spec/basic_features_spec.rb +0 -37
- data/test/test_client.rb +0 -13
- data/test/testrestrict.rb +0 -75
data/preamble
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
$: << File.dirname(__FILE__) + '/../../lib/'
|
2
|
+
require 'kconv'
|
3
|
+
require 'viewpoint'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
# To run this test put a file called 'creds.json' in this directory with the following format:
|
7
|
+
# {"user":"myuser","pass":"mypass","endpoint":"https://mydomain.com/ews/exchange.asmx"}
|
8
|
+
|
9
|
+
|
10
|
+
describe "Test the basic features of Viewpoint" do
|
11
|
+
before(:all) do
|
12
|
+
creds = JSON.load(File.open('spec/creds.json','r'))
|
13
|
+
Viewpoint::EWS::EWS.endpoint = creds['endpoint']
|
14
|
+
Viewpoint::EWS::EWS.set_auth(creds['user'],creds['pass'])
|
15
|
+
@ews = Viewpoint::EWS::EWS.instance
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should retrieve the various Folder Types' do
|
19
|
+
(Viewpoint::EWS::GenericFolder.get_folder :inbox).should be_instance_of(Viewpoint::EWS::Folder)
|
20
|
+
(Viewpoint::EWS::GenericFolder.get_folder :calendar).should be_instance_of(Viewpoint::EWS::CalendarFolder)
|
21
|
+
(Viewpoint::EWS::GenericFolder.get_folder :contacts).should be_instance_of(Viewpoint::EWS::ContactsFolder)
|
22
|
+
(Viewpoint::EWS::GenericFolder.get_folder :tasks).should be_instance_of(Viewpoint::EWS::TasksFolder)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should retrieve an Array of Folder Types' do
|
26
|
+
flds = Viewpoint::EWS::GenericFolder.find_folders
|
27
|
+
flds.should be_instance_of(Array)
|
28
|
+
flds.first.should be_kind_of(Viewpoint::EWS::GenericFolder)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should retrieve messages from a mail folder' do
|
32
|
+
inbox = Viewpoint::EWS::GenericFolder.get_folder :inbox
|
33
|
+
msgs = inbox.find_items
|
34
|
+
msgs.should be_instance_of(Array)
|
35
|
+
if(msgs.length > 0)
|
36
|
+
msgs.first.should be_kind_of(Viewpoint::EWS::Item)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should retrieve an item by id if one exists' do
|
41
|
+
inbox = Viewpoint::EWS::GenericFolder.get_folder :inbox
|
42
|
+
msgs = inbox.find_items
|
43
|
+
if(msgs.length > 0)
|
44
|
+
item = inbox.get_item(msgs.first.id)
|
45
|
+
item.should be_kind_of(Viewpoint::EWS::Item)
|
46
|
+
else
|
47
|
+
msgs.should be_empty
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
$: << File.dirname(__FILE__) + '/../../lib/'
|
2
|
+
require 'kconv'
|
3
|
+
require 'viewpoint'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
# To run this test put a file called 'creds.json' in this directory with the following format:
|
7
|
+
# {"user":"myuser","pass":"mypass","endpoint":"https://mydomain.com/ews/exchange.asmx"}
|
8
|
+
|
9
|
+
|
10
|
+
describe "Folder Subscriptions" do
|
11
|
+
before(:all) do
|
12
|
+
creds = JSON.load(File.open('spec/creds.json','r'))
|
13
|
+
Viewpoint::EWS::EWS.endpoint = creds['endpoint']
|
14
|
+
Viewpoint::EWS::EWS.set_auth(creds['user'],creds['pass'])
|
15
|
+
@ews = Viewpoint::EWS::EWS.instance
|
16
|
+
@inbox = Viewpoint::EWS::GenericFolder.get_folder :inbox
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "Example Folder Subscription for the Inbox" do
|
20
|
+
|
21
|
+
it 'should subscribe to the Inbox Folder' do
|
22
|
+
@inbox.subscribe.should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should retrieve new subscription events' do
|
26
|
+
@inbox.get_events.should_not be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should unsubscribe to the Inbox Folder' do
|
30
|
+
@inbox.unsubscribe.should be_true
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
$: << File.dirname(__FILE__) + '/../../lib/'
|
2
|
+
require 'kconv'
|
3
|
+
require 'viewpoint'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
# To run this test put a file called 'creds.json' in this directory with the following format:
|
7
|
+
# {"user":"myuser","pass":"mypass","endpoint":"https://mydomain.com/ews/exchange.asmx"}
|
8
|
+
|
9
|
+
|
10
|
+
describe "Folder Synchronization" do
|
11
|
+
before(:all) do
|
12
|
+
creds = JSON.load(File.open('spec/creds.json','r'))
|
13
|
+
Viewpoint::EWS::EWS.endpoint = creds['endpoint']
|
14
|
+
Viewpoint::EWS::EWS.set_auth(creds['user'],creds['pass'])
|
15
|
+
@ews = Viewpoint::EWS::EWS.instance
|
16
|
+
@inbox = Viewpoint::EWS::GenericFolder.get_folder :inbox
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "Example Folder Synchronization for the Inbox" do
|
20
|
+
|
21
|
+
it 'should start synchronization of the Inbox Folder' do
|
22
|
+
@inbox.sync_items!(2)
|
23
|
+
@inbox.sync_state.should_not be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/utils/ewsWSDL2rb.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
wsdl = Nokogiri::XML(File.read('Services.wsdl'))
|
5
|
+
|
6
|
+
methods = []
|
7
|
+
|
8
|
+
wsdl.xpath('//wsdl:binding/wsdl:operation').each do |op|
|
9
|
+
meth_name = op[:name].gsub(/([a-z])([A-Z])/, '\1_\2').downcase
|
10
|
+
methods << meth_name
|
11
|
+
str = " def #{meth_name}\n"
|
12
|
+
str << " action = '#{op.xpath('soap:operation').first[:soapAction]}'\n"
|
13
|
+
str << " resp = invoke('tns:#{op[:name]}', :soap_action => action) do |#{meth_name}|\n"
|
14
|
+
str << " build_#{meth_name}!(#{meth_name})\n"
|
15
|
+
str << " end\n"
|
16
|
+
str << " parse_#{meth_name}(resp)\n"
|
17
|
+
str << " end\n\n"
|
18
|
+
puts str
|
19
|
+
end
|
20
|
+
|
21
|
+
puts "\n\n ## Helper methods (builders and parsers)\n"
|
22
|
+
puts " private\n\n"
|
23
|
+
methods.each do |meth|
|
24
|
+
str = " def build_#{meth}!(#{meth})\n"
|
25
|
+
str << " end\n\n"
|
26
|
+
str << " def parse_#{meth}()\n"
|
27
|
+
str << " end\n\n"
|
28
|
+
puts str
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: viewpoint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Dan Wanek
|
@@ -9,40 +14,75 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-08-02 00:00:00 -05:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
name: handsoap
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
25
33
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
34
|
+
name: nokogiri
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
27
44
|
type: :runtime
|
28
|
-
|
29
|
-
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: httpclient
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
30
51
|
requirements:
|
31
52
|
- - ">="
|
32
53
|
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
33
56
|
version: "0"
|
34
|
-
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id003
|
35
59
|
- !ruby/object:Gem::Dependency
|
36
60
|
name: rubyntlm
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
37
70
|
type: :runtime
|
38
|
-
|
39
|
-
|
71
|
+
version_requirements: *id004
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: icalendar
|
74
|
+
prerelease: false
|
75
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
40
77
|
requirements:
|
41
78
|
- - ">="
|
42
79
|
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
45
|
-
|
80
|
+
segments:
|
81
|
+
- 0
|
82
|
+
version: "0"
|
83
|
+
type: :runtime
|
84
|
+
version_requirements: *id005
|
85
|
+
description: " \tA Ruby client access library for Microsoft Exchange Web Services (EWS). Examples can be found here: http://distributed-frostbite.blogspot.com\n"
|
46
86
|
email: dan.wanek@gmail.com
|
47
87
|
executables: []
|
48
88
|
|
@@ -55,6 +95,7 @@ files:
|
|
55
95
|
- COPYING.txt
|
56
96
|
- README
|
57
97
|
- Rakefile
|
98
|
+
- TODO
|
58
99
|
- VERSION
|
59
100
|
- examples/cal2ical.rb
|
60
101
|
- examples/ews_fusefs.rb
|
@@ -102,58 +143,75 @@ files:
|
|
102
143
|
- examples/webclient/views/layout.haml
|
103
144
|
- examples/webclient/views/mail.haml
|
104
145
|
- examples/webclient/views/welcome.haml
|
105
|
-
- lib/
|
106
|
-
- lib/
|
146
|
+
- lib/exceptions/exceptions.rb
|
147
|
+
- lib/extensions/string.rb
|
148
|
+
- lib/model/calendar_folder.rb
|
149
|
+
- lib/model/calendar_item.rb
|
150
|
+
- lib/model/contact.rb
|
151
|
+
- lib/model/contacts_folder.rb
|
152
|
+
- lib/model/distribution_list.rb
|
153
|
+
- lib/model/event.rb
|
154
|
+
- lib/model/folder.rb
|
155
|
+
- lib/model/generic_folder.rb
|
156
|
+
- lib/model/item.rb
|
157
|
+
- lib/model/mailbox_user.rb
|
158
|
+
- lib/model/meeting_cancellation.rb
|
159
|
+
- lib/model/meeting_message.rb
|
160
|
+
- lib/model/meeting_request.rb
|
161
|
+
- lib/model/meeting_response.rb
|
162
|
+
- lib/model/message.rb
|
163
|
+
- lib/model/model.rb
|
164
|
+
- lib/model/search_folder.rb
|
165
|
+
- lib/model/task.rb
|
166
|
+
- lib/model/task_list.rb
|
167
|
+
- lib/model/tasks_folder.rb
|
168
|
+
- lib/soap/handsoap/builder.rb
|
169
|
+
- lib/soap/handsoap/builders/ews_build_helpers.rb
|
170
|
+
- lib/soap/handsoap/builders/ews_builder.rb
|
171
|
+
- lib/soap/handsoap/ews_service.rb
|
172
|
+
- lib/soap/handsoap/parser.rb
|
173
|
+
- lib/soap/handsoap/parsers/ews_parser.rb
|
174
|
+
- lib/soap/soap_provider.rb
|
107
175
|
- lib/viewpoint.rb
|
108
|
-
- lib/viewpoint/calendar.rb
|
109
|
-
- lib/viewpoint/calendar_item.rb
|
110
|
-
- lib/viewpoint/errors.rb
|
111
|
-
- lib/viewpoint/event.rb
|
112
|
-
- lib/viewpoint/exchange_headers.rb
|
113
|
-
- lib/viewpoint/exchwebserv.rb
|
114
|
-
- lib/viewpoint/folder.rb
|
115
|
-
- lib/viewpoint/item.rb
|
116
|
-
- lib/viewpoint/mail.rb
|
117
|
-
- lib/viewpoint/message.rb
|
118
|
-
- lib/viewpoint/task.rb
|
119
|
-
- lib/viewpoint/tasks.rb
|
120
|
-
- lib/wsdl/defaultMappingRegistry.rb
|
121
|
-
- lib/wsdl/exchangeServiceBinding.rb
|
122
|
-
- lib/wsdl/exchangeServiceTypes.rb
|
123
176
|
- preamble
|
124
|
-
- test/spec/
|
125
|
-
- test/
|
126
|
-
- test/
|
177
|
+
- test/spec/basic_functions.spec
|
178
|
+
- test/spec/folder_subscriptions.spec
|
179
|
+
- test/spec/folder_synchronization.spec
|
180
|
+
- utils/ewsWSDL2rb.rb
|
127
181
|
has_rdoc: true
|
128
182
|
homepage: http://github.com/zenchild/Viewpoint
|
129
183
|
licenses: []
|
130
184
|
|
131
|
-
post_install_message:
|
185
|
+
post_install_message:
|
132
186
|
rdoc_options:
|
133
187
|
- -x
|
134
|
-
- wsdl/
|
135
|
-
- -x
|
136
188
|
- test/
|
137
189
|
- -x
|
138
190
|
- examples/
|
139
191
|
require_paths:
|
140
192
|
- lib
|
141
193
|
required_ruby_version: !ruby/object:Gem::Requirement
|
194
|
+
none: false
|
142
195
|
requirements:
|
143
196
|
- - ">="
|
144
197
|
- !ruby/object:Gem::Version
|
198
|
+
segments:
|
199
|
+
- 1
|
200
|
+
- 8
|
201
|
+
- 7
|
145
202
|
version: 1.8.7
|
146
|
-
version:
|
147
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
148
205
|
requirements:
|
149
206
|
- - ">="
|
150
207
|
- !ruby/object:Gem::Version
|
208
|
+
segments:
|
209
|
+
- 0
|
151
210
|
version: "0"
|
152
|
-
version:
|
153
211
|
requirements: []
|
154
212
|
|
155
213
|
rubyforge_project:
|
156
|
-
rubygems_version: 1.3.
|
214
|
+
rubygems_version: 1.3.7
|
157
215
|
signing_key:
|
158
216
|
specification_version: 3
|
159
217
|
summary: A Ruby client access library for Microsoft Exchange Web Services (EWS)
|
data/lib/exchwebserv.rb
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
# This exists for legacy reasons and will be depreciated soon
|
2
|
-
warn "*******************************************"
|
3
|
-
warn "Requiring exchwebserv is depreciated and will be removed soon.\nPlease require 'viewpoint'"
|
4
|
-
warn "*******************************************"
|
5
|
-
|
6
|
-
require 'viewpoint'
|
data/lib/soap/viewpoint.conf
DELETED
data/lib/viewpoint/calendar.rb
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
#############################################################################
|
2
|
-
# Copyright © 2009 Dan Wanek <dan.wanek@gmail.com>
|
3
|
-
#
|
4
|
-
#
|
5
|
-
# This file is part of Viewpoint.
|
6
|
-
#
|
7
|
-
# Viewpoint is free software: you can redistribute it and/or
|
8
|
-
# modify it under the terms of the GNU General Public License as published
|
9
|
-
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
-
# your option) any later version.
|
11
|
-
#
|
12
|
-
# Viewpoint is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
-
# Public License for more details.
|
16
|
-
#
|
17
|
-
# You should have received a copy of the GNU General Public License along
|
18
|
-
# with Viewpoint. If not, see <http://www.gnu.org/licenses/>.
|
19
|
-
#############################################################################
|
20
|
-
$:.unshift(File.dirname(__FILE__))
|
21
|
-
require 'rubygems'
|
22
|
-
require 'icalendar'
|
23
|
-
require 'wsdl/exchangeServiceBinding'
|
24
|
-
# --- Folder Types ---
|
25
|
-
require 'folder'
|
26
|
-
# --- Item Types ---
|
27
|
-
require 'calendar_item'
|
28
|
-
#require 'meeting_request'
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
class Viewpoint::CalendarFolder < Viewpoint::Folder
|
33
|
-
include Viewpoint
|
34
|
-
|
35
|
-
# initialize with an item of CalendarFolderType
|
36
|
-
def initialize(folder)
|
37
|
-
# Call initialize in the
|
38
|
-
super(folder)
|
39
|
-
end
|
40
|
-
|
41
|
-
def get_todays_events
|
42
|
-
get_events(DateTime.parse(Date.today.to_s), DateTime.parse(Date.today.next.to_s))
|
43
|
-
end
|
44
|
-
|
45
|
-
def get_weeks_events
|
46
|
-
start_date = Date.today
|
47
|
-
end_date = (start_date + ( 6 - start_date.wday))
|
48
|
-
|
49
|
-
get_events(DateTime.parse(start_date.to_s), DateTime.parse(end_date.to_s))
|
50
|
-
end
|
51
|
-
|
52
|
-
# Get events between a certain time period. Defaults to "today"
|
53
|
-
# Input: DateTime of start, DateTime of end
|
54
|
-
# You can get a year of events by passing 'nil, nil', but you should really consider using synchronization then.
|
55
|
-
# This method will return an Array of CalendarItem
|
56
|
-
def get_events(start_time = (DateTime.parse(Date.today.to_s)), end_time = (DateTime.parse(Date.today.next.to_s)))
|
57
|
-
find_item_t = FindItemType.new
|
58
|
-
find_item_t.xmlattr_Traversal = ItemQueryTraversalType::Shallow
|
59
|
-
item_shape = ItemResponseShapeType.new(DefaultShapeNamesType::Default, false)
|
60
|
-
|
61
|
-
find_item_t.itemShape = item_shape
|
62
|
-
|
63
|
-
folder_ids = NonEmptyArrayOfBaseFolderIdsType.new()
|
64
|
-
dist_folder = DistinguishedFolderIdType.new
|
65
|
-
dist_folder.xmlattr_Id = DistinguishedFolderIdNameType.new(@display_name.downcase)
|
66
|
-
folder_ids.distinguishedFolderId = dist_folder
|
67
|
-
find_item_t.parentFolderIds = folder_ids
|
68
|
-
|
69
|
-
# If we pass nil, force times to be:
|
70
|
-
# start: 1 years ago
|
71
|
-
# end: 1 years from now
|
72
|
-
cal_span = CalendarViewType.new
|
73
|
-
if ( start_time == nil or end_time == nil)
|
74
|
-
cal_span.xmlattr_StartDate = DateTime.parse((Date.today - 365).to_s).to_s
|
75
|
-
cal_span.xmlattr_EndDate = DateTime.parse((Date.today + 365).to_s).to_s
|
76
|
-
find_item_t.calendarView = cal_span
|
77
|
-
else
|
78
|
-
cal_span.xmlattr_StartDate = start_time.to_s
|
79
|
-
cal_span.xmlattr_EndDate = end_time.to_s
|
80
|
-
find_item_t.calendarView = cal_span
|
81
|
-
end
|
82
|
-
|
83
|
-
resp = find_items(find_item_t)
|
84
|
-
if resp != nil
|
85
|
-
cal_items = []
|
86
|
-
|
87
|
-
resp.rootFolder.items.calendarItem.each do |cali|
|
88
|
-
cal_items << CalendarItem.new(cali, self)
|
89
|
-
end
|
90
|
-
# TODO: Handle the following types of Calendar data
|
91
|
-
# meetingMessage
|
92
|
-
# meetingRequest
|
93
|
-
# meetingResponse
|
94
|
-
# meetingCancellation
|
95
|
-
|
96
|
-
return cal_items
|
97
|
-
else
|
98
|
-
return resp # return nil
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
|
103
|
-
# Returns an Icalendar::Calendar object
|
104
|
-
# Input: DateTime of start, DateTime of end
|
105
|
-
def to_ical(dtstart = nil, dtend = nil)
|
106
|
-
ical = Icalendar::Calendar.new
|
107
|
-
events = get_events(dtstart, dtend)
|
108
|
-
events.each do |ev|
|
109
|
-
ical.add_event(ev.to_ical_event)
|
110
|
-
end
|
111
|
-
return ical
|
112
|
-
end
|
113
|
-
|
114
|
-
|
115
|
-
# See docs for Folder::get_item
|
116
|
-
def get_item(item_id)
|
117
|
-
cali = super(item_id, "calendarItem", true)
|
118
|
-
end
|
119
|
-
|
120
|
-
def get_event(item_id)
|
121
|
-
begin
|
122
|
-
return CalendarItem.new(get_item(item_id), self)
|
123
|
-
rescue InvalidEWSItemError => e
|
124
|
-
return nil
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|