onlyoffice_gmail_helper 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a72371e5187dc5f9ea6b6cd938c77d0f3288f9c44b6399dd71fd392aa6eb1441
4
- data.tar.gz: 13668d6d4485109a04a6449275f81acb6eb57fcaa2b1c581bbc5baf1f426fcde
3
+ metadata.gz: 964bbe677c33d0c017f204fe2d37682091e5008bbc1b88fb3613eff57d91b2bb
4
+ data.tar.gz: bcde1191c95f16ce78dba04240466e599a267548b5996dde7257b8b54c1c2b07
5
5
  SHA512:
6
- metadata.gz: a4da08cf22fda03b870d5d18d4bdca3a86c763b00415eec83adae9e75e9f633f6c6abe2dda795bd26561f49041bd3b6b07bbc61e8f089a6e84502d7b48fb44d2
7
- data.tar.gz: baf3cf12a74db4fbdbfcc55c814b469c78c631264187398aba19fad5eba5728fe38373b8c86c30eab29217a6159e3fbf3686c32b6f2178f89aea83baf9bb9dd6
6
+ metadata.gz: a67a317be75b4d0197f1ac5826f2af03298f44e11fa79fb0ed6817f0a5974934556ab712b67a90544512cec5a376b64a7cd2eefaa2834018acfd9cac1b0aaf67
7
+ data.tar.gz: 33da4377cb1b682a76007aedf65abab9385b1635274756e6895258f947d495b75f8936a12681b61ef5676c3a096bdab8170b381e7fc34e79c2e84cb982d689f3
@@ -2,5 +2,5 @@
2
2
 
3
3
  module OnlyofficeGmailHelper
4
4
  # @return [String] versio of gem
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  end
@@ -6,33 +6,6 @@ require 'onlyoffice_gmail_helper/email_account'
6
6
  require 'onlyoffice_gmail_helper/mail_message'
7
7
  require 'onlyoffice_gmail_helper/version'
8
8
 
9
- # Override object class
10
- class Object
11
- # @return [Date] format date for imap
12
- def to_imap_date
13
- Date.parse(to_s).strftime('%d-%b-%Y')
14
- end
15
- end
16
-
17
- # Monkey patch IMAP to fix https://bugs.ruby-lang.org/issues/14750
18
- # TODO: Remove after release of fix as stable version
19
- module Net
20
- # Imap main class
21
- class IMAP
22
- # override bugged method
23
- alias send_literal_bug_14750 send_literal
24
-
25
- # Override for but 14750
26
- def send_literal(str, tag = nil)
27
- if RUBY_VERSION.start_with?('2.5', '2.6')
28
- send_literal_bug_14750(str, tag)
29
- else
30
- send_literal_bug_14750(str)
31
- end
32
- end
33
- end
34
- end
35
-
36
9
  # Helper module for GMail
37
10
  module OnlyofficeGmailHelper
38
11
  # Main class of gem
@@ -80,74 +53,6 @@ module OnlyofficeGmailHelper
80
53
  Exception
81
54
  end
82
55
 
83
- # Refresh connection data
84
- # @return [nil]
85
- def refresh
86
- logout
87
- @gmail = Gmail.new(@user, @password)
88
- end
89
-
90
- # Wait until unread message exists
91
- # @param [String] title message to wait
92
- # @param [Integer] timeout to wait
93
- # @param [Integer] period sleep between tries
94
- # @return [MailMessage] found message
95
- def wait_until_unread_message(title,
96
- timeout = @timeout_for_mail, period = 60)
97
- counter = 0
98
- message_found = false
99
- while counter < timeout && !message_found
100
- @gmail.inbox.emails.each do |current_mail|
101
- next unless current_mail.subject.include?(title)
102
-
103
- message = MailMessage.new(current_mail.subject,
104
- current_mail.html_part.body)
105
- return message
106
- end
107
- sleep period
108
- refresh
109
- end
110
- raise "Message with title: #{title} not found for #{timeout * 60} seconds"
111
- end
112
-
113
- # Get body message by title
114
- # @param [String] current_portal_full portal name to search
115
- # @param [String] title1 title to filter
116
- # @param [String] title2 title to filter
117
- # @param [Boolean] delete this message
118
- # @param [Boolean] _to_mail unused
119
- # @return [MailMessage] found message
120
- def get_body_message_by_title_from_mail(current_portal_full, title1 = 'Welcome to ONLYOFFICE™ Portal!', title2 = 'Добро пожаловать на портал TeamLab!', delete = true, _to_mail = nil)
121
- mail_not_found = true
122
- attempt = 0
123
- while mail_not_found
124
- messages_array = mailbox.emails(:unread, search: current_portal_full.to_s)
125
- messages_array.each do |current_mail|
126
- current_subject = current_mail.message.subject
127
- a = current_subject.include? title1
128
- b = current_subject.include? title2
129
- if a || b
130
- current_subject = begin
131
- current_mail.html_part.body.decoded.force_encoding('utf-8').encode('UTF-8')
132
- rescue StandardError
133
- Exception
134
- end
135
- current_mail.delete! if current_subject == 'Welcome to Your TeamLab Portal!'
136
- if current_subject.include? current_portal_full
137
- current_mail.delete! if delete
138
- return current_subject
139
- end
140
- else
141
- raise "Message with title: #{title1} not found after #{attempt} attempt" if attempt == 10
142
-
143
- sleep 10
144
- attempt += 1
145
- current_mail.delete! if delete
146
- end
147
- end
148
- end
149
- end
150
-
151
56
  # Get mail body by title
152
57
  # @param [String] portal_address to filter
153
58
  # @param [String] subject to find
@@ -163,7 +68,7 @@ module OnlyofficeGmailHelper
163
68
  next unless message_found?(current_mail.message.subject, subject)
164
69
 
165
70
  body = begin
166
- current_mail.html_part.body.decoded.force_encoding('utf-8').encode('UTF-8')
71
+ message_body(current_mail)
167
72
  rescue StandardError
168
73
  Exception
169
74
  end
@@ -174,56 +79,6 @@ module OnlyofficeGmailHelper
174
79
  nil
175
80
  end
176
81
 
177
- # @return [Array<Message>] list of underad messages
178
- def get_unread_messages
179
- refresh
180
- array_of_mail = []
181
- mailbox.emails(:unread).reverse_each do |current_mail|
182
- current_title = current_mail.message.subject
183
- current_subject = begin
184
- current_mail.html_part.body.decoded
185
- .force_encoding('utf-8').encode('UTF-8')
186
- rescue StandardError
187
- Exception
188
- end
189
- current_mail.mark(:unread)
190
- reply_to = current_mail.reply_to[0] unless current_mail.reply_to == []
191
- array_of_mail << MailMessage.new(current_title,
192
- current_subject,
193
- reply_to)
194
- end
195
- array_of_mail
196
- end
197
-
198
- # received mail in format "Thu, 23 Jan 2014 15:34:57 +0400". Day of week may\may not be present
199
- # @param [String] date_str original string
200
- # @return [Hash] date
201
- def get_current_date(date_str)
202
- data_arr = date_str.split.reverse
203
- { day: data_arr[4].to_i, hour: data_arr[1].split(':')[0].to_i, minute: data_arr[1].split(':')[1].to_i }
204
- end
205
-
206
- # Check unread messages for message
207
- # @param [String] mail_message to find
208
- # @return [Boolean] result
209
- def check_unread_messages_for_message(mail_message)
210
- messages = get_unread_messages
211
- timer = 0
212
- message_found = false
213
- while timer < @timeout_for_mail && message_found == false
214
- messages.each do |current_unread_mail|
215
- # p current_unread_mail
216
- if current_unread_mail == mail_message
217
- delete_messages(current_unread_mail)
218
- return true
219
- end
220
- end
221
- messages = get_unread_messages
222
- timer += 1
223
- end
224
- false
225
- end
226
-
227
82
  # Check message for message with portal
228
83
  # @param [String] message title
229
84
  # @param [String] current_portal_full_name name
@@ -244,28 +99,6 @@ module OnlyofficeGmailHelper
244
99
  false
245
100
  end
246
101
 
247
- # Delete message with portal address
248
- # @param [String] message title to delete
249
- # @param [String] current_portal_full_name to delete
250
- # @return [nil]
251
- def delete_message_with_portal_address(message, current_portal_full_name)
252
- 300.times do
253
- messages_array = mailbox.emails(:unread, search: current_portal_full_name.to_s)
254
- messages_array.each do |current_mail|
255
- if message.title == current_mail.message.subject
256
- current_mail.delete!
257
- return true
258
- else
259
- begin
260
- current_mail.mark(:unread)
261
- rescue StandardError
262
- Exception
263
- end
264
- end
265
- end
266
- end
267
- end
268
-
269
102
  # Delete specific message
270
103
  # @param [String] message title to delete
271
104
  # @return [nil]
@@ -295,49 +128,6 @@ module OnlyofficeGmailHelper
295
128
  OnlyofficeLoggerHelper.log("Finished deleting all messaged on mail: #{@user}")
296
129
  end
297
130
 
298
- # Archive all inbox
299
- # @return [nil]
300
- def archive_inbox
301
- OnlyofficeLoggerHelper.log("Start achieving all messaged in inbox on mail: #{@user}")
302
- @gmail.inbox.emails.each(&:archive!) if mail_inbox_count.nonzero?
303
- OnlyofficeLoggerHelper.log("Finished achieving all messaged in inbox on mail: #{@user}")
304
- end
305
-
306
- # @param [String] contain_string message to delete
307
- # @return [nil]
308
- def delete_all_message_contains(contain_string)
309
- OnlyofficeLoggerHelper.log("Messages containing #{contain_string} will be deleted")
310
- messages_array = mailbox.emails(:unread, search: contain_string)
311
- messages_array.each(&:delete!)
312
- end
313
-
314
- # Reply to mail
315
- # @param [String] mail_to_reply
316
- # @param [String] reply_body to do
317
- # @return [nil]
318
- def reply_mail(mail_to_reply, reply_body)
319
- messages = get_unread_messages
320
- timer = 0
321
- message_found = false
322
- while timer < @timeout_for_mail && message_found == false
323
- messages.each do |current_unread_mail|
324
- next unless current_unread_mail == mail_to_reply
325
-
326
- email = @gmail.compose do
327
- to("#{current_unread_mail.reply_to.mailbox}@#{current_unread_mail.reply_to.host}".to_s)
328
- subject "Re: #{current_unread_mail.title}"
329
- body reply_body
330
- end
331
- email.deliver!
332
- delete_messages(current_unread_mail)
333
- return true
334
- end
335
- messages = get_unread_messages
336
- timer += 1
337
- end
338
- false
339
- end
340
-
341
131
  # Send mail
342
132
  # @param [String] email to send
343
133
  # @param [String] title to send
@@ -355,25 +145,6 @@ module OnlyofficeGmailHelper
355
145
  OnlyofficeLoggerHelper.log("send_mail(#{email}, #{title}, #{body}, #{attachment})")
356
146
  end
357
147
 
358
- # Send notification
359
- # @param [String] email to send
360
- # @param [String] test_name - name of test
361
- # @param [String] error - error to send
362
- # @param [String] mail_title to send
363
- # @return [nil]
364
- def send_notification(email, test_name, error, mail_title = 'Teamlab Daily Check')
365
- body = "Fail in #{test_name}\n" \
366
- "Error text: \n\t #{error}"
367
- send_mail(email, mail_title, body)
368
- end
369
-
370
- # @return [Integer] count message in inbox
371
- def mail_inbox_count
372
- count = @gmail.inbox.emails.count
373
- OnlyofficeLoggerHelper.log("#{count} mails in inbox of #{@user}")
374
- count
375
- end
376
-
377
148
  # List all mail in label with date
378
149
  # @param [String] string label
379
150
  # @param [Date] date_start to find
@@ -398,105 +169,20 @@ module OnlyofficeGmailHelper
398
169
  array_of_mail
399
170
  end
400
171
 
401
- # Delete all mail from sender
402
- # @param [String] string messanger
403
- # @return [nil]
404
- def delete_from_sender(string)
405
- mailbox.emails(from: string).each(&:delete!)
406
- end
407
-
408
- # Mark all messages as unread
409
- # @return [nil]
410
- def mark_all_unread
411
- mailbox.emails.each do |current_mail|
412
- current_mail.mark(:unread)
413
- end
414
- end
415
-
416
- # Send mail test result
417
- # @param [String] mail to send
418
- # @param [String] title to send
419
- # @param [Array<String>] array_results test data
420
- # @return [nil]
421
- def send_mail_test_result(mail, title, array_results)
422
- body = ''
423
- array_results.each do |current_result|
424
- current_result[1] = 'OK' if current_result[1].nil?
425
- body = "#{body}#{current_result[0]}\t#{current_result[1]}\n"
426
- end
427
-
428
- if mail.is_a?(Array)
429
- mail.each do |current_mail_user|
430
- email = @gmail.compose do
431
- to current_mail_user
432
- subject title
433
- body body
434
- end
435
- email.deliver!
436
- end
437
- else
438
- email = @gmail.compose do
439
- to mail
440
- subject title
441
- body body
442
- end
443
- email.deliver!
444
- end
445
- end
446
-
447
- # If not returning nested levels please change content of file
448
- # +/home/#{user}/.rvm/gems/#{gemset}/gems/gmail-0.4.0/lib/gmail/labels.rb+
449
- # to content of that file: https://github.com/jgrevich/gmail/blob/6ed88950bd631696aeb1bc4b9133b03d1ae4055f/lib/gmail/labels.rb
450
- # @return [Array<String>] list of all labels
451
- def get_labels
452
- @gmail.labels.all
453
- end
172
+ private
454
173
 
455
- # Get list of unread mails with tags
456
- # @return [Array<MailMessage>] result
457
- def get_unread_mails_with_tags
458
- refresh
459
- array_of_mail = []
460
- mailbox.emails(:unread).each do |current_mail|
461
- current_title = current_mail.message.subject
462
- current_subject = begin
463
- current_mail.html_part.body.decoded.force_encoding('utf-8').encode('UTF-8')
464
- rescue StandardError
465
- Exception
466
- end
467
- current_mail.mark(:unread)
468
- reply_to = current_mail.reply_to[0] unless current_mail.reply_to.nil?
469
- current_tag = current_mail
470
- array_of_mail << MailMessage.new(current_title, current_subject, reply_to, current_tag)
471
- end
472
- array_of_mail
174
+ def message_found?(given, needed)
175
+ given.to_s.upcase.include? needed.to_s.upcase
473
176
  end
474
177
 
475
- # Get body by email subject
476
- # @param [String] subject to get
477
- # @param [String] portal_name to filter
178
+ # Get message body
179
+ # Html part if exists, or text part if not
180
+ # @param [Gmail::Message] message to get
478
181
  # @return [String] body
479
- def get_body_by_subject_email(subject, portal_name)
480
- p 'get_body_by_subject_email'
481
- 300.times do |current|
482
- p "current time: #{current}"
483
- messages_array = mailbox.emails(:unread, search: portal_name.to_s)
484
- messages_array.each do |current_mail|
485
- current_subject = current_mail.message.subject
486
- p "current_subject: #{current_subject}"
487
- if message_found?(current_subject, subject)
488
- body_text = current_mail.message.text_part.body.decoded.force_encoding('utf-8').encode('UTF-8').gsub(/\s+/, ' ').strip
489
- return body_text
490
- end
491
- end
492
- end
493
- nil
494
- end
182
+ def message_body(message)
183
+ return message.body.to_s unless message.html_part
495
184
 
496
- private
497
-
498
- def message_found?(given, needed)
499
- given.to_s.upcase.include? needed.to_s.upcase
185
+ message.html_part.body.decoded.force_encoding('utf-8').encode('UTF-8')
500
186
  end
501
187
  end
502
188
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onlyoffice_gmail_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ONLYOFFICE
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-19 00:00:00.000000000 Z
12
+ date: 2021-11-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gmail
@@ -193,6 +193,7 @@ metadata:
193
193
  documentation_uri: https://www.rubydoc.info/gems/onlyoffice_gmail_helper
194
194
  homepage_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_gmail_helper
195
195
  source_code_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_gmail_helper
196
+ rubygems_mfa_required: 'true'
196
197
  post_install_message:
197
198
  rdoc_options: []
198
199
  require_paths:
@@ -208,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
209
  - !ruby/object:Gem::Version
209
210
  version: '0'
210
211
  requirements: []
211
- rubygems_version: 3.1.4
212
+ rubygems_version: 3.2.29
212
213
  signing_key:
213
214
  specification_version: 4
214
215
  summary: ONLYOFFICE Helper Gem for GMail