viewpoint 0.1.26 → 1.1.1
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 +203 -0
- data/lib/ews/calendar_accessors.rb +34 -0
- data/lib/ews/connection.rb +140 -0
- data/lib/ews/connection_helper.rb +35 -0
- data/lib/ews/convert_accessors.rb +56 -0
- data/lib/{exceptions/exceptions.rb → ews/errors.rb} +29 -19
- data/lib/ews/ews_client.rb +105 -0
- data/lib/ews/exceptions/exceptions.rb +61 -0
- data/lib/ews/folder_accessors.rb +264 -0
- data/lib/ews/impersonation.rb +30 -0
- data/lib/ews/item_accessors.rb +242 -0
- data/lib/ews/mailbox_accessors.rb +92 -0
- data/lib/ews/meeting_accessors.rb +39 -0
- data/lib/ews/message_accessors.rb +93 -0
- data/lib/ews/push_subscription_accessors.rb +33 -0
- data/lib/ews/room_accessors.rb +48 -0
- data/lib/ews/roomlist_accessors.rb +47 -0
- data/lib/ews/soap.rb +64 -0
- data/lib/ews/soap/builders/ews_builder.rb +1384 -0
- data/lib/ews/soap/ews_response.rb +84 -0
- data/lib/ews/soap/ews_soap_availability_response.rb +58 -0
- data/lib/ews/soap/ews_soap_free_busy_response.rb +119 -0
- data/lib/ews/soap/ews_soap_response.rb +103 -0
- data/lib/ews/soap/ews_soap_room_response.rb +53 -0
- data/lib/ews/soap/ews_soap_roomlist_response.rb +54 -0
- data/lib/ews/soap/exchange_availability.rb +61 -0
- data/lib/ews/soap/exchange_data_services.rb +780 -0
- data/lib/ews/soap/exchange_notification.rb +146 -0
- data/lib/ews/soap/exchange_synchronization.rb +93 -0
- data/lib/ews/soap/exchange_time_zones.rb +56 -0
- data/lib/ews/soap/exchange_user_configuration.rb +33 -0
- data/lib/ews/soap/exchange_web_service.rb +264 -0
- data/lib/{model/item_attachment.rb → ews/soap/parsers/ews_parser.rb} +24 -14
- data/lib/ews/soap/parsers/ews_sax_document.rb +70 -0
- data/lib/ews/soap/response_message.rb +80 -0
- data/lib/ews/soap/responses/create_attachment_response_message.rb +47 -0
- data/lib/{model/meeting_message.rb → ews/soap/responses/create_item_response_message.rb} +7 -10
- data/lib/ews/soap/responses/find_item_response_message.rb +80 -0
- data/lib/ews/soap/responses/get_events_response_message.rb +53 -0
- data/lib/ews/soap/responses/send_notification_response_message.rb +59 -0
- data/lib/{model/attachment.rb → ews/soap/responses/subscribe_response_message.rb} +17 -13
- data/lib/{model/attendee.rb → ews/soap/responses/sync_folder_hierarchy_response_message.rb} +14 -15
- data/lib/ews/soap/responses/sync_folder_items_response_message.rb +36 -0
- data/lib/ews/templates/calendar_item.rb +79 -0
- data/lib/ews/templates/forward_item.rb +24 -0
- data/lib/ews/templates/message.rb +85 -0
- data/lib/ews/templates/reply_to_item.rb +25 -0
- data/lib/ews/templates/task.rb +74 -0
- data/lib/ews/types.rb +194 -0
- data/lib/ews/types/attachment.rb +77 -0
- data/lib/{model/meeting_cancellation.rb → ews/types/attendee.rb} +9 -8
- data/lib/ews/types/calendar_folder.rb +50 -0
- data/lib/ews/types/calendar_item.rb +130 -0
- data/lib/ews/types/contact.rb +7 -0
- data/lib/ews/types/contacts_folder.rb +8 -0
- data/lib/ews/types/copied_event.rb +51 -0
- data/lib/{soap/handsoap/builder.rb → ews/types/created_event.rb} +5 -2
- data/lib/ews/types/deleted_event.rb +24 -0
- data/lib/ews/types/distribution_list.rb +7 -0
- data/lib/ews/types/event.rb +62 -0
- data/lib/ews/types/export_items_response_message.rb +52 -0
- data/lib/ews/types/file_attachment.rb +65 -0
- data/lib/ews/types/folder.rb +60 -0
- data/lib/ews/types/free_busy_changed_event.rb +24 -0
- data/lib/ews/types/generic_folder.rb +418 -0
- data/lib/ews/types/item.rb +447 -0
- data/lib/ews/types/item_attachment.rb +84 -0
- data/lib/{model → ews/types}/item_field_uri_map.rb +2 -18
- data/lib/ews/types/mailbox_user.rb +156 -0
- data/lib/ews/types/meeting_cancellation.rb +7 -0
- data/lib/ews/types/meeting_message.rb +7 -0
- data/lib/ews/types/meeting_request.rb +7 -0
- data/lib/ews/types/meeting_response.rb +7 -0
- data/lib/ews/types/message.rb +7 -0
- data/lib/ews/types/modified_event.rb +48 -0
- data/lib/{extensions/string.rb → ews/types/moved_event.rb} +31 -15
- data/lib/ews/types/new_mail_event.rb +24 -0
- data/lib/ews/types/out_of_office.rb +147 -0
- data/lib/ews/types/post_item.rb +7 -0
- data/lib/ews/types/search_folder.rb +8 -0
- data/lib/ews/types/status_event.rb +39 -0
- data/lib/ews/types/task.rb +41 -0
- data/lib/ews/types/tasks_folder.rb +27 -0
- data/lib/viewpoint.rb +85 -108
- data/lib/{model/distribution_list.rb → viewpoint/logging.rb} +6 -3
- data/lib/{model/meeting_response.rb → viewpoint/logging/config.rb} +3 -3
- data/lib/viewpoint/string_utils.rb +76 -0
- metadata +156 -123
- data/README +0 -114
- data/lib/model/calendar_folder.rb +0 -67
- data/lib/model/calendar_item.rb +0 -267
- data/lib/model/contact.rb +0 -238
- data/lib/model/contacts_folder.rb +0 -46
- data/lib/model/event.rb +0 -116
- data/lib/model/file_attachment.rb +0 -53
- data/lib/model/folder.rb +0 -47
- data/lib/model/generic_folder.rb +0 -461
- data/lib/model/item.rb +0 -312
- data/lib/model/mailbox_user.rb +0 -146
- data/lib/model/meeting_request.rb +0 -39
- data/lib/model/message.rb +0 -142
- data/lib/model/model.rb +0 -269
- data/lib/model/search_folder.rb +0 -48
- data/lib/model/task.rb +0 -121
- data/lib/model/tasks_folder.rb +0 -44
- data/lib/soap/handsoap/builders/ews_build_helpers.rb +0 -383
- data/lib/soap/handsoap/builders/ews_builder.rb +0 -146
- data/lib/soap/handsoap/ews_service.rb +0 -790
- data/lib/soap/handsoap/parser.rb +0 -104
- data/lib/soap/handsoap/parsers/ews_parser.rb +0 -245
- data/lib/soap/soap_provider.rb +0 -64
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
=begin
|
|
2
|
-
This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
|
|
3
|
-
|
|
4
|
-
Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
|
|
5
|
-
|
|
6
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
you may not use this file except in compliance with the License.
|
|
8
|
-
You may obtain a copy of the License at
|
|
9
|
-
|
|
10
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
|
|
12
|
-
Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
See the License for the specific language governing permissions and
|
|
16
|
-
limitations under the License.
|
|
17
|
-
=end
|
|
18
|
-
|
|
19
|
-
module Viewpoint
|
|
20
|
-
module EWS
|
|
21
|
-
class MeetingRequest < Item
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
|
|
26
|
-
def init_methods
|
|
27
|
-
super()
|
|
28
|
-
define_str_var :conversation_index, :conversation_topic, :internet_message_id, :references
|
|
29
|
-
define_mbox_users :to_recipients, :cc_recipients, :bcc_recipients, :reply_to, :required_attendees, :optional_attendees
|
|
30
|
-
define_mbox_user :from, :sender, :received_by, :received_representing, :organizer
|
|
31
|
-
define_bool_var :is_read, :is_read_receipt_requested, :is_response_requested, :is_delivery_receipt_requested, :is_draft, :is_from_me
|
|
32
|
-
define_bool_var :is_all_day_event, :is_cancelled, :is_delegated, :is_meeting, :is_out_of_date, :is_recurring, :is_resend
|
|
33
|
-
define_bool_var :is_submitted, :is_unmodified, :allow_new_time_proposal
|
|
34
|
-
define_int_var :adjacent_meeting_count, :appointment_sequence_number, :appointment_state, :conflicting_meeting_count
|
|
35
|
-
define_datetime_var :start, :end
|
|
36
|
-
end
|
|
37
|
-
end # MeetingRequest
|
|
38
|
-
end # EWS
|
|
39
|
-
end # Viewpoint
|
data/lib/model/message.rb
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
=begin
|
|
2
|
-
This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
|
|
3
|
-
|
|
4
|
-
Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
|
|
5
|
-
|
|
6
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
you may not use this file except in compliance with the License.
|
|
8
|
-
You may obtain a copy of the License at
|
|
9
|
-
|
|
10
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
|
|
12
|
-
Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
See the License for the specific language governing permissions and
|
|
16
|
-
limitations under the License.
|
|
17
|
-
=end
|
|
18
|
-
|
|
19
|
-
module Viewpoint
|
|
20
|
-
module EWS
|
|
21
|
-
class Message < Item
|
|
22
|
-
|
|
23
|
-
# Send an E-mail message
|
|
24
|
-
#
|
|
25
|
-
# @param [String] subject The message subject
|
|
26
|
-
# @param [String] body The message body
|
|
27
|
-
# @param [Array] to_recipients An array of e-mail addresses to send to
|
|
28
|
-
# @param [Array] cc_recipients An array of e-mail addresses to send to
|
|
29
|
-
# @param [Array] bcc_recipients An array of e-mail addresses to send to
|
|
30
|
-
# @param [Array<File>] file_attachments An array of File objects to read data from that
|
|
31
|
-
# will attach to this message.
|
|
32
|
-
# @return [Message,true] Returns true if the message is sent, if draft is true it will return the Message object
|
|
33
|
-
# or it raises an error with a message stating why the e-mail could not be sent.
|
|
34
|
-
def self.send(subject, body, to_recipients, cc_recipients=[], bcc_recipients=[], file_attachments=nil, draft=false)
|
|
35
|
-
item = {}
|
|
36
|
-
item[:subject] = {:text => subject}
|
|
37
|
-
item[:body] = {:text => body, :body_type => 'Text'} unless body.nil?
|
|
38
|
-
to_recipients.each do |a|
|
|
39
|
-
item[:to_recipients] = [] unless item[:to_recipients].is_a?(Array)
|
|
40
|
-
item[:to_recipients] << {:mailbox => {:email_address => {:text => a}}}
|
|
41
|
-
end
|
|
42
|
-
cc_recipients.each do |a|
|
|
43
|
-
item[:cc_recipients] = [] unless item[:cc_recipients].is_a?(Array)
|
|
44
|
-
item[:cc_recipients] << {:mailbox => {:email_address => {:text => a}}}
|
|
45
|
-
end unless cc_recipients.nil?
|
|
46
|
-
bcc_recipients.each do |a|
|
|
47
|
-
item[:bcc_recipients] = [] unless item[:bcc_recipients].is_a?(Array)
|
|
48
|
-
item[:bcc_recipients] << {:mailbox => {:email_address => {:text => a}}}
|
|
49
|
-
end unless bcc_recipients.nil?
|
|
50
|
-
|
|
51
|
-
conn = Viewpoint::EWS::EWS.instance
|
|
52
|
-
resp = conn.ews.create_message_item(:drafts, item, 'SaveOnly')
|
|
53
|
-
(resp.status == 'Success') || (raise EwsError, "Could not send message. #{resp.code}: #{resp.message}")
|
|
54
|
-
msg_key = resp.items.first.keys.first
|
|
55
|
-
msg_id = resp.items.first[msg_key][:item_id]
|
|
56
|
-
msg_id = add_attachments(msg_id, file_attachments) unless (file_attachments.nil? || file_attachments.empty?)
|
|
57
|
-
if !draft
|
|
58
|
-
resp = conn.ews.send_item([msg_id])
|
|
59
|
-
(resp.status == 'Success') || (raise EwsError, "Could not send message. #{resp.code}: #{resp.message}")
|
|
60
|
-
else
|
|
61
|
-
self.new({:item_id => msg_id})
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Initialize an Exchange Web Services item of type Message
|
|
66
|
-
def initialize(ews_item, opts={})
|
|
67
|
-
super(ews_item, opts)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def headers
|
|
71
|
-
deepen! if @shallow
|
|
72
|
-
return @headers if defined?(@headers) && !@headers.empty?
|
|
73
|
-
return nil unless @ews_item.has_key?(:internet_message_headers)
|
|
74
|
-
@headers = {}
|
|
75
|
-
# @todo When ruby 1.9 becomes more pervasive the Enumerator#each_with_object
|
|
76
|
-
#@headers ||= @ews_item[:internet_message_headers][:internet_message_header].each_with_object({}) do |h,obj|
|
|
77
|
-
@ews_item[:internet_message_headers][:internet_message_header].each do |h|
|
|
78
|
-
@headers[h[:header_name]] = h[:text]
|
|
79
|
-
end
|
|
80
|
-
@headers
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
# This creates an object of type Mail (mail gem) and allows us to
|
|
85
|
-
# manipulate and output Message Items in standards compliant ways.
|
|
86
|
-
# @see http://www.ietf.org/rfc/rfc2822.txt
|
|
87
|
-
def to_mail
|
|
88
|
-
mail = Mail.new
|
|
89
|
-
unless(headers.nil?)
|
|
90
|
-
mail.received headers['Received']
|
|
91
|
-
mail.content_type headers['Content-Type']
|
|
92
|
-
mail.content_transfer_encoding headers['Content-Transfer-Encoding']
|
|
93
|
-
end
|
|
94
|
-
mail.date date_time_sent unless date_time_sent.nil?
|
|
95
|
-
mail.message_id internet_message_id unless internet_message_id.nil?
|
|
96
|
-
mail.in_reply_to in_reply_to unless in_reply_to.nil?
|
|
97
|
-
mail.references references unless references.nil?
|
|
98
|
-
mail.subject subject unless subject.nil?
|
|
99
|
-
mail.return_path = sender.email_address unless(sender.nil? || ! sender.respond_to?(:email_address))
|
|
100
|
-
mail.to to_recipients.map {|r| r.email_address if r.respond_to?(:email_address) } unless to_recipients.nil?
|
|
101
|
-
mail.cc cc_recipients.map {|r| r.email_address if r.respond_to?(:email_address) } unless cc_recipients.nil?
|
|
102
|
-
mail.from from.email_address unless(from.nil? || ! from.respond_to?(:email_address))
|
|
103
|
-
# Because the mail gem does not pass an object to the block there are some issues with using self
|
|
104
|
-
msg = self
|
|
105
|
-
if(body_type == "HTML")
|
|
106
|
-
mail.html_part do
|
|
107
|
-
body msg.body
|
|
108
|
-
end
|
|
109
|
-
mail.text_part do
|
|
110
|
-
body Nokogiri::HTML(msg.body).content
|
|
111
|
-
end
|
|
112
|
-
else
|
|
113
|
-
mail.text_part do
|
|
114
|
-
body msg.body
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# add attachments
|
|
119
|
-
if(self.has_attachments?)
|
|
120
|
-
self.attachments.each do |att|
|
|
121
|
-
if(att.is_a?(FileAttachment))
|
|
122
|
-
mail.attachments[att.file_name] = Base64.decode64(att.content)
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
mail
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
private
|
|
131
|
-
|
|
132
|
-
def init_methods
|
|
133
|
-
super()
|
|
134
|
-
define_str_var :conversation_index, :conversation_topic, :internet_message_id, :references
|
|
135
|
-
define_mbox_users :to_recipients, :cc_recipients, :bcc_recipients, :reply_to
|
|
136
|
-
define_mbox_user :from, :sender, :received_by, :received_representing
|
|
137
|
-
define_bool_var :is_read, :is_read_receipt_requested, :is_response_requested, :is_delivery_receipt_requested
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
end # Message
|
|
141
|
-
end # EWS
|
|
142
|
-
end # Viewpoint
|
data/lib/model/model.rb
DELETED
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
=begin
|
|
2
|
-
This file is part of Viewpoint; the Ruby library for Microsoft Exchange Web Services.
|
|
3
|
-
|
|
4
|
-
Copyright © 2011 Dan Wanek <dan.wanek@gmail.com>
|
|
5
|
-
|
|
6
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
you may not use this file except in compliance with the License.
|
|
8
|
-
You may obtain a copy of the License at
|
|
9
|
-
|
|
10
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
|
|
12
|
-
Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
See the License for the specific language governing permissions and
|
|
16
|
-
limitations under the License.
|
|
17
|
-
=end
|
|
18
|
-
|
|
19
|
-
# This class is inherited by all Item subtypes such as Message, Event,
|
|
20
|
-
# and Task. It will serve as the brain for all of the methods that
|
|
21
|
-
# each of these Item types have in common.
|
|
22
|
-
module Viewpoint
|
|
23
|
-
module EWS
|
|
24
|
-
# This is the base model Module for shared code among all Model classes.
|
|
25
|
-
# @attr_reader [Array] :ews_methods The EWS methods created for this Model.
|
|
26
|
-
module Model
|
|
27
|
-
|
|
28
|
-
# These are convenience methods to quickly create instance methods for
|
|
29
|
-
# the various Model types when passed a Hash from the SOAP parser.
|
|
30
|
-
# These functions depend on each model type saving the passed Hash
|
|
31
|
-
# in an instance variable called @ews_item.
|
|
32
|
-
|
|
33
|
-
attr_reader :ews_methods, :ews_methods_undef
|
|
34
|
-
|
|
35
|
-
def initialize
|
|
36
|
-
# Defined EWS methods
|
|
37
|
-
@ews_methods = []
|
|
38
|
-
# Undefined EWS methods
|
|
39
|
-
@ews_methods_undef = []
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
protected
|
|
43
|
-
|
|
44
|
-
# Define a method that returns a string. The vars are the keys in the
|
|
45
|
-
# hash that contain a :text key. In the original SOAP packet this would
|
|
46
|
-
# look something like this:
|
|
47
|
-
# @param [Array<Symbol,Hash>] *vars the symbols to map to methods. If the
|
|
48
|
-
# last item is a hash it will be used to map methods names. For instance
|
|
49
|
-
# UID comes through like this :u_i_d so we can map it like so {:u_i_d => :uid}
|
|
50
|
-
# @example
|
|
51
|
-
# <method_name>
|
|
52
|
-
# This is the text
|
|
53
|
-
# </method_name>
|
|
54
|
-
def define_str_var(*vars)
|
|
55
|
-
map = ( vars.last.is_a?(Hash) ? vars.pop : {})
|
|
56
|
-
vars.each do |var|
|
|
57
|
-
mname = ( map.has_key?(var) ? map[var] : var )
|
|
58
|
-
if(@ews_item[var])
|
|
59
|
-
@ews_methods << mname
|
|
60
|
-
self.instance_eval <<-EOF
|
|
61
|
-
def #{mname}
|
|
62
|
-
@ews_item[:#{var}][:text]
|
|
63
|
-
end
|
|
64
|
-
EOF
|
|
65
|
-
else
|
|
66
|
-
@ews_methods_undef << var
|
|
67
|
-
end
|
|
68
|
-
if(Item::FIELD_URIS.has_key?(var.to_sym) && Item::FIELD_URIS[var.to_sym][:writable])
|
|
69
|
-
self.instance_eval <<-EOF
|
|
70
|
-
def #{mname}=(newtext)
|
|
71
|
-
@ews_item[:#{var}] = {} unless @ews_item[:#{var}]
|
|
72
|
-
@ews_item[:#{var}][:text] = newtext
|
|
73
|
-
@updates[:#{var}] = @ews_item[:#{var}]
|
|
74
|
-
end
|
|
75
|
-
EOF
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# This is similar to the #define_str_var method except of the text value
|
|
81
|
-
# is from an XML attribute in the original SOAP so the text won't be pointed
|
|
82
|
-
# to by :text. In the orignal SOAP it may have looked like this:
|
|
83
|
-
# @example
|
|
84
|
-
# <node my_method='this is the text'/>
|
|
85
|
-
# so you would specify this...
|
|
86
|
-
# define_attr_str_var :node, :my_method
|
|
87
|
-
def define_attr_str_var(parent, *vars)
|
|
88
|
-
return unless @ews_item[parent]
|
|
89
|
-
vars.each do |var|
|
|
90
|
-
@ews_methods << var
|
|
91
|
-
if(@ews_item[parent][var].is_a?(Hash) && @ews_item[parent][var].has_key?(:text))
|
|
92
|
-
self.instance_eval <<-EOF
|
|
93
|
-
def #{var}
|
|
94
|
-
@ews_item[:#{parent}][:#{var}][:text]
|
|
95
|
-
end
|
|
96
|
-
EOF
|
|
97
|
-
elsif(@ews_item[parent][var])
|
|
98
|
-
self.instance_eval <<-EOF
|
|
99
|
-
def #{var}
|
|
100
|
-
@ews_item[:#{parent}][:#{var}]
|
|
101
|
-
end
|
|
102
|
-
EOF
|
|
103
|
-
else
|
|
104
|
-
@ews_methods_undef << var
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
def define_int_var(*vars)
|
|
111
|
-
vars.each do |var|
|
|
112
|
-
if(@ews_item[var])
|
|
113
|
-
@ews_methods << var
|
|
114
|
-
self.instance_eval <<-EOF
|
|
115
|
-
def #{var}
|
|
116
|
-
@ews_item[:#{var}][:text].to_i
|
|
117
|
-
end
|
|
118
|
-
EOF
|
|
119
|
-
else
|
|
120
|
-
@ews_methods_undef << var
|
|
121
|
-
end
|
|
122
|
-
if(Item::FIELD_URIS.has_key?(var.to_sym) && Item::FIELD_URIS[var.to_sym][:writable])
|
|
123
|
-
self.instance_eval <<-EOF
|
|
124
|
-
def #{var}=(newint)
|
|
125
|
-
@ews_item[:#{var}] = {} unless @ews_item[:#{var}]
|
|
126
|
-
@ews_item[:#{var}][:text] = newint.to_s
|
|
127
|
-
@updates[:#{var}] = @ews_item[:#{var}]
|
|
128
|
-
end
|
|
129
|
-
EOF
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def define_bool_var(*vars)
|
|
135
|
-
vars.each do |var|
|
|
136
|
-
if(@ews_item[var])
|
|
137
|
-
@ews_methods << "#{var}?".to_sym
|
|
138
|
-
self.instance_eval <<-EOF
|
|
139
|
-
def #{var}?
|
|
140
|
-
(@ews_item[:#{var}][:text] == 'true') ? true : false
|
|
141
|
-
end
|
|
142
|
-
EOF
|
|
143
|
-
else
|
|
144
|
-
@ews_methods_undef << "#{var}?".to_sym
|
|
145
|
-
end
|
|
146
|
-
if(Item::FIELD_URIS.has_key?(var.to_sym) && Item::FIELD_URIS[var.to_sym][:writable])
|
|
147
|
-
self.instance_eval <<-EOF
|
|
148
|
-
def #{var}=(newbool)
|
|
149
|
-
raise EwsError, "Value not boolean for method #{var}=" unless(newbool.is_a?(TrueClass) || newbool.is_a?(FalseClass))
|
|
150
|
-
@ews_item[:#{var}] = {} unless @ews_item[:#{var}]
|
|
151
|
-
@ews_item[:#{var}][:text] = newbool.to_s
|
|
152
|
-
@updates[:#{var}] = @ews_item[:#{var}]
|
|
153
|
-
end
|
|
154
|
-
EOF
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def define_datetime_var(*vars)
|
|
160
|
-
vars.each do |var|
|
|
161
|
-
if(@ews_item[var])
|
|
162
|
-
@ews_methods << var
|
|
163
|
-
self.instance_eval <<-EOF
|
|
164
|
-
def #{var}
|
|
165
|
-
DateTime.parse(@ews_item[:#{var}][:text])
|
|
166
|
-
end
|
|
167
|
-
EOF
|
|
168
|
-
else
|
|
169
|
-
@ews_methods_undef << var
|
|
170
|
-
end
|
|
171
|
-
if(Item::FIELD_URIS.has_key?(var.to_sym) && Item::FIELD_URIS[var.to_sym][:writable])
|
|
172
|
-
self.instance_eval <<-EOF
|
|
173
|
-
def #{var}=(newdate)
|
|
174
|
-
@ews_item[:#{var}] = {} unless @ews_item[:#{var}]
|
|
175
|
-
@ews_item[:#{var}][:text] = newdate.to_s
|
|
176
|
-
@updates[:#{var}] = @ews_item[:#{var}]
|
|
177
|
-
end
|
|
178
|
-
EOF
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
def define_mbox_users(*vars)
|
|
184
|
-
vars.each do |var|
|
|
185
|
-
if(@ews_item[var])
|
|
186
|
-
@ews_methods << var
|
|
187
|
-
self.instance_eval <<-EOF
|
|
188
|
-
def #{var}
|
|
189
|
-
return @#{var} if defined?(@#{var})
|
|
190
|
-
deepen!
|
|
191
|
-
if( (@ews_item[:#{var}][:mailbox]).is_a?(Hash) )
|
|
192
|
-
@#{var} = [MailboxUser.new(@ews_item[:#{var}][:mailbox])]
|
|
193
|
-
elsif( (@ews_item[:#{var}][:mailbox]).is_a?(Array) )
|
|
194
|
-
@#{var} = []
|
|
195
|
-
@ews_item[:#{var}][:mailbox].each do |i|
|
|
196
|
-
@#{var} << MailboxUser.new(i)
|
|
197
|
-
end
|
|
198
|
-
else
|
|
199
|
-
raise EwsError, "Bad value for mailbox: " + @ews_item[:#{var}][:mailbox]
|
|
200
|
-
end
|
|
201
|
-
@#{var}
|
|
202
|
-
end
|
|
203
|
-
EOF
|
|
204
|
-
else
|
|
205
|
-
@ews_methods_undef << var
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
def define_mbox_user(*vars)
|
|
212
|
-
vars.each do |var|
|
|
213
|
-
if(@ews_item[var])
|
|
214
|
-
@ews_methods << var
|
|
215
|
-
self.instance_eval <<-EOF
|
|
216
|
-
def #{var}
|
|
217
|
-
deepen!
|
|
218
|
-
@#{var} ||= MailboxUser.new(@ews_item[:#{var}][:mailbox])
|
|
219
|
-
end
|
|
220
|
-
EOF
|
|
221
|
-
else
|
|
222
|
-
@ews_methods_undef << var
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
# Define meeting attendees
|
|
229
|
-
# @param [String] *attendee_types the type of attendee we are defining :required_attendees, :optional_attendees
|
|
230
|
-
def define_attendees(*attendee_types)
|
|
231
|
-
attendee_types.each do |attendee_type|
|
|
232
|
-
if(@ews_item.has_key?(attendee_type))
|
|
233
|
-
@ews_methods << attendee_type
|
|
234
|
-
self.instance_eval <<-EOF
|
|
235
|
-
def #{attendee_type}
|
|
236
|
-
return @#{attendee_type} if(defined?(@#{attendee_type}) && !@#{attendee_type}.nil?)
|
|
237
|
-
if( (@ews_item[:#{attendee_type}][:attendee]).is_a?(Hash) )
|
|
238
|
-
@#{attendee_type} = [Attendee.new(@ews_item[:#{attendee_type}][:attendee])]
|
|
239
|
-
elsif( (@ews_item[:#{attendee_type}][:attendee]).is_a?(Array) )
|
|
240
|
-
@#{attendee_type} = []
|
|
241
|
-
@ews_item[:#{attendee_type}][:attendee].each do |i|
|
|
242
|
-
@#{attendee_type} << Attendee.new(i)
|
|
243
|
-
end
|
|
244
|
-
else
|
|
245
|
-
raise EwsError, "Bad value for mailbox: " + @ews_item[:#{attendee_type}][:attendee]
|
|
246
|
-
end
|
|
247
|
-
@#{attendee_type}
|
|
248
|
-
end
|
|
249
|
-
EOF
|
|
250
|
-
else
|
|
251
|
-
@ews_methods_undef << attendee_type
|
|
252
|
-
end
|
|
253
|
-
end
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
# After a delete is called on an object this method will clear
|
|
257
|
-
# out all of the defined EWS methods so they can't be called on the
|
|
258
|
-
# instantiated object.
|
|
259
|
-
def clear_object!
|
|
260
|
-
@ews_methods.each do |m|
|
|
261
|
-
self.instance_variables.each do |iv|
|
|
262
|
-
self.instance_variable_set("#{iv}",nil)
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
end # Model
|
|
268
|
-
end # EWS
|
|
269
|
-
end # Viewpoint
|