viewpoint 0.1.12 → 0.1.13
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/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'
|