gmail 0.5.0 → 0.6.0

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +27 -27
  3. data/.rspec +1 -1
  4. data/.rubocop.yml +13 -13
  5. data/.rubocop_todo.yml +239 -239
  6. data/.travis.yml +19 -19
  7. data/CHANGELOG.md +145 -139
  8. data/Gemfile +3 -3
  9. data/LICENSE +21 -21
  10. data/README.md +355 -354
  11. data/Rakefile +46 -46
  12. data/gmail.gemspec +34 -34
  13. data/lib/gmail.rb +78 -78
  14. data/lib/gmail/client.rb +34 -34
  15. data/lib/gmail/client/base.rb +229 -229
  16. data/lib/gmail/client/plain.rb +24 -24
  17. data/lib/gmail/client/xoauth.rb +68 -68
  18. data/lib/gmail/client/xoauth2.rb +39 -39
  19. data/lib/gmail/imap_extensions.rb +159 -150
  20. data/lib/gmail/labels.rb +79 -79
  21. data/lib/gmail/mailbox.rb +175 -135
  22. data/lib/gmail/message.rb +207 -207
  23. data/lib/gmail/version.rb +3 -3
  24. data/spec/account.yml.example +1 -1
  25. data/spec/account.yml.obfus +2 -2
  26. data/spec/gmail/client/base_spec.rb +5 -5
  27. data/spec/gmail/client/plain_spec.rb +169 -168
  28. data/spec/gmail/client/xoauth2_spec.rb +186 -186
  29. data/spec/gmail/client/xoauth_spec.rb +5 -5
  30. data/spec/gmail/client_spec.rb +5 -5
  31. data/spec/gmail/imap_extensions_spec.rb +47 -12
  32. data/spec/gmail/labels_spec.rb +27 -18
  33. data/spec/gmail/mailbox_spec.rb +84 -47
  34. data/spec/gmail/message_spec.rb +181 -181
  35. data/spec/gmail_spec.rb +39 -39
  36. data/spec/recordings/gmail/_new_connects_with_client_and_give_it_context_when_block_given.yml +28 -28
  37. data/spec/recordings/gmail/_new_connects_with_gmail_service_and_return_valid_connection_object.yml +28 -28
  38. data/spec/recordings/gmail/_new_does_not_raise_error_when_couldn_t_connect_with_given_account.yml +13 -13
  39. data/spec/recordings/gmail/_new_raises_error_when_couldn_t_connect_with_given_account.yml +13 -13
  40. data/spec/recordings/gmail_client_plain/instance/_connection_automatically_logs_in_to_gmail_account_when_it_s_called.yml +42 -42
  41. data/spec/recordings/gmail_client_plain/instance/delivers_inline_composed_email.yml +42 -42
  42. data/spec/recordings/gmail_client_plain/instance/does_not_log_in_when_given_gmail_account_is_invalid.yml +13 -13
  43. data/spec/recordings/gmail_client_plain/instance/does_not_raise_error_even_though_gmail_account_is_invalid.yml +13 -13
  44. data/spec/recordings/gmail_client_plain/instance/labels/checks_if_there_is_given_label_defined.yml +196 -196
  45. data/spec/recordings/gmail_client_plain/instance/labels/creates_given_label.yml +151 -151
  46. data/spec/recordings/gmail_client_plain/instance/labels/removes_existing_label.yml +146 -146
  47. data/spec/recordings/gmail_client_plain/instance/labels/returns_list_of_all_available_labels.yml +113 -113
  48. data/spec/recordings/gmail_client_plain/instance/properly_logs_in_to_valid_gmail_account.yml +42 -42
  49. data/spec/recordings/gmail_client_plain/instance/properly_logs_out_from_gmail.yml +42 -42
  50. data/spec/recordings/gmail_client_plain/instance/properly_switches_to_given_mailbox.yml +109 -109
  51. data/spec/recordings/gmail_client_plain/instance/properly_switches_to_given_mailbox_using_block_style.yml +109 -109
  52. data/spec/recordings/gmail_client_plain/instance/raises_error_when_given_gmail_account_is_invalid_and_errors_enabled.yml +13 -13
  53. data/spec/recordings/gmail_client_xo_auth2/instance/does_not_log_in_when_given_gmail_account_is_invalid.yml +13 -13
  54. data/spec/recordings/gmail_client_xo_auth2/instance/labels/checks_if_there_is_given_label_defined.yml +27 -27
  55. data/spec/recordings/gmail_client_xo_auth2/instance/labels/creates_given_label.yml +39 -39
  56. data/spec/recordings/gmail_client_xo_auth2/instance/labels/removes_existing_label.yml +39 -39
  57. data/spec/recordings/gmail_client_xo_auth2/instance/labels/returns_list_of_all_available_labels.yml +27 -27
  58. data/spec/recordings/gmail_client_xo_auth2/instance/properly_logs_in_to_valid_gmail_account.yml +15 -15
  59. data/spec/recordings/gmail_client_xo_auth2/instance/properly_logs_out_from_gmail.yml +15 -15
  60. data/spec/recordings/gmail_client_xo_auth2/instance/properly_switches_to_given_mailbox.yml +40 -40
  61. data/spec/recordings/gmail_client_xo_auth2/instance/properly_switches_to_given_mailbox_using_block_style.yml +40 -40
  62. data/spec/recordings/gmail_client_xo_auth2/instance/raises_error_when_given_gmail_account_is_invalid_and_errors_enabled.yml +13 -13
  63. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/all/localizes_into_the_appropriate_label.yml +116 -116
  64. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/and_the_mailbox_does_not_exist/returns_the_mailbox_name_as_a_string.yml +110 -0
  65. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/drafts/localizes_into_the_appropriate_label.yml +116 -116
  66. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/flagged/localizes_into_the_appropriate_label.yml +116 -116
  67. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/important/localizes_into_the_appropriate_label.yml +116 -116
  68. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/inbox/localizes_into_the_appropriate_label.yml +42 -42
  69. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/junk/localizes_into_the_appropriate_label.yml +116 -116
  70. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/sent/localizes_into_the_appropriate_label.yml +116 -116
  71. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/trash/localizes_into_the_appropriate_label.yml +116 -116
  72. data/spec/recordings/gmail_mailbox/instance/counts_all_emails.yml +277 -277
  73. data/spec/recordings/gmail_mailbox/instance/finds_messages.yml +586 -586
  74. data/spec/recordings/gmail_mailbox/instance/waits_once.yml +136 -0
  75. data/spec/recordings/gmail_mailbox/instance/waits_repeatedly.yml +141 -0
  76. data/spec/recordings/gmail_mailbox/instance/waits_with_29-minute_re-issue.yml +136 -0
  77. data/spec/recordings/gmail_mailbox/instance/waits_with_an_unblocked_connection.yml +207 -0
  78. data/spec/recordings/gmail_mailbox/on_initialize/sets_client_and_name.yml +42 -42
  79. data/spec/recordings/gmail_mailbox/on_initialize/works_in_inbox_by_default.yml +42 -42
  80. data/spec/recordings/gmail_message/initialize/sets_prefetch_attrs.yml +578 -578
  81. data/spec/recordings/gmail_message/initialize/sets_uid_and_mailbox.yml +580 -580
  82. data/spec/recordings/gmail_message/instance_methods/deletes_itself.yml +637 -637
  83. data/spec/recordings/gmail_message/instance_methods/marks_itself_read.yml +682 -682
  84. data/spec/recordings/gmail_message/instance_methods/marks_itself_unread.yml +686 -686
  85. data/spec/recordings/gmail_message/instance_methods/moves_from_one_tag_to_other.yml +862 -862
  86. data/spec/recordings/gmail_message/instance_methods/removes_a_given_label.yml +776 -776
  87. data/spec/recordings/gmail_message/instance_methods/removes_a_given_label_with_old_method.yml +776 -776
  88. data/spec/recordings/gmail_message/instance_methods/sets_given_label.yml +690 -690
  89. data/spec/recordings/gmail_message/instance_methods/sets_given_label_with_old_method.yml +691 -691
  90. data/spec/spec_helper.rb +53 -53
  91. data/spec/support/imap_mock.rb +181 -129
  92. data/spec/support/obfuscation.rb +52 -52
  93. metadata +78 -5
@@ -1,277 +1,277 @@
1
- ---
2
- LOGIN-9a890af1c86854f5170d99be6e10b8f1:
3
- - - :return
4
- - !ruby/struct:Net::IMAP::TaggedResponse
5
- tag: RUBY0001
6
- name: OK
7
- data: !ruby/struct:Net::IMAP::ResponseText
8
- code:
9
- text: ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com authenticated (Success)
10
- raw_data: "RUBY0001 OK ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com authenticated
11
- (Success)\r\n"
12
- - CAPABILITY:
13
- - - IMAP4REV1
14
- - UNSELECT
15
- - IDLE
16
- - NAMESPACE
17
- - QUOTA
18
- - ID
19
- - XLIST
20
- - CHILDREN
21
- - X-GM-EXT-1
22
- - UIDPLUS
23
- - COMPRESS=DEFLATE
24
- - ENABLE
25
- - MOVE
26
- - CONDSTORE
27
- - ESEARCH
28
- - UTF8=ACCEPT
29
- SELECT-505f013d922af4caf157dc91d6b45a60:
30
- - - :return
31
- - !ruby/struct:Net::IMAP::TaggedResponse
32
- tag: RUBY0002
33
- name: OK
34
- data: !ruby/struct:Net::IMAP::ResponseText
35
- code: !ruby/struct:Net::IMAP::ResponseCode
36
- name: READ-WRITE
37
- data:
38
- text: " INBOX selected. (Success)"
39
- raw_data: "RUBY0002 OK [READ-WRITE] INBOX selected. (Success)\r\n"
40
- - FLAGS: &2
41
- - - :Answered
42
- - :Flagged
43
- - :Draft
44
- - :Deleted
45
- - :Seen
46
- - "$Phishing"
47
- - "$NotPhishing"
48
- OK: &3
49
- - !ruby/struct:Net::IMAP::ResponseText
50
- code: !ruby/struct:Net::IMAP::ResponseCode
51
- name: PERMANENTFLAGS
52
- data: &1
53
- - :Answered
54
- - :Flagged
55
- - :Draft
56
- - :Deleted
57
- - :Seen
58
- - "$Phishing"
59
- - "$NotPhishing"
60
- - :*
61
- text: " Flags permitted."
62
- - !ruby/struct:Net::IMAP::ResponseText
63
- code: !ruby/struct:Net::IMAP::ResponseCode
64
- name: UIDVALIDITY
65
- data: 1
66
- text: " UIDs valid."
67
- - !ruby/struct:Net::IMAP::ResponseText
68
- code: !ruby/struct:Net::IMAP::ResponseCode
69
- name: UIDNEXT
70
- data: 159
71
- text: " Predicted next UID."
72
- - !ruby/struct:Net::IMAP::ResponseText
73
- code: !ruby/struct:Net::IMAP::ResponseCode
74
- name: HIGHESTMODSEQ
75
- data: '13352'
76
- text: ''
77
- PERMANENTFLAGS: &4
78
- - *1
79
- UIDVALIDITY: &5
80
- - 1
81
- EXISTS: &6
82
- - 150
83
- RECENT: &7
84
- - 0
85
- UIDNEXT: &8
86
- - 159
87
- HIGHESTMODSEQ: &9
88
- - '13352'
89
- UID SEARCH-b19658413e2b63d2bac9c290a67c2cb3:
90
- - - :return
91
- - !ruby/struct:Net::IMAP::TaggedResponse
92
- tag: RUBY0003
93
- name: OK
94
- data: !ruby/struct:Net::IMAP::ResponseText
95
- code:
96
- text: SEARCH completed (Success)
97
- raw_data: "RUBY0003 OK SEARCH completed (Success)\r\n"
98
- - FLAGS: *2
99
- OK: *3
100
- PERMANENTFLAGS: *4
101
- UIDVALIDITY: *5
102
- EXISTS: *6
103
- RECENT: *7
104
- UIDNEXT: *8
105
- HIGHESTMODSEQ: *9
106
- SEARCH:
107
- - - 1
108
- - 2
109
- - 3
110
- - 4
111
- - 5
112
- - 6
113
- - 7
114
- - 8
115
- - 9
116
- - 10
117
- - 11
118
- - 12
119
- - 13
120
- - 14
121
- - 15
122
- - 16
123
- - 17
124
- - 18
125
- - 19
126
- - 20
127
- - 21
128
- - 22
129
- - 23
130
- - 24
131
- - 25
132
- - 26
133
- - 27
134
- - 28
135
- - 29
136
- - 30
137
- - 31
138
- - 32
139
- - 33
140
- - 34
141
- - 35
142
- - 36
143
- - 37
144
- - 38
145
- - 39
146
- - 40
147
- - 41
148
- - 42
149
- - 43
150
- - 44
151
- - 45
152
- - 46
153
- - 47
154
- - 48
155
- - 49
156
- - 50
157
- - 51
158
- - 52
159
- - 53
160
- - 54
161
- - 55
162
- - 56
163
- - 57
164
- - 58
165
- - 59
166
- - 60
167
- - 61
168
- - 62
169
- - 63
170
- - 64
171
- - 65
172
- - 66
173
- - 67
174
- - 68
175
- - 69
176
- - 70
177
- - 71
178
- - 72
179
- - 73
180
- - 74
181
- - 75
182
- - 76
183
- - 77
184
- - 78
185
- - 79
186
- - 80
187
- - 81
188
- - 82
189
- - 83
190
- - 84
191
- - 85
192
- - 86
193
- - 87
194
- - 88
195
- - 89
196
- - 90
197
- - 91
198
- - 92
199
- - 93
200
- - 94
201
- - 95
202
- - 96
203
- - 97
204
- - 98
205
- - 99
206
- - 100
207
- - 101
208
- - 102
209
- - 103
210
- - 104
211
- - 105
212
- - 106
213
- - 107
214
- - 108
215
- - 109
216
- - 110
217
- - 111
218
- - 112
219
- - 113
220
- - 114
221
- - 115
222
- - 116
223
- - 117
224
- - 118
225
- - 119
226
- - 120
227
- - 121
228
- - 122
229
- - 123
230
- - 124
231
- - 125
232
- - 126
233
- - 127
234
- - 128
235
- - 129
236
- - 130
237
- - 131
238
- - 132
239
- - 133
240
- - 134
241
- - 135
242
- - 136
243
- - 137
244
- - 138
245
- - 139
246
- - 140
247
- - 141
248
- - 142
249
- - 143
250
- - 144
251
- - 145
252
- - 150
253
- - 151
254
- - 156
255
- - 157
256
- - 158
257
- LOGOUT-e76a09b7766d60a37ff9e1af527a143e:
258
- - - :return
259
- - !ruby/struct:Net::IMAP::TaggedResponse
260
- tag: RUBY0004
261
- name: OK
262
- data: !ruby/struct:Net::IMAP::ResponseText
263
- code:
264
- text: 73 good day (Success)
265
- raw_data: "RUBY0004 OK 73 good day (Success)\r\n"
266
- - FLAGS: *2
267
- OK: *3
268
- PERMANENTFLAGS: *4
269
- UIDVALIDITY: *5
270
- EXISTS: *6
271
- RECENT: *7
272
- UIDNEXT: *8
273
- HIGHESTMODSEQ: *9
274
- BYE:
275
- - !ruby/struct:Net::IMAP::ResponseText
276
- code:
277
- text: LOGOUT Requested
1
+ ---
2
+ LOGIN-9a890af1c86854f5170d99be6e10b8f1:
3
+ - - :return
4
+ - !ruby/struct:Net::IMAP::TaggedResponse
5
+ tag: RUBY0001
6
+ name: OK
7
+ data: !ruby/struct:Net::IMAP::ResponseText
8
+ code:
9
+ text: ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com authenticated (Success)
10
+ raw_data: "RUBY0001 OK ki0zvkyi1yzgy7xu4f4dh46nqrcecm@gmail.com authenticated
11
+ (Success)\r\n"
12
+ - CAPABILITY:
13
+ - - IMAP4REV1
14
+ - UNSELECT
15
+ - IDLE
16
+ - NAMESPACE
17
+ - QUOTA
18
+ - ID
19
+ - XLIST
20
+ - CHILDREN
21
+ - X-GM-EXT-1
22
+ - UIDPLUS
23
+ - COMPRESS=DEFLATE
24
+ - ENABLE
25
+ - MOVE
26
+ - CONDSTORE
27
+ - ESEARCH
28
+ - UTF8=ACCEPT
29
+ SELECT-505f013d922af4caf157dc91d6b45a60:
30
+ - - :return
31
+ - !ruby/struct:Net::IMAP::TaggedResponse
32
+ tag: RUBY0002
33
+ name: OK
34
+ data: !ruby/struct:Net::IMAP::ResponseText
35
+ code: !ruby/struct:Net::IMAP::ResponseCode
36
+ name: READ-WRITE
37
+ data:
38
+ text: " INBOX selected. (Success)"
39
+ raw_data: "RUBY0002 OK [READ-WRITE] INBOX selected. (Success)\r\n"
40
+ - FLAGS: &2
41
+ - - :Answered
42
+ - :Flagged
43
+ - :Draft
44
+ - :Deleted
45
+ - :Seen
46
+ - "$Phishing"
47
+ - "$NotPhishing"
48
+ OK: &3
49
+ - !ruby/struct:Net::IMAP::ResponseText
50
+ code: !ruby/struct:Net::IMAP::ResponseCode
51
+ name: PERMANENTFLAGS
52
+ data: &1
53
+ - :Answered
54
+ - :Flagged
55
+ - :Draft
56
+ - :Deleted
57
+ - :Seen
58
+ - "$Phishing"
59
+ - "$NotPhishing"
60
+ - :*
61
+ text: " Flags permitted."
62
+ - !ruby/struct:Net::IMAP::ResponseText
63
+ code: !ruby/struct:Net::IMAP::ResponseCode
64
+ name: UIDVALIDITY
65
+ data: 1
66
+ text: " UIDs valid."
67
+ - !ruby/struct:Net::IMAP::ResponseText
68
+ code: !ruby/struct:Net::IMAP::ResponseCode
69
+ name: UIDNEXT
70
+ data: 159
71
+ text: " Predicted next UID."
72
+ - !ruby/struct:Net::IMAP::ResponseText
73
+ code: !ruby/struct:Net::IMAP::ResponseCode
74
+ name: HIGHESTMODSEQ
75
+ data: '13352'
76
+ text: ''
77
+ PERMANENTFLAGS: &4
78
+ - *1
79
+ UIDVALIDITY: &5
80
+ - 1
81
+ EXISTS: &6
82
+ - 150
83
+ RECENT: &7
84
+ - 0
85
+ UIDNEXT: &8
86
+ - 159
87
+ HIGHESTMODSEQ: &9
88
+ - '13352'
89
+ UID SEARCH-b19658413e2b63d2bac9c290a67c2cb3:
90
+ - - :return
91
+ - !ruby/struct:Net::IMAP::TaggedResponse
92
+ tag: RUBY0003
93
+ name: OK
94
+ data: !ruby/struct:Net::IMAP::ResponseText
95
+ code:
96
+ text: SEARCH completed (Success)
97
+ raw_data: "RUBY0003 OK SEARCH completed (Success)\r\n"
98
+ - FLAGS: *2
99
+ OK: *3
100
+ PERMANENTFLAGS: *4
101
+ UIDVALIDITY: *5
102
+ EXISTS: *6
103
+ RECENT: *7
104
+ UIDNEXT: *8
105
+ HIGHESTMODSEQ: *9
106
+ SEARCH:
107
+ - - 1
108
+ - 2
109
+ - 3
110
+ - 4
111
+ - 5
112
+ - 6
113
+ - 7
114
+ - 8
115
+ - 9
116
+ - 10
117
+ - 11
118
+ - 12
119
+ - 13
120
+ - 14
121
+ - 15
122
+ - 16
123
+ - 17
124
+ - 18
125
+ - 19
126
+ - 20
127
+ - 21
128
+ - 22
129
+ - 23
130
+ - 24
131
+ - 25
132
+ - 26
133
+ - 27
134
+ - 28
135
+ - 29
136
+ - 30
137
+ - 31
138
+ - 32
139
+ - 33
140
+ - 34
141
+ - 35
142
+ - 36
143
+ - 37
144
+ - 38
145
+ - 39
146
+ - 40
147
+ - 41
148
+ - 42
149
+ - 43
150
+ - 44
151
+ - 45
152
+ - 46
153
+ - 47
154
+ - 48
155
+ - 49
156
+ - 50
157
+ - 51
158
+ - 52
159
+ - 53
160
+ - 54
161
+ - 55
162
+ - 56
163
+ - 57
164
+ - 58
165
+ - 59
166
+ - 60
167
+ - 61
168
+ - 62
169
+ - 63
170
+ - 64
171
+ - 65
172
+ - 66
173
+ - 67
174
+ - 68
175
+ - 69
176
+ - 70
177
+ - 71
178
+ - 72
179
+ - 73
180
+ - 74
181
+ - 75
182
+ - 76
183
+ - 77
184
+ - 78
185
+ - 79
186
+ - 80
187
+ - 81
188
+ - 82
189
+ - 83
190
+ - 84
191
+ - 85
192
+ - 86
193
+ - 87
194
+ - 88
195
+ - 89
196
+ - 90
197
+ - 91
198
+ - 92
199
+ - 93
200
+ - 94
201
+ - 95
202
+ - 96
203
+ - 97
204
+ - 98
205
+ - 99
206
+ - 100
207
+ - 101
208
+ - 102
209
+ - 103
210
+ - 104
211
+ - 105
212
+ - 106
213
+ - 107
214
+ - 108
215
+ - 109
216
+ - 110
217
+ - 111
218
+ - 112
219
+ - 113
220
+ - 114
221
+ - 115
222
+ - 116
223
+ - 117
224
+ - 118
225
+ - 119
226
+ - 120
227
+ - 121
228
+ - 122
229
+ - 123
230
+ - 124
231
+ - 125
232
+ - 126
233
+ - 127
234
+ - 128
235
+ - 129
236
+ - 130
237
+ - 131
238
+ - 132
239
+ - 133
240
+ - 134
241
+ - 135
242
+ - 136
243
+ - 137
244
+ - 138
245
+ - 139
246
+ - 140
247
+ - 141
248
+ - 142
249
+ - 143
250
+ - 144
251
+ - 145
252
+ - 150
253
+ - 151
254
+ - 156
255
+ - 157
256
+ - 158
257
+ LOGOUT-e76a09b7766d60a37ff9e1af527a143e:
258
+ - - :return
259
+ - !ruby/struct:Net::IMAP::TaggedResponse
260
+ tag: RUBY0004
261
+ name: OK
262
+ data: !ruby/struct:Net::IMAP::ResponseText
263
+ code:
264
+ text: 73 good day (Success)
265
+ raw_data: "RUBY0004 OK 73 good day (Success)\r\n"
266
+ - FLAGS: *2
267
+ OK: *3
268
+ PERMANENTFLAGS: *4
269
+ UIDVALIDITY: *5
270
+ EXISTS: *6
271
+ RECENT: *7
272
+ UIDNEXT: *8
273
+ HIGHESTMODSEQ: *9
274
+ BYE:
275
+ - !ruby/struct:Net::IMAP::ResponseText
276
+ code:
277
+ text: LOGOUT Requested