gmailer 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGES +5 -0
  2. data/README +34 -22
  3. data/gmailer.rb +260 -151
  4. metadata +2 -2
data/CHANGES CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.1.0 - 12-Sep-2005
2
+ - remove all hash returns
3
+ - add class for converation, box, filter, contact
4
+ - add msg method for message base action
5
+
1
6
  == 0.0.9 - 8-Sep-2005
2
7
  - fix fetch message body bug
3
8
  - fix encode, decode bug
data/README CHANGED
@@ -39,7 +39,7 @@
39
39
  GMailer.connect(name, pwd) do |g|
40
40
  puts "Your frequently used addresses:"
41
41
  g.fetch(:contact=>"freq").each do |item|
42
- puts "Name: #{item['name']} Email: #{item['email']}"
42
+ puts "Name: #{item.name} Email: #{item.email}"
43
43
  end
44
44
  end
45
45
 
@@ -48,7 +48,7 @@
48
48
  GMailer.connect(:username=>name,:password=>pwd) do |g|
49
49
  labels = g.labels
50
50
  g.messages(:label=>labels[0]).each {|m|
51
- puts "Subject: #{m['subject']} / Snippet: #{m['snippet']}" if m['new?']
51
+ puts "Subject: #{m.subject} / Snippet: #{m.snippet}" if m.new?
52
52
  }
53
53
  end
54
54
 
@@ -70,6 +70,14 @@ GMailer.connect(:username=>name,:password=>pwd) do |g|
70
70
  #removing a label from a message
71
71
  g.remove_label(msgid,'label_name')
72
72
 
73
+ g.msg(msgid) {|m|
74
+ #applying a label to a message
75
+ m.apply_label('label_name')
76
+
77
+ #removing a label from a message
78
+ m.remove_label('label_name')
79
+ }
80
+
73
81
  end
74
82
 
75
83
  === Update preferece
@@ -84,79 +92,80 @@ GMailer.connect(:username=>name,:password=>pwd) do |g|
84
92
  :snippets=>true,
85
93
  :display_name=>'Display Name')
86
94
  pref = g.preference
87
- puts "Display language:#{pref['display_language']}, Max Page Size:#{pref['max_page_size']}"
95
+ puts "Display language:#{pref.display_language}, Max Page Size:#{pref.max_page_size}"
88
96
  end
89
97
 
90
98
  === Apply star and remove star
91
99
 
92
100
  GMailer.connect(:username=>name,:password=>pwd) do |g|
101
+
93
102
  #apply star to a message
94
- g.apply_star(msgid)
103
+ g.apply_star(msgid) # or g.msg(msgid).apply_star
95
104
 
96
105
  #remove star from a message
97
- g.remove_star(msgid)
106
+ g.remove_star(msgid) # or g.msg(msgid).remove_star
98
107
  end
99
108
 
100
109
  === Archive and unarchive a message
101
110
 
102
111
  GMailer.connect(:username=>name,:password=>pwd) do |g|
103
112
  #archive a message
104
- g.archive(msgid)
113
+ g.archive(msgid) # or g.msg(msgid).archive
105
114
 
106
115
  #unarchive a message
107
- g.unarchive(msgid)
116
+ g.unarchive(msgid) # or g.msg(msgid).unarchive
108
117
  end
109
118
 
110
119
  === Mark read and unread a message
111
120
 
112
121
  GMailer.connect(:username=>name,:password=>pwd) do |g|
113
122
  #mark a message as read
114
- g.mark_read(msgid)
123
+ g.mark_read(msgid) # or g.msg(msgid).mark_read
115
124
 
116
125
  #mark a message as unread
117
- g.mark_unread(msgid)
126
+ g.mark_unread(msgid) # or g.msg(msgid).mark_unread
118
127
  end
119
128
 
120
129
  === Report spam and reverse
121
130
 
122
131
  GMailer.connect(:username=>name,:password=>pwd) do |g|
123
132
  #report a message as not spam
124
- g.report_spam(msgid)
133
+ g.report_spam(msgid) # or g.msg(msgid).report_spam
125
134
 
126
135
  #report a message as not spam
127
- g.report_not_spam(msgid)
136
+ g.report_not_spam(msgid) # or g.msg(msgid).report_not_spam
128
137
  end
129
138
 
130
139
  === Trash In & Out and delete a message
131
140
 
132
141
  GMailer.connect(:username=>name,:password=>pwd) do |g|
133
142
  #move a message to trash
134
- g.trash(msgid)
143
+ g.trash(msgid) # or g.msg(msgid).trash
135
144
 
136
145
  #move a message from trash to inbox
137
- g.untrash(msgid)
146
+ g.untrash(msgid) # or g.msg(msgid).untrash
138
147
 
139
148
  #delete a trash message forever
140
- g.delete_trash(msgid)
149
+ g.delete_trash(msgid) # or g.msg(msgid).delete_trash
141
150
 
142
151
  #delete a spam message forever
143
- g.delete_spam(msgid)
152
+ g.delete_spam(msgid) # or g.msg(msgid).delete_spam
144
153
 
145
154
  #delete a message forever
146
- g.delete_message(msgid)
155
+ g.delete_message(msgid) # or g.msg(msgid).delete_message
147
156
  end
148
157
 
149
158
  === Show Original Message
150
159
 
151
160
  GMailer.connect(:username=>name,:password=>pwd) do |g|
152
161
  #show original
153
- g.show_original(msgid)
162
+ g.show_original(msgid) # of g.msg(msgid).original
154
163
  }
155
164
 
156
165
  === Fetch messages with filter
157
166
 
158
167
  GMailer.connect(:username=>name,:password=>pwd) do |g|
159
- g.messages(:standard=>'all',:read=>false).each {|msg|
168
+ g.messages(:standard=>'all',:read=>false).each_msg {|msg|
160
169
  msg.apply_star
161
170
  msg.apply_label(label)
162
171
  puts "subject: " + msg.subject
@@ -263,6 +272,9 @@ archive(msgid)
263
272
  unarchive(msgid)
264
273
  To unarchive a message
265
274
 
275
+ msg(msgid)
276
+ To fetch a message with msgid
277
+
266
278
  update_preference(preference hash)
267
279
  To update preference setting
268
280
  hash is one of :max_page_size(25,50,100),:keyboard_shortcuts(true,false),:indicators(true,false),
@@ -395,7 +407,7 @@ box_pos
395
407
  box
396
408
  An array of conversations in current mailbox.
397
409
 
398
- === keys of each conversation
410
+ === methods of each conversation
399
411
  id
400
412
  Conversation ID
401
413
 
@@ -456,7 +468,7 @@ conv_starred
456
468
  conv
457
469
  An array of messages of current conversation.
458
470
 
459
- === keys of each conversation
471
+ === conversation method
460
472
  index
461
473
  Index.
462
474
 
@@ -511,7 +523,7 @@ body
511
523
  attachment
512
524
  An array of attachment-information.
513
525
 
514
- === keys of each attachment
526
+ === methods of each attachment
515
527
  id
516
528
  Attachment ID.
517
529
 
@@ -530,7 +542,7 @@ size
530
542
  contacts
531
543
  An array of entries of your address book.
532
544
 
533
- === keys of each contact
545
+ === methods of each contact
534
546
  name
535
547
  Name (nickname).
536
548
 
data/gmailer.rb CHANGED
@@ -26,6 +26,8 @@ GM_QUERY = 0x008
26
26
  GM_CONTACT = 0x010
27
27
  GM_PREFERENCE = 0x020
28
28
  GM_SHOWORIGINAL = 0x040
29
+ GM_CONV_SPAM = 0x080
30
+ GM_CONV_TRASH = 0x100
29
31
 
30
32
  GM_ACT_CREATELABEL = 1
31
33
  GM_ACT_DELETELABEL = 2
@@ -50,7 +52,7 @@ GM_ACT_DELSPAM = 20 # delete spam, forever
50
52
  GM_ACT_DELTRASH = 21 # delete trash message, forever
51
53
 
52
54
  module GMailer
53
- VERSION = "0.0.9"
55
+ VERSION = "0.1.0"
54
56
  attr_accessor :connection
55
57
 
56
58
  # the main class.
@@ -210,7 +212,6 @@ module GMailer
210
212
  end
211
213
 
212
214
 
213
-
214
215
  #
215
216
  # return bool
216
217
  # desc See if it is connected to GMail.
@@ -307,7 +308,29 @@ module GMailer
307
308
  q = "search=cat&cat=" + box.to_s + "&view=tl&start=" + pos.to_s
308
309
 
309
310
  when GM_CONVERSATION
310
- q = "search=inbox&ser=1&view=cv"
311
+ q = "search=all&ser=1&view=cv"
312
+ if (box.class==Array)
313
+ q += "&th=" + box[0].to_s
314
+ for i in 1 .. box.length
315
+ q += "&msgs=" + box[i].to_s
316
+ end
317
+ else
318
+ q += "&th=" + box.to_s
319
+ end
320
+
321
+ when GM_CONV_SPAM
322
+ q = "search=spam&ser=1&view=cv"
323
+ if (box.class==Array)
324
+ q += "&th=" + box[0].to_s
325
+ for i in 1 .. box.length
326
+ q += "&msgs=" + box[i].to_s
327
+ end
328
+ else
329
+ q += "&th=" + box.to_s
330
+ end
331
+
332
+ when GM_CONV_TRASH
333
+ q = "search=trash&ser=1&view=cv"
311
334
  if (box.class==Array)
312
335
  q += "&th=" + box[0].to_s
313
336
  for i in 1 .. box.length
@@ -390,20 +413,44 @@ module GMailer
390
413
  end
391
414
  box = "inbox" unless box
392
415
  fetch_box(type,box,pos)
416
+ if type == GM_CONVERSATION
417
+ fetch_box(GM_CONV_SPAM,box,pos) if @raw['mg'].nil?
418
+ fetch_box(GM_CONV_TRASH,box,pos) if @raw['mg'].nil?
419
+ end
420
+
393
421
  if type == GM_SHOWORIGINAL
394
- snapshot = @raw
422
+ ss = @raw
395
423
  else
396
- snapshot = snapshot(type)
424
+ ss = snapshot(type)
397
425
  end
398
426
  if block_given?
399
- yield(snapshot)
427
+ yield(ss)
400
428
  elsif type == GM_CONTACT
401
- snapshot.contacts
429
+ ss.contacts
402
430
  else
403
- snapshot
431
+ ss
404
432
  end
405
433
  end
406
434
 
435
+ #
436
+ # return message
437
+ # param message id
438
+ # desc Fetch a message with message id
439
+ #
440
+ def msg(msgid)
441
+ m = fetch(:conversation=>msgid).message
442
+ if m.nil? then
443
+ raise ArgumentError, 'Message Not Exist'
444
+ end
445
+ m.connection = self
446
+ if block_given?
447
+ yield(m)
448
+ else
449
+ m
450
+ end
451
+
452
+ end
453
+
407
454
  #
408
455
  # return string[]
409
456
  # param string[] convs
@@ -418,11 +465,11 @@ module GMailer
418
465
  end
419
466
  final = []
420
467
  convs.each { |v|
421
- if v["attachment"]
422
- v["attachment"].each { |vv|
423
- f = path+"/"+vv["filename"]
424
- f = path+"/"+vv["filename"]+"."+rand(2000).to_s while (FileTest.exist?(f))
425
- if attachment(vv["id"],v["id"],f,false)
468
+ if v.attachment
469
+ v.attachment.each { |vv|
470
+ f = path+"/"+vv.filename
471
+ f = path+"/"+vv.filename+"."+rand(2000).to_s while (FileTest.exist?(f))
472
+ if attachment(vv.id,v.id,f,false)
426
473
  final.push(f)
427
474
  end
428
475
  }
@@ -448,7 +495,7 @@ module GMailer
448
495
  end
449
496
  final = []
450
497
  convs.each {|v|
451
- if v["attachment"]
498
+ if v.attachment
452
499
  f = path+"/attachment.zip"
453
500
  f = path+"/attachment."+rand(2000).to_s+".zip" while (FileTest.exist?(f))
454
501
  if attachment(v["attachment"][0]["id"],v["id"],f,true)
@@ -832,9 +879,9 @@ module GMailer
832
879
  @filter.keys.each do |k|
833
880
  case k
834
881
  when :read
835
- ml.box = ml.box.find_all { |x| x['read?'] == @filter[k] }
882
+ ml.box = ml.box.find_all { |x| x.read? == @filter[k] }
836
883
  when :star
837
- ml.box = ml.box.find_all { |x| x['star?'] == @filter[k] }
884
+ ml.box = ml.box.find_all { |x| x.star? == @filter[k] }
838
885
  end
839
886
  end
840
887
  ml.connection = self
@@ -1253,27 +1300,23 @@ module GMailer
1253
1300
  end
1254
1301
  @box = []
1255
1302
  if raw["t"]
1256
- raw["t"].each {|t|
1303
+ raw["t"].each do |t|
1257
1304
  if (t != "t")
1258
- b = {
1259
- "id"=>t[0],
1260
- "is_read"=>(t[1] != 1 ? 1 : 0),
1261
- "read?"=>(t[1] != 1),
1262
- "new?"=>(t[1] == 1),
1263
- "is_starred"=>(t[2] == 1 ? 1 : 0),
1264
- "star?"=>(t[2] == 1),
1265
- "date"=>decode(strip_tags(t[3])),
1266
- "sender"=>decode(strip_tags(t[4])),
1267
- "flag"=>t[5],
1268
- "subject"=>decode(strip_tags(t[6])),
1269
- "snippet"=>decode(t[7].gsub('"','"').gsub('…','...')),
1270
- "labels"=>t[8].empty? ? [] : t[8].map{|tt|decode(tt)},
1271
- "attachment"=>t[9].empty? ? []: decode(t[9]).split(","),
1272
- "msgid"=>t[10]
1273
- }
1274
- @box.push(b)
1275
- end
1276
- }
1305
+ b = Box.new
1306
+ b.id = t[0]
1307
+ b.is_read = (t[1] != 1 ? 1 : 0)
1308
+ b.is_starred = (t[2] == 1 ? 1 : 0)
1309
+ b.date = decode(strip_tags(t[3]))
1310
+ b.sender = decode(strip_tags(t[4]))
1311
+ b.flag = t[5]
1312
+ b.subject = decode(strip_tags(t[6]))
1313
+ b.snippet = decode(t[7].gsub('"','"').gsub('…','...'))
1314
+ b.labels = t[8].empty? ? [] : t[8].map{|tt|decode(tt)}
1315
+ b.attachment = t[9].empty? ? []: decode(t[9]).split(",")
1316
+ b.msgid = t[10]
1317
+ @box.push(b)
1318
+ end
1319
+ end
1277
1320
  end
1278
1321
 
1279
1322
  if (!raw["cs"].nil?)
@@ -1308,74 +1351,82 @@ module GMailer
1308
1351
  @conv_starred = false
1309
1352
 
1310
1353
  @conv = []
1311
- b = {}
1312
- raw["mg"].each {|r|
1354
+ b = Conversation.new
1355
+ raw["mg"].each do |r|
1313
1356
  if (r[0] == "mb")
1314
- b["body"] = '' if b["body"].nil?
1315
- b["body"] += r[1]
1357
+ b.body = '' if b.body.nil?
1358
+ b.body += r[1]
1316
1359
  if (r[2] == 0)
1317
- b["body"] = decode(b["body"])
1360
+ b.body = decode(b.body)
1318
1361
  @conv.push(b)
1319
- b = {}
1362
+ b = Conversation.new
1320
1363
  end
1321
1364
  elsif (r[0] == "mi")
1322
- if !b.empty?
1365
+ if !b.id.nil?
1323
1366
  @conv.push(b)
1324
- b = {}
1367
+ b = Conversation.new
1325
1368
  end
1326
- b = {}
1327
- b["index"] = r[2]
1328
- b["id"] = r[3]
1329
- b["is_star"] = r[4]
1330
- if (b["is_star"] == 1)
1331
- @conv_starred = true
1369
+ b = Conversation.new
1370
+ b.index = r[2]
1371
+ b.id = r[3]
1372
+ b.is_star = r[4]
1373
+ @conv_starred = (b.is_star == 1)
1374
+ b.sender = decode(r[6])
1375
+ b.sender_email = r[8].gsub("\"",'') # remove annoying d-quotes in address
1376
+ b.recv = r[9]
1377
+ b.recv_email = r[11].to_s.gsub("\"",'')
1378
+ b.reply_email = r[14].to_s.gsub("\"",'')
1379
+ b.dt_easy = r[10]
1380
+ b.dt = r[15]
1381
+ b.subject = decode(r[16])
1382
+ b.snippet = decode(r[17])
1383
+ b.attachment = []
1384
+ r[18].each do |bb|
1385
+ at = Attachment.new
1386
+ at.id = bb[0]
1387
+ at.filename = bb[1]
1388
+ at.type = bb[2]
1389
+ at.size = bb[3]
1390
+ b.attachment.push(at)
1332
1391
  end
1333
- b["sender"] = decode(r[6])
1334
- b["sender_email"] = r[8].gsub("\"",'') # remove annoying d-quotes in address
1335
- b["recv"] = r[9]
1336
- b["recv_email"] = r[11].to_s.gsub("\"",'')
1337
- b["reply_email"] = r[14].to_s.gsub("\"",'')
1338
- b["dt_easy"] = r[10]
1339
- b["dt"] = r[15]
1340
- b["subject"] = decode(r[16])
1341
- b["snippet"] = decode(r[17])
1342
- b["attachment"] = []
1343
- r[18].each {|bb|
1344
- b["attachment"].push({"id"=>bb[0],"filename"=>bb[1],"type"=>bb[2],"size"=>bb[3]})
1345
- }
1346
- b["is_draft"] = false
1347
- b["body"] = ''
1392
+ b.is_draft = false
1393
+ b.body = ''
1348
1394
  elsif (r[0] == "di")
1349
- if !b.empty?
1395
+ if !b.id.nil?
1350
1396
  @conv.push(b)
1351
- b = {}
1397
+ b = Converation.new
1352
1398
  end
1353
- b = {}
1354
- b["index"] = r[2]
1355
- b["id"] = r[3]
1356
- b["is_star"] = r[4]
1357
- @conv_starred = (b["is_star"] == 1)
1358
- b["sender"] = decode(r[6])
1359
- b["sender_email"] = r[8].gsub("\"",'') # remove annoying d-quotes in address
1360
- b["recv"] = r[9]
1361
- b["recv_email"] = r[11].gsub("\"",'')
1362
- b["reply_email"] = r[14].gsub("\"",'')
1363
- b["cc_email"] = r[12].gsub("\"",'')
1364
- b["bcc_email"] = r[13].gsub("\"",'')
1365
- b["dt_easy"] = r[10]
1366
- b["dt"] = r[15]
1367
- b["subject"] = decode(r[16])
1368
- b["snippet"] = decode(r[17])
1369
- b["attachment"] = []
1370
- r[18].each {|bb|
1371
- b["attachment"].push({"id"=>bb[0],"filename"=>bb[1],"type"=>bb[2],"size"=>bb[3]})
1372
- }
1373
- b["is_draft"] = true
1374
- b["draft_parent"] = r[5]
1375
- b["body"] = decode(r[20])
1399
+ b = Converation.new
1400
+ b.index = r[2]
1401
+ b.id = r[3]
1402
+ b.is_star = r[4]
1403
+ @conv_starred = (b.is_star == 1)
1404
+ b.sender = decode(r[6])
1405
+ b.sender_email = r[8].gsub("\"",'') # remove annoying d-quotes in address
1406
+ b.recv = r[9]
1407
+ b.recv_email = r[11].gsub("\"",'')
1408
+ b.reply_email = r[14].gsub("\"",'')
1409
+ b.cc_email = r[12].gsub("\"",'')
1410
+ b.bcc_email = r[13].gsub("\"",'')
1411
+ b.dt_easy = r[10]
1412
+ b.dt = r[15]
1413
+ b.subject = decode(r[16])
1414
+ b.snippet = decode(r[17])
1415
+ b.attachment = []
1416
+ r[18].each do |bb|
1417
+ at = Attachment.new
1418
+ at.id = bb[0]
1419
+ at.filename = bb[1]
1420
+ at.type = bb[2]
1421
+ at.size = bb[3]
1422
+ b.attachment.push(at)
1423
+ end
1424
+ b.is_draft = true
1425
+ b.draft_parent = r[5]
1426
+ b.body = decode(r[20])
1376
1427
  end
1377
- }
1378
- @conv.push(b) unless b.empty?
1428
+ end
1429
+ @conv.push(b) unless !b.id.nil?
1379
1430
  @message = Message.new(@conv_tile,@conv_total,@conv_id,@conv_labels,@conv_starred)
1380
1431
  @message.conv = @conv
1381
1432
  end
@@ -1383,14 +1434,11 @@ module GMailer
1383
1434
  @contacts = []
1384
1435
  if raw["ce"]
1385
1436
  raw["ce"].each {|a|
1386
- b = {
1387
- "name"=>a[2],
1388
- "email"=>a[4].gsub("\"",'')
1389
- }
1390
- if !a[5].empty?
1391
- b["notes"] = a[5]
1392
- end
1393
- @contacts.push(b)
1437
+ c = Contact.new
1438
+ c.name = a[2]
1439
+ c.email = a[4].gsub("\"",'')
1440
+ c.notes = a[5] if !a[5].empty?
1441
+ @contacts.push(c)
1394
1442
  }
1395
1443
  end
1396
1444
  @view = GM_CONTACT
@@ -1399,33 +1447,25 @@ module GMailer
1399
1447
  raw["p"].each_with_index { |v,i|
1400
1448
  prefs[v[0]] = v[1] if i>0
1401
1449
  }
1402
- @preference = {'max_page_size'=>'10',
1403
- 'keyboard_shortcuts'=>false,
1404
- 'indicators'=>false,
1405
- 'display_language'=>'en',
1406
- 'signature'=>'',
1407
- 'reply_to'=>'',
1408
- 'snippets'=>false,
1409
- 'display_name'=>'',
1410
- }
1450
+ @preference = Preference.new
1411
1451
  prefs.each do |k,v|
1412
1452
  case k
1413
1453
  when 'ix_nt'
1414
- @preference['max_page_size'] = v
1454
+ @preference.max_page_size = v
1415
1455
  when 'bx_hs'
1416
- @preference['keyboard_shortcuts'] = (v == '1')
1456
+ @preference.keyboard_shortcuts = (v == '1')
1417
1457
  when 'bx_sc'
1418
- @preference['indicators'] = (v == '1')
1458
+ @preference.indicators = (v == '1')
1419
1459
  when 'sx_dl'
1420
- @preference['display_language'] = v
1460
+ @preference.display_language = v
1421
1461
  when 'sx_sg'
1422
- @preference['signature'] = (v == '0') ? '' : v
1462
+ @preference.signature = (v == '0') ? '' : v
1423
1463
  when 'sx_rt'
1424
- @preference['reply_to'] = v
1464
+ @preference.reply_to = v
1425
1465
  when 'bx_ns'
1426
- @preference['snippets'] = (v == '0')
1466
+ @preference.snippets = (v == '0')
1427
1467
  when 'sx_dn'
1428
- @preference['display_name'] = v
1468
+ @preference.display_name = v
1429
1469
  end
1430
1470
  end
1431
1471
 
@@ -1442,28 +1482,23 @@ module GMailer
1442
1482
  }
1443
1483
  end
1444
1484
  @filter = []
1445
- @filter_rules = []
1446
- raw["fi"][1].each { |fi|
1447
- b = {
1448
- "id" => fi[0],
1449
- "query" => fi[1],
1450
- "star" => fi[3],
1451
- "label" => fi[4],
1452
- "archive" => fi[5],
1453
- "trash" => fi[6] #,"forward" => fi[7]
1454
- }
1455
- bb = {
1456
- "from" => fi[2][0],
1457
- "to" => fi[2][1],
1458
- "subject" => fi[2][2],
1459
- "has" => fi[2][3],
1460
- "hasnot" => fi[2][4],
1461
- "attach" => fi[2][5]
1462
- }
1463
-
1464
- @filter.push(b)
1465
- @filter_rules.push(bb)
1466
- }
1485
+ raw["fi"][1].each do |fi|
1486
+ f = Filter.new
1487
+ f.id = fi[0]
1488
+ f.query = fi[1]
1489
+ f.star = fi[3]
1490
+ f.label = fi[4]
1491
+ f.archive = fi[5]
1492
+ f.trash = fi[6]
1493
+ f.from = fi[2][0]
1494
+ f.to = fi[2][1]
1495
+ f.subject = fi[2][2]
1496
+ f.has = fi[2][3]
1497
+ f.hasnot = fi[2][4]
1498
+ f.attach = fi[2][5]
1499
+
1500
+ @filter.push(b)
1501
+ end
1467
1502
  @view = GM_PREFERENCE
1468
1503
  else
1469
1504
  @created = 0
@@ -1476,6 +1511,31 @@ module GMailer
1476
1511
 
1477
1512
  end
1478
1513
 
1514
+ # a single filter
1515
+ class Filter
1516
+ attr_accessor :id,:query,:star,:label,:archive,:trash
1517
+ attr_accessor :from,:to,:subject,:has,:hasnot,:attach
1518
+ end
1519
+
1520
+ # a single box
1521
+ class Box
1522
+ attr_accessor :id, :is_read, :is_starred, :date, :msgid
1523
+ attr_accessor :sender, :flag, :subject, :snippet, :labels, :attachment
1524
+
1525
+ def read?
1526
+ is_read == 1
1527
+ end
1528
+
1529
+ def new?
1530
+ is_read != 1
1531
+ end
1532
+
1533
+ def star?
1534
+ is_starred == 1
1535
+ end
1536
+
1537
+ end
1538
+
1479
1539
  # a list of messages.
1480
1540
  class MessageList
1481
1541
  attr_reader :name, :total, :pos
@@ -1488,15 +1548,13 @@ module GMailer
1488
1548
 
1489
1549
  def each(&block)
1490
1550
  @box.each do |b|
1491
- m = connection.fetch(:conversation=>b['id']).message
1492
- m.connection = @connection
1493
- block.call(m)
1551
+ block.call(b)
1494
1552
  end
1495
1553
  end
1496
-
1497
- def map(&block)
1498
- @box.map do |b|
1499
- m = connection.fetch(:conversation=>b['id']).message
1554
+
1555
+ def each_msg(&block)
1556
+ @box.each do |b|
1557
+ m = connection.fetch(:conversation=>b.id).message
1500
1558
  m.connection = @connection
1501
1559
  block.call(m)
1502
1560
  end
@@ -1504,6 +1562,56 @@ module GMailer
1504
1562
 
1505
1563
  end
1506
1564
 
1565
+ # a Preference
1566
+ class Preference
1567
+ attr_accessor :max_page_size, :keyboard_shortcuts, :indicators, :display_language
1568
+ attr_accessor :signature, :reply_to, :snippets, :display_name
1569
+ def initialize
1570
+ @max_page_size = '10'
1571
+ @keyboard_shortcuts = false
1572
+ @indicators = false
1573
+ @display_language = 'en'
1574
+ @signature = ''
1575
+ @reply_to = ''
1576
+ @snippets = false
1577
+ @display_name = ''
1578
+ end
1579
+ end
1580
+
1581
+ # a Preference
1582
+ class Contact
1583
+ attr_accessor :name,:email,:notes
1584
+ def initialize
1585
+ @name = ''
1586
+ @email = ''
1587
+ @notes = ''
1588
+ end
1589
+ end
1590
+
1591
+ # a single attachment
1592
+ class Attachment
1593
+ attr_accessor :id, :filename, :type, :size
1594
+ end
1595
+
1596
+ # a single converation
1597
+ class Conversation
1598
+ attr_accessor :id, :index, :body, :draft_parent, :is_draft, :attachment
1599
+ attr_accessor :snippet, :subject, :dt, :dt_easy, :bcc_email, :cc_email
1600
+ attr_accessor :reply_email, :recv_email, :recv, :sender_email, :sender, :is_star
1601
+ def read?
1602
+ is_read == 1
1603
+ end
1604
+
1605
+ def new?
1606
+ is_read != 1
1607
+ end
1608
+
1609
+ def star?
1610
+ is_starred == 1
1611
+ end
1612
+
1613
+ end
1614
+
1507
1615
  # a single message
1508
1616
  class Message
1509
1617
  attr_reader :title, :total, :id, :labels, :starred
@@ -1518,7 +1626,7 @@ module GMailer
1518
1626
 
1519
1627
  def method_missing(methId)
1520
1628
  str = methId.id2name
1521
- @conv[0][str]
1629
+ @conv[0].method(str).call
1522
1630
  end
1523
1631
 
1524
1632
  #
@@ -1573,9 +1681,6 @@ module GMailer
1573
1681
  @connection.perform_action(GM_ACT_INBOX,@id, '')
1574
1682
  end
1575
1683
 
1576
- def archived?()
1577
- end
1578
-
1579
1684
  #
1580
1685
  # return boolean
1581
1686
  # param string msgid
@@ -1595,7 +1700,11 @@ module GMailer
1595
1700
  end
1596
1701
 
1597
1702
  def read?()
1598
- @conv[0]['read?']
1703
+ @conv[0].read?
1704
+ end
1705
+
1706
+ def new?()
1707
+ @conv[0].new?
1599
1708
  end
1600
1709
 
1601
1710
  #
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: gmailer
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.9
7
- date: 2005-09-08
6
+ version: 0.1.0
7
+ date: 2005-09-12
8
8
  summary: "An class interface of the Google's webmail service"
9
9
  require_paths:
10
10
  - ''