viewpoint 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|