gmail 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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