viewpoint 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/exceptions/exceptions.rb +3 -0
- data/lib/model/calendar_item.rb +114 -12
- data/lib/model/item.rb +26 -6
- data/lib/model/model.rb +1 -1
- metadata +3 -5
- data/lib/field_hash.txt +0 -197
- data/lib/field_hash2.txt +0 -1
data/lib/model/calendar_item.rb
CHANGED
@@ -53,6 +53,26 @@ module Viewpoint
|
|
53
53
|
raise EwsError, "Could not create CalendarItem. #{resp.code}: #{resp.message}"
|
54
54
|
end
|
55
55
|
end
|
56
|
+
|
57
|
+
# Format attendees (usually called from #add_attendees!
|
58
|
+
# @param [Array,String,Hash,MailboxUser] attendees
|
59
|
+
# @param [Symbol] type the type of the attendees :required_attendees/:optional_attendees/:resources
|
60
|
+
def self.format_attendees(attendees, type=:required_attendees)
|
61
|
+
case attendees.class.to_s
|
62
|
+
when 'String'
|
63
|
+
return {type => [{:attendee => {:mailbox => {:email_address => {:text => attendees}}}}]}
|
64
|
+
when /Attendee|MailboxUser/
|
65
|
+
return {type => [{:attendee => {:mailbox => [{:name => {:text => attendees.name}}, {:email_address => {:text => attendees.email_address}}]}}]}
|
66
|
+
when 'Hash'
|
67
|
+
return {type => [{:attendee => {:mailbox => [{:name => {:text => attendees[:name]}}, {:email_address => {:text => attendees[:email_address]}}]}}]}
|
68
|
+
when 'Array'
|
69
|
+
as = {type => []}
|
70
|
+
attendees.each do |a|
|
71
|
+
as.merge!(format_attendees(a, type)) {|k,v1,v2| v1 + v2}
|
72
|
+
end
|
73
|
+
return as
|
74
|
+
end
|
75
|
+
end
|
56
76
|
|
57
77
|
# Create a new CalendarItem.
|
58
78
|
# @param [DateTime] v_start The date and time when the CalendarItem begins
|
@@ -60,9 +80,9 @@ module Viewpoint
|
|
60
80
|
# @param [String] subject The subject of this Item
|
61
81
|
# @param [String,optional] body The body of this object
|
62
82
|
# @param [String,optional] location The location where this calendar item will ocurr
|
63
|
-
# @param [Array<String>,optional] required_attendees An Array of e-mail addresses of required attendees
|
64
|
-
# @param [Array<String>,optional] optional_attendees An Array of e-mail addresses of optional attendees
|
65
|
-
# @param [Array<String>,optional] resources An Array of e-mail addresses of resources
|
83
|
+
# @param [Array<String,MailboxUser,Attendee>,optional] required_attendees An Array of e-mail addresses of required attendees
|
84
|
+
# @param [Array<String,MailboxUser,Attendee>,optional] optional_attendees An Array of e-mail addresses of optional attendees
|
85
|
+
# @param [Array<String,MailboxUser,Attendee>,optional] resources An Array of e-mail addresses of resources
|
66
86
|
def self.create_item(v_start, v_end, subject, body = nil, location = nil, required_attendees=[], optional_attendees=[], resources=[])
|
67
87
|
item = {}
|
68
88
|
item[:start] = {:text => v_start.to_s}
|
@@ -70,19 +90,12 @@ module Viewpoint
|
|
70
90
|
item[:subject] = {:text => subject}
|
71
91
|
item[:body] = {:text => body, :body_type => 'Text'} unless body.nil?
|
72
92
|
item[:location] = {:text => location} unless location.nil?
|
73
|
-
required_attendees
|
74
|
-
|
75
|
-
item[:required_attendees] << {:attendee => {:mailbox => {:email_address => {:text => a}}}}
|
76
|
-
end
|
77
|
-
optional_attendees.each do |a|
|
78
|
-
item[:optional_attendees] = [] unless item[:optional_attendees].is_a?(Array)
|
79
|
-
item[:optional_attendees] << {:attendee => {:mailbox => {:email_address => {:text => a}}}}
|
80
|
-
end
|
93
|
+
item.merge!(self.format_attendees(required_attendees)) unless required_attendees.empty?
|
94
|
+
item.merge!(self.format_attendees(optional_attendees, :optional_attendees)) unless optional_attendees.empty?
|
81
95
|
resources.each do |a|
|
82
96
|
item[:resources] = [] unless item[:resources].is_a?(Array)
|
83
97
|
item[:resources] << {:attendee => {:mailbox => {:email_address => {:text => a}}}}
|
84
98
|
end
|
85
|
-
puts item
|
86
99
|
self.create_item_from_hash(item)
|
87
100
|
end
|
88
101
|
|
@@ -91,6 +104,95 @@ module Viewpoint
|
|
91
104
|
super(ews_item)
|
92
105
|
end
|
93
106
|
|
107
|
+
# Add attendees to this CalendarItem. This does not commit the changes so you will have to use #save! to
|
108
|
+
# commit them back. If you want to commit them at once look at the #add_attendees! method.
|
109
|
+
# @param [Array] required Required attendees to add to this object
|
110
|
+
# Array values of attendees may be simple email strings, MailboxUser items or Hashes in the form
|
111
|
+
# {:email_address => 'email@test', :name => 'My Name'}.
|
112
|
+
# @param [Array] optional Optional attendees to add to this object
|
113
|
+
# see the notes for the 'required' parameter.
|
114
|
+
# @example
|
115
|
+
# ['user1@example.org', 'user2@example.org']
|
116
|
+
# or
|
117
|
+
# [{:name => 'User1', :email_address => 'user1@example.org'}, {:name => 'User2', :email_address => 'user2@example.org'}]
|
118
|
+
# or
|
119
|
+
# ['user1@example.org', 'user2@example.org'], ['user3@example.org', 'user4@example.org']
|
120
|
+
# or
|
121
|
+
# [{:name => 'User1', :email_address => 'user1@example.org'}, {:name => 'User2', :email_address => 'user2@example.org'}],
|
122
|
+
# [{:name => 'User3', :email_address => 'user3@example.org'}, {:name => 'User4', :email_address => 'user4@example.org'}]
|
123
|
+
# @return [Boolean] true on success, false otherwise
|
124
|
+
# @todo add ability to add resources
|
125
|
+
def add_attendees(required, optional = [], resources = [])
|
126
|
+
update = {}
|
127
|
+
update.merge!(self.class.format_attendees(required)) unless required.empty? || required.nil?
|
128
|
+
update.merge!(self.class.format_attendees(optional, :optional_attendees)) unless optional.empty? || optional.nil?
|
129
|
+
|
130
|
+
return false if update.empty?
|
131
|
+
|
132
|
+
@required_attendees, @optional_attendees = nil, nil
|
133
|
+
changes = update_attribs(update, :append)
|
134
|
+
@updates.merge!({:preformatted => changes}) {|k,v1,v2| v1 + v2}
|
135
|
+
true
|
136
|
+
end
|
137
|
+
|
138
|
+
# This is the same as the #add_attendees method, but it actually commits the change back to Exchange
|
139
|
+
# @see #add_attendees
|
140
|
+
def add_attendees!(required, optional = [], resources = [])
|
141
|
+
add_attendees(required, optional, resources)
|
142
|
+
save!
|
143
|
+
end
|
144
|
+
|
145
|
+
# Remove the attendees from the attendee list. This does not commit the changes so you will have to use
|
146
|
+
# #save! to commit them back. If you want to commit them at once look at the #remove_attendees! method.
|
147
|
+
# @param [Array] attendees the attendees to remove from this CalendarItem
|
148
|
+
# [Viewpoint::EWS::Attendee<user1>, Viewpoint::EWS::Attendee<user2>] or
|
149
|
+
# ['user1@example.org', 'user2@example.org']
|
150
|
+
# @return [Boolean] false if the object is not updated, true otherwise
|
151
|
+
def remove_attendees(attendees)
|
152
|
+
return false if attendees.empty?
|
153
|
+
|
154
|
+
emails = attendees.is_a?(Array) ? attendees : attendees.values
|
155
|
+
emails = emails.collect do |v|
|
156
|
+
case v.class.to_s
|
157
|
+
when 'String'
|
158
|
+
v
|
159
|
+
when /MailboxUser|Attendee/
|
160
|
+
v.email_address
|
161
|
+
when 'Hash'
|
162
|
+
v[:email_address]
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
update = {}
|
167
|
+
[:required_attendees, :optional_attendees].each do |type|
|
168
|
+
ivar = self.send(type.to_s)
|
169
|
+
next if ivar.nil?
|
170
|
+
|
171
|
+
required_a = ivar.select {|v| !emails.include?(v.email_address) }
|
172
|
+
formatted_a = self.class.format_attendees(required_a, type)
|
173
|
+
if formatted_a[type].empty?
|
174
|
+
update[:preformatted] ||= []
|
175
|
+
update[:preformatted] << {:delete_item_field => [{:field_uRI => {:field_uRI=>FIELD_URIS[type][:text]}}]}
|
176
|
+
self.instance_eval "undef #{type}"
|
177
|
+
else
|
178
|
+
update.merge!(formatted_a)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
return false if update.empty?
|
183
|
+
|
184
|
+
@required_attendees, @optional_attendees = nil, nil
|
185
|
+
@updates.merge!(update) {|k,v1,v2| v1 + v2}
|
186
|
+
true
|
187
|
+
end
|
188
|
+
|
189
|
+
# This is the same as the #remove_attendees method, but it actually commits the change back to Exchange
|
190
|
+
# @see #remove_attendees
|
191
|
+
def remove_attendees!(attendees)
|
192
|
+
remove_attendees(attendees)
|
193
|
+
save!
|
194
|
+
end
|
195
|
+
|
94
196
|
# Call UpdateItem for this item with the passed updates
|
95
197
|
# @param [Hash] updates a well-formed update hash
|
96
198
|
# @example {:set_item_field=>{:field_u_r_i=>{:field_u_r_i=>"message:IsRead"}, :message=>{:is_read=>{:text=>"true"}}}}
|
data/lib/model/item.rb
CHANGED
@@ -102,7 +102,7 @@ module Viewpoint
|
|
102
102
|
|
103
103
|
# Call UpdateItem for this item with the passed updates
|
104
104
|
# @param [Hash] updates a well-formed update hash
|
105
|
-
# @example {:set_item_field=>{:
|
105
|
+
# @example {:set_item_field=>{:field_uRI=>{:field_uRI=>"message:IsRead"}, :message=>{:is_read=>{:text=>"true"}}}}
|
106
106
|
def update!(updates)
|
107
107
|
conn = Viewpoint::EWS::EWS.instance
|
108
108
|
resp = conn.ews.update_item([{:id => @item_id, :change_key => @change_key}], {:updates => updates})
|
@@ -117,32 +117,52 @@ module Viewpoint
|
|
117
117
|
|
118
118
|
end
|
119
119
|
|
120
|
-
# This takes a hash of attributes with new values and builds the appropriate udpate hash
|
120
|
+
# This takes a hash of attributes with new values and builds the appropriate udpate hash.
|
121
|
+
# It does not commit the changes to Exchange, call #update! with the returned values from
|
122
|
+
# this method or look at #update_attribs! for a version of this method that autocommits the
|
123
|
+
# changes back.
|
124
|
+
#
|
125
|
+
# You can also specify a preformatted Array of data like so:
|
126
|
+
# {:preformatted => [misc data]}
|
127
|
+
# This will simply be passed to the update! method
|
121
128
|
# @param [Hash] updates a hash that is formed like so :item_attr => newvalue
|
129
|
+
# @param [Symbol] update_type :append, :replace, :delete
|
122
130
|
# @example {:sensitivity => {:text => 'Normal'}, :display_name => {:text => 'Test User'}}
|
123
|
-
def update_attribs
|
131
|
+
def update_attribs(updates, update_type = :replace)
|
132
|
+
utype_map = {:append => :append_to_item_field, :replace => :set_item_field, :delete => :delete_item_field}
|
124
133
|
changes = []
|
125
134
|
type = self.class.name.split(/::/).last.ruby_case.to_sym
|
126
135
|
|
127
136
|
updates.each_pair do |k,v|
|
137
|
+
if(k == :preformatted)
|
138
|
+
changes += v
|
139
|
+
next
|
140
|
+
end
|
128
141
|
raise EwsError, "Field (#{FIELD_URIS[k][:text]}) not writable by update." unless FIELD_URIS[k][:writable]
|
129
|
-
changes << {
|
142
|
+
changes << {utype_map[update_type]=>[{:field_uRI => {:field_uRI=>FIELD_URIS[k][:text]}}, {type=>{k => v}}]}
|
130
143
|
end
|
131
144
|
|
145
|
+
changes
|
146
|
+
end
|
147
|
+
|
148
|
+
# This is the same as #update_attribs, but it will commit the changes back to Exchange.
|
149
|
+
# @see #update_attribs
|
150
|
+
def update_attribs!(updates, update_type = :replace)
|
151
|
+
changes = update_attribs(updates, update_type)
|
132
152
|
update!(changes)
|
133
153
|
end
|
134
154
|
|
135
155
|
# Mark this Item as read
|
136
156
|
def mark_read!
|
137
157
|
field = :is_read
|
138
|
-
update!({:set_item_field=>{:
|
158
|
+
update!({:set_item_field=>{:field_uRI=>{:field_uRI=>FIELD_URIS[field][:text]}, :message=>{field=>{:text=>"true"}}}})
|
139
159
|
@is_read = true
|
140
160
|
end
|
141
161
|
|
142
162
|
# Mark this Item as unread
|
143
163
|
def mark_unread!
|
144
164
|
field = :is_read
|
145
|
-
update!({:set_item_field=>{:
|
165
|
+
update!({:set_item_field=>{:field_uRI=>{:field_uRI=>FIELD_URIS[field][:text]}, :message=>{field=>{:text=>"false"}}}})
|
146
166
|
@is_read = false
|
147
167
|
true
|
148
168
|
end
|
data/lib/model/model.rb
CHANGED
@@ -230,7 +230,7 @@ module Viewpoint
|
|
230
230
|
@ews_methods << attendee_type
|
231
231
|
self.instance_eval <<-EOF
|
232
232
|
def #{attendee_type}
|
233
|
-
return @#{attendee_type} if
|
233
|
+
return @#{attendee_type} if(defined?(@#{attendee_type}) && !@#{attendee_type}.nil?)
|
234
234
|
if( (@ews_item[:#{attendee_type}][:attendee]).is_a?(Hash) )
|
235
235
|
@#{attendee_type} = [Attendee.new(@ews_item[:#{attendee_type}][:attendee])]
|
236
236
|
elsif( (@ews_item[:#{attendee_type}][:attendee]).is_a?(Array) )
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 13
|
9
|
+
version: 0.1.13
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Dan Wanek
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-31 00:00:00 -06:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -114,8 +114,6 @@ files:
|
|
114
114
|
- COPYING.txt
|
115
115
|
- TODO
|
116
116
|
- lib/exceptions/exceptions.rb
|
117
|
-
- lib/field_hash2.txt
|
118
|
-
- lib/field_hash.txt
|
119
117
|
- lib/soap/soap_provider.rb
|
120
118
|
- lib/soap/handsoap/builder.rb
|
121
119
|
- lib/soap/handsoap/ews_service.rb
|
data/lib/field_hash.txt
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
FolderId => 'older:FolderId'
|
2
|
-
ParentFolderId => 'folder:ParentFolderId'
|
3
|
-
DisplayName => 'folder:DisplayName'
|
4
|
-
UnreadCount => 'folder:UnreadCount'
|
5
|
-
TotalCount => 'folder:TotalCount'
|
6
|
-
ChildFolderCount => 'folder:ChildFolderCount'
|
7
|
-
FolderClass => 'folder:FolderClass'
|
8
|
-
SearchParameters => 'folder:SearchParameters'
|
9
|
-
ManagedFolderInformation => 'folder:ManagedFolderInformation'
|
10
|
-
PermissionSet => 'folder:PermissionSet'
|
11
|
-
EffectiveRights => 'folder:EffectiveRights'
|
12
|
-
SharingEffectiveRights => 'folder:SharingEffectiveRights'
|
13
|
-
ItemId => 'item:ItemId'
|
14
|
-
ParentFolderId => 'item:ParentFolderId'
|
15
|
-
ItemClass => 'item:ItemClass'
|
16
|
-
MimeContent => 'item:MimeContent'
|
17
|
-
Attachments => 'item:Attachments'
|
18
|
-
Subject => 'item:Subject'
|
19
|
-
DateTimeReceived => 'item:DateTimeReceived'
|
20
|
-
Size => 'item:Size'
|
21
|
-
Categories => 'item:Categories'
|
22
|
-
HasAttachments => 'item:HasAttachments'
|
23
|
-
Importance => 'item:Importance'
|
24
|
-
InReplyTo => 'item:InReplyTo'
|
25
|
-
InternetMessageHeaders => 'item:InternetMessageHeaders'
|
26
|
-
IsAssociated => 'item:IsAssociated'
|
27
|
-
IsDraft => 'item:IsDraft'
|
28
|
-
IsFromMe => 'item:IsFromMe'
|
29
|
-
IsResend => 'item:IsResend'
|
30
|
-
IsSubmitted => 'item:IsSubmitted'
|
31
|
-
IsUnmodified => 'item:IsUnmodified'
|
32
|
-
DateTimeSent => 'item:DateTimeSent'
|
33
|
-
DateTimeCreated => 'item:DateTimeCreated'
|
34
|
-
Body => 'item:Body'
|
35
|
-
ResponseObjects => 'item:ResponseObjects'
|
36
|
-
Sensitivity => 'item:Sensitivity'
|
37
|
-
ReminderDueBy => 'item:ReminderDueBy'
|
38
|
-
ReminderIsSet => 'item:ReminderIsSet'
|
39
|
-
ReminderMinutesBeforeStart => 'item:ReminderMinutesBeforeStart'
|
40
|
-
DisplayTo => 'item:DisplayTo'
|
41
|
-
DisplayCc => 'item:DisplayCc'
|
42
|
-
Culture => 'item:Culture'
|
43
|
-
EffectiveRights => 'item:EffectiveRights'
|
44
|
-
LastModifiedName => 'item:LastModifiedName'
|
45
|
-
LastModifiedTime => 'item:LastModifiedTime'
|
46
|
-
ConversationId => 'item:ConversationId'
|
47
|
-
UniqueBody => 'item:UniqueBody'
|
48
|
-
WebClientReadFormQueryString => 'item:WebClientReadFormQueryString'
|
49
|
-
WebClientEditFormQueryString => 'item:WebClientEditFormQueryString'
|
50
|
-
ConversationIndex => 'message:ConversationIndex'
|
51
|
-
ConversationTopic => 'message:ConversationTopic'
|
52
|
-
InternetMessageId => 'message:InternetMessageId'
|
53
|
-
IsRead => 'message:IsRead'
|
54
|
-
IsResponseRequested => 'message:IsResponseRequested'
|
55
|
-
IsReadReceiptRequested => 'message:IsReadReceiptRequested'
|
56
|
-
IsDeliveryReceiptRequested => 'message:IsDeliveryReceiptRequested'
|
57
|
-
References => 'message:References'
|
58
|
-
ReplyTo => 'message:ReplyTo'
|
59
|
-
From => 'message:From'
|
60
|
-
Sender => 'message:Sender'
|
61
|
-
ToRecipients => 'message:ToRecipients'
|
62
|
-
CcRecipients => 'message:CcRecipients'
|
63
|
-
BccRecipients => 'message:BccRecipients'
|
64
|
-
AssociatedCalendarItemId => 'meeting:AssociatedCalendarItemId'
|
65
|
-
IsDelegated => 'meeting:IsDelegated'
|
66
|
-
IsOutOfDate => 'meeting:IsOutOfDate'
|
67
|
-
HasBeenProcessed => 'meeting:HasBeenProcessed'
|
68
|
-
ResponseType => 'meeting:ResponseType'
|
69
|
-
MeetingRequestType => 'meetingRequest:MeetingRequestType'
|
70
|
-
IntendedFreeBusyStatus => 'meetingRequest:IntendedFreeBusyStatus'
|
71
|
-
Start => 'calendar:Start'
|
72
|
-
End => 'calendar:End'
|
73
|
-
OriginalStart => 'calendar:OriginalStart'
|
74
|
-
IsAllDayEvent => 'calendar:IsAllDayEvent'
|
75
|
-
LegacyFreeBusyStatus => 'calendar:LegacyFreeBusyStatus'
|
76
|
-
Location => 'calendar:Location'
|
77
|
-
When => 'calendar:When'
|
78
|
-
IsMeeting => 'calendar:IsMeeting'
|
79
|
-
IsCancelled => 'calendar:IsCancelled'
|
80
|
-
IsRecurring => 'calendar:IsRecurring'
|
81
|
-
MeetingRequestWasSent => 'calendar:MeetingRequestWasSent'
|
82
|
-
IsResponseRequested => 'calendar:IsResponseRequested'
|
83
|
-
CalendarItemType => 'calendar:CalendarItemType'
|
84
|
-
MyResponseType => 'calendar:MyResponseType'
|
85
|
-
Organizer => 'calendar:Organizer'
|
86
|
-
RequiredAttendees => 'calendar:RequiredAttendees'
|
87
|
-
OptionalAttendees => 'calendar:OptionalAttendees'
|
88
|
-
Resources => 'calendar:Resources'
|
89
|
-
ConflictingMeetingCount => 'calendar:ConflictingMeetingCount'
|
90
|
-
AdjacentMeetingCount => 'calendar:AdjacentMeetingCount'
|
91
|
-
ConflictingMeetings => 'calendar:ConflictingMeetings'
|
92
|
-
AdjacentMeetings => 'calendar:AdjacentMeetings'
|
93
|
-
Duration => 'calendar:Duration'
|
94
|
-
TimeZone => 'calendar:TimeZone'
|
95
|
-
AppointmentReplyTime => 'calendar:AppointmentReplyTime'
|
96
|
-
AppointmentSequenceNumber => 'calendar:AppointmentSequenceNumber'
|
97
|
-
AppointmentState => 'calendar:AppointmentState'
|
98
|
-
Recurrence => 'calendar:Recurrence'
|
99
|
-
FirstOccurrence => 'calendar:FirstOccurrence'
|
100
|
-
LastOccurrence => 'calendar:LastOccurrence'
|
101
|
-
ModifiedOccurrences => 'calendar:ModifiedOccurrences'
|
102
|
-
DeletedOccurrences => 'calendar:DeletedOccurrences'
|
103
|
-
MeetingTimeZone => 'calendar:MeetingTimeZone'
|
104
|
-
ConferenceType => 'calendar:ConferenceType'
|
105
|
-
AllowNewTimeProposal => 'calendar:AllowNewTimeProposal'
|
106
|
-
IsOnlineMeeting => 'calendar:IsOnlineMeeting'
|
107
|
-
MeetingWorkspaceUrl => 'calendar:MeetingWorkspaceUrl'
|
108
|
-
NetShowUrl => 'calendar:NetShowUrl'
|
109
|
-
UID => 'calendar:UID'
|
110
|
-
RecurrenceId => 'calendar:RecurrenceId'
|
111
|
-
DateTimeStamp => 'calendar:DateTimeStamp'
|
112
|
-
StartTimeZone => 'calendar:StartTimeZone'
|
113
|
-
EndTimeZone => 'calendar:EndTimeZone'
|
114
|
-
ActualWork => 'task:ActualWork'
|
115
|
-
AssignedTime => 'task:AssignedTime'
|
116
|
-
BillingInformation => 'task:BillingInformation'
|
117
|
-
ChangeCount => 'task:ChangeCount'
|
118
|
-
Companies => 'task:Companies'
|
119
|
-
CompleteDate => 'task:CompleteDate'
|
120
|
-
Contacts => 'task:Contacts'
|
121
|
-
DelegationState => 'task:DelegationState'
|
122
|
-
Delegator => 'task:Delegator'
|
123
|
-
DueDate => 'task:DueDate'
|
124
|
-
IsAssignmentEditable => 'task:IsAssignmentEditable'
|
125
|
-
IsComplete => 'task:IsComplete'
|
126
|
-
IsRecurring => 'task:IsRecurring'
|
127
|
-
IsTeamTask => 'task:IsTeamTask'
|
128
|
-
Mileage => 'task:Mileage'
|
129
|
-
Owner => 'task:Owner'
|
130
|
-
PercentComplete => 'task:PercentComplete'
|
131
|
-
Recurrence => 'task:Recurrence'
|
132
|
-
StartDate => 'task:StartDate'
|
133
|
-
Status => 'task:Status'
|
134
|
-
StatusDescription => 'task:StatusDescription'
|
135
|
-
TotalWork => 'task:TotalWork'
|
136
|
-
AssistantName => 'contacts:AssistantName'
|
137
|
-
Birthday => 'contacts:Birthday'
|
138
|
-
BusinessHomePage => 'contacts:BusinessHomePage'
|
139
|
-
Children => 'contacts:Children'
|
140
|
-
Companies => 'contacts:Companies'
|
141
|
-
CompanyName => 'contacts:CompanyName'
|
142
|
-
CompleteName => 'contacts:CompleteName'
|
143
|
-
ContactSource => 'contacts:ContactSource'
|
144
|
-
Culture => 'contacts:Culture'
|
145
|
-
Department => 'contacts:Department'
|
146
|
-
DisplayName => 'contacts:DisplayName'
|
147
|
-
EmailAddresses => 'contacts:EmailAddresses'
|
148
|
-
FileAs => 'contacts:FileAs'
|
149
|
-
FileAsMapping => 'contacts:FileAsMapping'
|
150
|
-
Generation => 'contacts:Generation'
|
151
|
-
GivenName => 'contacts:GivenName'
|
152
|
-
HasPicture => 'contacts:HasPicture'
|
153
|
-
ImAddresses => 'contacts:ImAddresses'
|
154
|
-
Initials => 'contacts:Initials'
|
155
|
-
JobTitle => 'contacts:JobTitle'
|
156
|
-
Manager => 'contacts:Manager'
|
157
|
-
MiddleName => 'contacts:MiddleName'
|
158
|
-
Mileage => 'contacts:Mileage'
|
159
|
-
Nickname => 'contacts:Nickname'
|
160
|
-
OfficeLocation => 'contacts:OfficeLocation'
|
161
|
-
PhoneNumbers => 'contacts:PhoneNumbers'
|
162
|
-
PhysicalAddresses => 'contacts:PhysicalAddresses'
|
163
|
-
PostalAddressIndex => 'contacts:PostalAddressIndex'
|
164
|
-
Profession => 'contacts:Profession'
|
165
|
-
SpouseName => 'contacts:SpouseName'
|
166
|
-
Surname => 'contacts:Surname'
|
167
|
-
WeddingAnniversary => 'contacts:WeddingAnniversary'
|
168
|
-
Members => 'distributionlist:Members'
|
169
|
-
PostedTime => 'postitem:PostedTime'
|
170
|
-
ConversationId => 'conversation:ConversationId'
|
171
|
-
ConversationTopic => 'conversation:ConversationTopic'
|
172
|
-
UniqueRecipients => 'conversation:UniqueRecipients'
|
173
|
-
GlobalUniqueRecipients => 'conversation:GlobalUniqueRecipients'
|
174
|
-
UniqueUnreadSenders => 'conversation:UniqueUnreadSenders'
|
175
|
-
GlobalUniqueUnreadSenders => 'conversation:GlobalUniqueUnreadSenders'
|
176
|
-
UniqueSenders => 'conversation:UniqueSenders'
|
177
|
-
GlobalUniqueSenders => 'conversation:GlobalUniqueSenders'
|
178
|
-
LastDeliveryTime => 'conversation:LastDeliveryTime'
|
179
|
-
GlobalLastDeliveryTime => 'conversation:GlobalLastDeliveryTime'
|
180
|
-
Categories => 'conversation:Categories'
|
181
|
-
GlobalCategories => 'conversation:GlobalCategories'
|
182
|
-
FlagStatus => 'conversation:FlagStatus'
|
183
|
-
GlobalFlagStatus => 'conversation:GlobalFlagStatus'
|
184
|
-
HasAttachments => 'conversation:HasAttachments'
|
185
|
-
GlobalHasAttachments => 'conversation:GlobalHasAttachments'
|
186
|
-
MessageCount => 'conversation:MessageCount'
|
187
|
-
GlobalMessageCount => 'conversation:GlobalMessageCount'
|
188
|
-
UnreadCount => 'conversation:UnreadCount'
|
189
|
-
GlobalUnreadCount => 'conversation:GlobalUnreadCount'
|
190
|
-
Size => 'conversation:Size'
|
191
|
-
GlobalSize => 'conversation:GlobalSize'
|
192
|
-
ItemClasses => 'conversation:ItemClasses'
|
193
|
-
GlobalItemClasses => 'conversation:GlobalItemClasses'
|
194
|
-
Importance => 'conversation:Importance'
|
195
|
-
GlobalImportance => 'conversation:GlobalImportance'
|
196
|
-
ItemIds => 'conversation:ItemIds'
|
197
|
-
GlobalItemIds => 'conversation:GlobalItemIds'
|
data/lib/field_hash2.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
:folder_id => 'older:FolderId', :parent_folder_id => 'folder:ParentFolderId', :display_name => 'folder:DisplayName', :unread_count => 'folder:UnreadCount', :total_count => 'folder:TotalCount', :child_folder_count => 'folder:ChildFolderCount', :folder_class => 'folder:FolderClass', :search_parameters => 'folder:SearchParameters', :managed_folder_information => 'folder:ManagedFolderInformation', :permission_set => 'folder:PermissionSet', :effective_rights => 'folder:EffectiveRights', :sharing_effective_rights => 'folder:SharingEffectiveRights', :item_id => 'item:ItemId', :parent_folder_id => 'item:ParentFolderId', :item_class => 'item:ItemClass', :mime_content => 'item:MimeContent', :attachments => 'item:Attachments', :subject => 'item:Subject', :date_time_received => 'item:DateTimeReceived', :size => 'item:Size', :categories => 'item:Categories', :has_attachments => 'item:HasAttachments', :importance => 'item:Importance', :in_reply_to => 'item:InReplyTo', :internet_message_headers => 'item:InternetMessageHeaders', :is_associated => 'item:IsAssociated', :is_draft => 'item:IsDraft', :is_from_me => 'item:IsFromMe', :is_resend => 'item:IsResend', :is_submitted => 'item:IsSubmitted', :is_unmodified => 'item:IsUnmodified', :date_time_sent => 'item:DateTimeSent', :date_time_created => 'item:DateTimeCreated', :body => 'item:Body', :response_objects => 'item:ResponseObjects', :sensitivity => 'item:Sensitivity', :reminder_due_by => 'item:ReminderDueBy', :reminder_is_set => 'item:ReminderIsSet', :reminder_minutes_before_start => 'item:ReminderMinutesBeforeStart', :display_to => 'item:DisplayTo', :display_cc => 'item:DisplayCc', :culture => 'item:Culture', :effective_rights => 'item:EffectiveRights', :last_modified_name => 'item:LastModifiedName', :last_modified_time => 'item:LastModifiedTime', :conversation_id => 'item:ConversationId', :unique_body => 'item:UniqueBody', :web_client_read_form_query_string => 'item:WebClientReadFormQueryString', :web_client_edit_form_query_string => 'item:WebClientEditFormQueryString', :conversation_index => 'message:ConversationIndex', :conversation_topic => 'message:ConversationTopic', :internet_message_id => 'message:InternetMessageId', :is_read => 'message:IsRead', :is_response_requested => 'message:IsResponseRequested', :is_read_receipt_requested => 'message:IsReadReceiptRequested', :is_delivery_receipt_requested => 'message:IsDeliveryReceiptRequested', :references => 'message:References', :reply_to => 'message:ReplyTo', :from => 'message:From', :sender => 'message:Sender', :to_recipients => 'message:ToRecipients', :cc_recipients => 'message:CcRecipients', :bcc_recipients => 'message:BccRecipients', :associated_calendar_item_id => 'meeting:AssociatedCalendarItemId', :is_delegated => 'meeting:IsDelegated', :is_out_of_date => 'meeting:IsOutOfDate', :has_been_processed => 'meeting:HasBeenProcessed', :response_type => 'meeting:ResponseType', :meeting_request_type => 'meetingRequest:MeetingRequestType', :intended_free_busy_status => 'meetingRequest:IntendedFreeBusyStatus', :start => 'calendar:Start', :end => 'calendar:End', :original_start => 'calendar:OriginalStart', :is_all_day_event => 'calendar:IsAllDayEvent', :legacy_free_busy_status => 'calendar:LegacyFreeBusyStatus', :location => 'calendar:Location', :when => 'calendar:When', :is_meeting => 'calendar:IsMeeting', :is_cancelled => 'calendar:IsCancelled', :is_recurring => 'calendar:IsRecurring', :meeting_request_was_sent => 'calendar:MeetingRequestWasSent', :is_response_requested => 'calendar:IsResponseRequested', :calendar_item_type => 'calendar:CalendarItemType', :my_response_type => 'calendar:MyResponseType', :organizer => 'calendar:Organizer', :required_attendees => 'calendar:RequiredAttendees', :optional_attendees => 'calendar:OptionalAttendees', :resources => 'calendar:Resources', :conflicting_meeting_count => 'calendar:ConflictingMeetingCount', :adjacent_meeting_count => 'calendar:AdjacentMeetingCount', :conflicting_meetings => 'calendar:ConflictingMeetings', :adjacent_meetings => 'calendar:AdjacentMeetings', :duration => 'calendar:Duration', :time_zone => 'calendar:TimeZone', :appointment_reply_time => 'calendar:AppointmentReplyTime', :appointment_sequence_number => 'calendar:AppointmentSequenceNumber', :appointment_state => 'calendar:AppointmentState', :recurrence => 'calendar:Recurrence', :first_occurrence => 'calendar:FirstOccurrence', :last_occurrence => 'calendar:LastOccurrence', :modified_occurrences => 'calendar:ModifiedOccurrences', :deleted_occurrences => 'calendar:DeletedOccurrences', :meeting_time_zone => 'calendar:MeetingTimeZone', :conference_type => 'calendar:ConferenceType', :allow_new_time_proposal => 'calendar:AllowNewTimeProposal', :is_online_meeting => 'calendar:IsOnlineMeeting', :meeting_workspace_url => 'calendar:MeetingWorkspaceUrl', :net_show_url => 'calendar:NetShowUrl', :u_i_d => 'calendar:UID', :recurrence_id => 'calendar:RecurrenceId', :date_time_stamp => 'calendar:DateTimeStamp', :start_time_zone => 'calendar:StartTimeZone', :end_time_zone => 'calendar:EndTimeZone', :actual_work => 'task:ActualWork', :assigned_time => 'task:AssignedTime', :billing_information => 'task:BillingInformation', :change_count => 'task:ChangeCount', :companies => 'task:Companies', :complete_date => 'task:CompleteDate', :contacts => 'task:Contacts', :delegation_state => 'task:DelegationState', :delegator => 'task:Delegator', :due_date => 'task:DueDate', :is_assignment_editable => 'task:IsAssignmentEditable', :is_complete => 'task:IsComplete', :is_recurring => 'task:IsRecurring', :is_team_task => 'task:IsTeamTask', :mileage => 'task:Mileage', :owner => 'task:Owner', :percent_complete => 'task:PercentComplete', :recurrence => 'task:Recurrence', :start_date => 'task:StartDate', :status => 'task:Status', :status_description => 'task:StatusDescription', :total_work => 'task:TotalWork', :assistant_name => 'contacts:AssistantName', :birthday => 'contacts:Birthday', :business_home_page => 'contacts:BusinessHomePage', :children => 'contacts:Children', :companies => 'contacts:Companies', :company_name => 'contacts:CompanyName', :complete_name => 'contacts:CompleteName', :contact_source => 'contacts:ContactSource', :culture => 'contacts:Culture', :department => 'contacts:Department', :display_name => 'contacts:DisplayName', :email_addresses => 'contacts:EmailAddresses', :file_as => 'contacts:FileAs', :file_as_mapping => 'contacts:FileAsMapping', :generation => 'contacts:Generation', :given_name => 'contacts:GivenName', :has_picture => 'contacts:HasPicture', :im_addresses => 'contacts:ImAddresses', :initials => 'contacts:Initials', :job_title => 'contacts:JobTitle', :manager => 'contacts:Manager', :middle_name => 'contacts:MiddleName', :mileage => 'contacts:Mileage', :nickname => 'contacts:Nickname', :office_location => 'contacts:OfficeLocation', :phone_numbers => 'contacts:PhoneNumbers', :physical_addresses => 'contacts:PhysicalAddresses', :postal_address_index => 'contacts:PostalAddressIndex', :profession => 'contacts:Profession', :spouse_name => 'contacts:SpouseName', :surname => 'contacts:Surname', :wedding_anniversary => 'contacts:WeddingAnniversary', :members => 'distributionlist:Members', :posted_time => 'postitem:PostedTime', :conversation_id => 'conversation:ConversationId', :conversation_topic => 'conversation:ConversationTopic', :unique_recipients => 'conversation:UniqueRecipients', :global_unique_recipients => 'conversation:GlobalUniqueRecipients', :unique_unread_senders => 'conversation:UniqueUnreadSenders', :global_unique_unread_senders => 'conversation:GlobalUniqueUnreadSenders', :unique_senders => 'conversation:UniqueSenders', :global_unique_senders => 'conversation:GlobalUniqueSenders', :last_delivery_time => 'conversation:LastDeliveryTime', :global_last_delivery_time => 'conversation:GlobalLastDeliveryTime', :categories => 'conversation:Categories', :global_categories => 'conversation:GlobalCategories', :flag_status => 'conversation:FlagStatus', :global_flag_status => 'conversation:GlobalFlagStatus', :has_attachments => 'conversation:HasAttachments', :global_has_attachments => 'conversation:GlobalHasAttachments', :message_count => 'conversation:MessageCount', :global_message_count => 'conversation:GlobalMessageCount', :unread_count => 'conversation:UnreadCount', :global_unread_count => 'conversation:GlobalUnreadCount', :size => 'conversation:Size', :global_size => 'conversation:GlobalSize', :item_classes => 'conversation:ItemClasses', :global_item_classes => 'conversation:GlobalItemClasses', :importance => 'conversation:Importance', :global_importance => 'conversation:GlobalImportance', :item_ids => 'conversation:ItemIds', :global_item_ids => 'conversation:GlobalItemIds'
|