viewpoint 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -35,7 +35,6 @@ class EWSFuse < FuseDir
35
35
  @vp.authenticate
36
36
  @vp.find_folders
37
37
  @mf = (@vp.get_mail_folders)
38
- puts "MF: #{@mf.class.to_s}"
39
38
  @messages = {} # Message objects
40
39
  @open_files = {} # Files open for RAW IO
41
40
  @mountpoint = mountpoint
@@ -35,12 +35,13 @@ class Viewpoint::ExchWebServ
35
35
  include Viewpoint
36
36
  include Singleton
37
37
 
38
- attr_reader :ews, :user, :authenticated
38
+ attr_reader :ews, :user, :authenticated, :email
39
39
 
40
40
  def initialize
41
41
  @authenticated = false
42
42
  @user = nil
43
43
  @pass = nil
44
+ @email = nil
44
45
  @ews_endpoint = nil
45
46
 
46
47
  # Connection to Exchange web services.
@@ -212,7 +213,9 @@ class Viewpoint::ExchWebServ
212
213
  # were entered until later. The ResolveNames operation is completely
213
214
  # arbitrary and could be any EWS call.
214
215
  # http://msdn.microsoft.com/en-us/library/bb409286.aspx
215
- resolve_name(@user)
216
+ resp = resolve_name(@user + '@')
217
+ # Set email while we're at it
218
+ @email = resp.resolutionSet.resolution.first.mailbox.emailAddress
216
219
 
217
220
  rescue SOAP::HTTPStreamError
218
221
  puts "Bad Login! Try Again."
@@ -43,26 +43,26 @@ class Viewpoint::Folder
43
43
  pull = PullSubscriptionRequestType.new
44
44
 
45
45
  # Set-up folder Id
46
- dist_fid = DistinguishedFolderIdType.new
47
- dist_fid.xmlattr_Id = DistinguishedFolderIdNameType::Calendar
48
- f_ids = NonEmptyArrayOfBaseFolderIdsType.new()
49
- f_ids.distinguishedFolderId = dist_fid
46
+ f_id_t = FolderIdType.new
47
+ f_id_t.xmlattr_Id = @folder_id
48
+ f_ids = NonEmptyArrayOfBaseFolderIdsType.new([f_id_t],nil)
50
49
  pull.folderIds = f_ids
51
50
 
52
51
  # Set-up event types
53
52
  event_types = NonEmptyArrayOfNotificationEventTypesType.new
54
- #event_types.push(NotificationEventTypeType::NewMailEvent)
53
+ event_types.push(NotificationEventTypeType::CopiedEvent)
55
54
  event_types.push(NotificationEventTypeType::CreatedEvent)
56
55
  event_types.push(NotificationEventTypeType::DeletedEvent)
57
- #event_types.push(NotificationEventTypeType::ModifiedEvent)
56
+ event_types.push(NotificationEventTypeType::ModifiedEvent)
58
57
  event_types.push(NotificationEventTypeType::MovedEvent)
58
+ event_types.push(NotificationEventTypeType::NewMailEvent)
59
59
  pull.eventTypes = event_types
60
60
 
61
61
  pull.timeout = 10
62
62
 
63
63
  subscribe.pullSubscriptionRequest = pull
64
64
 
65
- resp = ExchWebServ.instance.ews.subscribe(subscribe).responseMessages.subscribeResponseMessage[0]
65
+ resp = ExchWebServ.instance.ews.subscribe(subscribe).responseMessages.subscribeResponseMessage.first
66
66
  @subscription_id = resp.subscriptionId
67
67
  @watermark = resp.watermark
68
68
 
@@ -70,6 +70,22 @@ class Viewpoint::Folder
70
70
  end
71
71
 
72
72
 
73
+ # unsubscribe from folder
74
+ # Returns true if unsubscription succeeds, false otherwise
75
+ def unsubscribe
76
+ begin
77
+ if( @subscription_id == nil ) then
78
+ return true
79
+ end
80
+
81
+ unsub_t = UnsubscribeType.new(@subscription_id)
82
+ resp = ExchWebServ.instance.ews.unsubscribe(unsub_t).responseMessages.unsubscribeResponseMessage.first
83
+
84
+ return (resp.responseCode == "NoError")? true: false
85
+ end
86
+ end
87
+
88
+
73
89
  # Fetch events with the subscription_id. If one does not exists or is expired,
74
90
  # call subscribe.
75
91
  def check_subscription
@@ -79,14 +95,20 @@ class Viewpoint::Folder
79
95
  end
80
96
  ge = GetEventsType.new(@subscription_id, @watermark)
81
97
 
82
- resp = ExchWebServ.instance.ews.getEvents(ge).responseMessages.getEventsResponseMessage[0]
98
+ resp = ExchWebServ.instance.ews.getEvents(ge).responseMessages.getEventsResponseMessage
83
99
 
84
100
  #TODO: Add more event processing
85
101
 
86
102
 
87
- notifications = resp.notification
103
+ notifications = resp.first.notification
88
104
 
89
105
  # Process Notifications
106
+ if( notifications.copiedEvent != nil)
107
+ notifications.copiedEvent .each do |note|
108
+ @watermark = note.watermark
109
+ end
110
+ end
111
+
90
112
  if( notifications.createdEvent != nil)
91
113
  notifications.createdEvent.each do |note|
92
114
  @watermark = note.watermark
@@ -99,12 +121,24 @@ class Viewpoint::Folder
99
121
  end
100
122
  end
101
123
 
124
+ if( notifications.modifiedEvent != nil)
125
+ notifications.modifiedEvent.each do |note|
126
+ @watermark = note.watermark
127
+ end
128
+ end
129
+
102
130
  if( notifications.movedEvent != nil)
103
131
  notifications.movedEvent.each do |note|
104
132
  @watermark = note.watermark
105
133
  end
106
134
  end
107
135
 
136
+ if( notifications.newMailEvent!= nil)
137
+ notifications.newMailEvent.each do |note|
138
+ @watermark = note.watermark
139
+ end
140
+ end
141
+
108
142
  if( notifications.statusEvent != nil)
109
143
  notifications.statusEvent.each do |note|
110
144
  @watermark = note.watermark
@@ -43,6 +43,26 @@ class Viewpoint::Item
43
43
  end
44
44
 
45
45
 
46
+ # Return the OWA ID so we can link to webmail
47
+ def owa_id
48
+ vp = ExchWebServ.instance
49
+ altids_ar = NonEmptyArrayOfAlternateIdsType.new
50
+
51
+ altid_t = AlternateIdType.new
52
+ altid_t.xmlattr_Format = IdFormatType::EwsId
53
+ altid_t.xmlattr_Id = @item_id
54
+ altid_t.xmlattr_Mailbox = vp.email
55
+ altids_ar.alternateId << altid_t
56
+
57
+ convertid_t = ConvertIdType.new(altids_ar)
58
+ convertid_t.xmlattr_DestinationFormat = IdFormatType::OwaId
59
+
60
+ resp = vp.ews.convertId(convertid_t)
61
+ resp.responseMessages.convertIdResponseMessage.first.alternateId.xmlattr_Id
62
+ #uri = "https://host/owa/?ae=Item&a=open&id=" + owa_id
63
+ end
64
+
65
+
46
66
  # Returns a boolean value, true if the delete ocurred, false otherwise.
47
67
  def delete!
48
68
  @parent_folder.delete_item(@item_id)
data/test/test_client.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  $: << File.dirname(__FILE__) + '/../lib/'
2
- require File.dirname(__FILE__) + '/../lib/viewpoint'
2
+ require 'viewpoint'
3
3
  $DEBUG = true
4
4
  vp = Viewpoint::ExchWebServ.instance
5
5
  vp.authenticate
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: viewpoint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Wanek
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-09 00:00:00 -06:00
12
+ date: 2009-11-13 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency