I think this whole protocol is already reverse-engeneerd, or mayeb
google even publishes it ?  THe last might not be true .. but you could
find a whole lotta information with ... google, no ?

e.g.:
http://www.johnvey.com/features/gmailapi/ ?

Karel.


Op donderdag 14-12-2006 om 01:46 uur [tijdzone -0500], schreef Youness
Alaoui:
> Hello,
> I updated this wiki page with more accurate information about 
> the GData (I named it like that :D) format : 
> http://www.amsn-project.net/wiki/index.php/Gmail
> If someone is ready to take on the challenge of finding out how the timestamp 
> is written, please do so, it 
> would be nice to have that information ready for when I finish my exams... 
> It's really easy, I just don't have 
> much time for it right now...
> Also, I'd like to know how you'd like me to implement the 'tell me' 
> functionality of the plugin... should I show 
> a popup window with that information (like the official google notifier), or 
> should I rather show a window with 
> a listbox of all new emails and the user clicks on the email to see more 
> information...
> I would go with the notify (more userfriendly) but I'm afraid I won't be able 
> to give the full functionality to 
> the users (like seeing who initiated a conversation, what the labels are, 
> attachments, etc... ) easily...
> I will also need to have a up/down buttons on the notify window so a user can 
> view the mail info one by one.. 
> Any suggestions ? someone wants to implement the notify winodw ? Tom perhaps? 
> I know you love to play with 
> canvas (and I have near zero knowledge of how canvas work...)
> 
> Thanks,
> KaKaRoTo
> 
> ----- Forwarded message from [EMAIL PROTECTED] -----
> 
> From: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Subject: [Amsn-commits] SF.net SVN: amsn: [7657]
>       trunk/amsn-extras/plugins/gnotify
> 
> Revision: 7657
>           http://svn.sourceforge.net/amsn/?rev=7657&view=rev
> Author:   kakaroto
> Date:     2006-12-13 22:39:46 -0800 (Wed, 13 Dec 2006)
> 
> Log Message:
> -----------
> Updated with some comments and taking into account the 'new' and 'initiator' 
> keys of an unread mail author information.
> Also fixed the timestamp parsing which is two separate keys with values 
> instead of a single 16 bytes header.
> http://www.amsn-project.net/wiki/index.php/Gmail
> 
> Modified Paths:
> --------------
>     trunk/amsn-extras/plugins/gnotify/gnotify.tcl
> 
> Property Changed:
> ----------------
>     trunk/amsn-extras/plugins/gnotify/
> 
> 
> Property changes on: trunk/amsn-extras/plugins/gnotify
> ___________________________________________________________________
> Name: svn:ignore
>    + *
> 
> 
> Modified: trunk/amsn-extras/plugins/gnotify/gnotify.tcl
> ===================================================================
> --- trunk/amsn-extras/plugins/gnotify/gnotify.tcl     2006-12-13 21:17:15 UTC 
> (rev 7656)
> +++ trunk/amsn-extras/plugins/gnotify/gnotify.tcl     2006-12-14 06:39:46 UTC 
> (rev 7657)
> @@ -7,6 +7,8 @@
>  ###################################################################
>  
> 
> +# For more information on the format and protocol read this article :
> +# http://www.amsn-project.net/wiki/index.php/Gmail
>  namespace eval ::gnotify {
>       variable config
>       variable configlist
> @@ -404,13 +406,14 @@
>                                               puts "$att "
>                                       }
>                               }
> -                     #       if {[llength $mail(tags)] > 0 } {
> -                     #               puts -nonewline "tags : "
> -                     #               foreach tag $mail(tags) {
> -                     #                       puts -nonewline "$tag, "
> -                     #               }
> -                     #       }
> +                             if {[llength $mail(tags)] > 0 } {
> +                                     puts -nonewline "tags : "
> +                                     foreach tag $mail(tags) {
> +                                             puts -nonewline "$tag, "
> +                                     }
> +                             }
>                               puts ""
> +                             #puts "Timestamp : $mail(timestamp)"
>                       }
>               }
>       }
> @@ -634,28 +637,37 @@
>  
>               set start $data(offset)
>               set end [expr {$start + $size}]
> -             set info(author) [list email "" nick ""]
> +             set info(author) [list errors 0 email "" nick ""]
> +             set info(new) 0
> +             set info(initiator) 0
>               set info(errors) 0
>  
>               while {$data(offset) < $end } {
>                       set key [ReadKey data]
>                       switch -- $key {
>                               10 {
> +                                     # 0x0A Author info
>                                       set size [ReadSize data]
>                                       set offset $data(offset)
>                                       set info(author) [GetMailAuthor2 data 
> $size]
>                                       set data(offset) [expr {$offset + 
> $size}]       
>                               }
> -                             16 {
> -                                     # unknown
> -                                     GetMultiByte $var
> +                             16 {    
> +                                     # 0x10 Has unread mail
> +                                     # This key specifies whether an email 
> of this author in the thread is unread
> +                                     if { [GetMultiByte $var] == 1} {
> +                                             set info(new) 1
> +                                     } 
>                               }
>                               24 {
> -                                     # unknown
> -                                     GetMultiByte $var
> +                                     # 0x18 Thread Initiator
> +                                     # This key specifies whether this user 
> is the one who started the thread
> +                                     if { [GetMultiByte $var] == 1} {
> +                                             set info(initiator) 1
> +                                     } 
>                               } 
>                               default {
> -                                     puts "Unknown author key : $key"
> +                                     puts "Unknown author ($info(author)) 
> key : $key"
>                                       incr info(errors)
>                               }
>                       }
> @@ -678,11 +690,13 @@
>                       set key [ReadKey data]
>                       switch -- $key {
>                               10 {
> +                                     # 0x0A Email
>                                       set size [ReadSize data]
>                                       set email [DecodeString [GetBytes data 
> $size]]
>                                       set info(email) $email
>                               }
>                               18 {
> +                                     # 0x12 Name
>                                       set size [ReadSize data]
>                                       set nick [DecodeString [GetBytes data 
> $size]]
>                                       set info(nick) $nick
> @@ -702,9 +716,9 @@
>  
>               set start $data(offset)
>               set end [expr {$start + $size}]
> -             set timestamp_size [GetMultiByte $var]
>  
> -             set info(timestamp) [GetBytes data $timestamp_size]
> +             set info(timestamp) ""
> +             set info(timestamp2) ""
>               set info(attachments) [list]
>               set info(tags) [list]
>               set info(authors) [list]
> @@ -713,41 +727,59 @@
>               set info(threads) 1
>               set info(errors) 0
>  
> +
> +
>               while {$data(offset) < $end } {
>                       set key [ReadKey data]
>                       switch -- $key {
> +                             16 {
> +                                     # 0x10 unknown / timestamp
> +                                     #puts "Unknown mail key 16 has value : 
> [GetMultiByte $var]"
> +                                     set info(timestamp)  [GetMultiByte $var]
> +                             } 
> +                             24 {
> +                                     # 0x18 unknown / timestamp
> +                                     #puts "Unknown mail key 24 has value : 
> [GetMultiByte $var]"
> +                                     set info(timestamp2)  [GetMultiByte 
> $var]
> +                             }
>                               130 {
> +                                     # 0x82 Tag
>                                       set size [ReadSize data]
>                                       set tag [GetBytes data $size]
>                                       lappend info(tags) $tag
>                               }
>                               146 {
> -                                     # from
> +                                     # 0x92 from
>                                       set size [ReadSize data]
>                                       set offset $data(offset)
>                                       lappend info(authors) [GetMailAuthor 
> data $size]
>                                       set data(offset) [expr {$offset + 
> $size}]
>                               }
>                               152 {
> -                                     # unknown
> +                                     # 0x98 unknown
> +                                     #puts "Unknown mail key 152 has value : 
> [GetMultiByte $var]"
>                                       GetMultiByte $var
>                               }
>                               162 {
> +                                     # 0xA2 Subject
>                                       set size [ReadSize data]
>                                       set subject [DecodeString [GetBytes 
> data $size]]
>                                       set info(subject) $subject
>                               }
>                               170 {
> +                                     # 0xAA Body preview
>                                       set size [ReadSize data]
>                                       set body [DecodeString [GetBytes data 
> $size]]
>                                       set info(body) $body
>                               }
>                               178 {
> +                                     # 0xB2 Attachment
>                                       set size [ReadSize data]
>                                       set attachment [DecodeString [GetBytes 
> data $size]]
>                                       lappend info(attachments) $attachment
>                               }
>                               184 {
> +                                     # 0xB8 Number of threads
>                                       set info(threads) [GetMultiByte data]
>                               }
>                               default {
> @@ -760,6 +792,8 @@
>  
>       }
>  
> +     # For more information on the format and protocol read this article :
> +     # http://www.amsn-project.net/wiki/index.php/Gmail
>       proc parseGData { data_bin } {
>               set data(bin) $data_bin
>               set data(len) [string length $data_bin]
> @@ -774,12 +808,14 @@
>                       set key [ReadKey data]
>                       switch -- $key {
>                               10 {
> +                                     # 0x0A New mail Key
>                                       set size [ReadSize data]
>                                       set offset $data(offset)
>                                       lappend info(mails) [GetNewMail data 
> $size]
>                                       set data(offset) [expr {$offset + 
> $size}]
>                               }
>                               136 {
> +                                     # 0x88 Number of mails Key
>                                       set info(nb_mails) [GetMultiByte data]
>                               }
>                               default {
> 
> 
> This was sent by the SourceForge.net collaborative development platform, the 
> world's largest Open Source development site.
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Amsn-commits mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/amsn-commits
> 
> ----- End forwarded message -----
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Amsn-devel mailing list
> Amsn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amsn-devel


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Amsn-devel mailing list
Amsn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amsn-devel

Reply via email to