googletastic 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/README.textile +47 -0
  2. data/Rakefile +103 -0
  3. data/lib/googletastic/access_rule.rb +45 -0
  4. data/lib/googletastic/album.rb +22 -0
  5. data/lib/googletastic/app_engine.rb +103 -0
  6. data/lib/googletastic/attendee.rb +7 -0
  7. data/lib/googletastic/base.rb +46 -0
  8. data/lib/googletastic/calendar.rb +60 -0
  9. data/lib/googletastic/comment.rb +3 -0
  10. data/lib/googletastic/document.rb +219 -0
  11. data/lib/googletastic/event.rb +149 -0
  12. data/lib/googletastic/ext/file.rb +219 -0
  13. data/lib/googletastic/ext/pretty_print.xsl +47 -0
  14. data/lib/googletastic/ext/xml.rb +10 -0
  15. data/lib/googletastic/ext.rb +1 -0
  16. data/lib/googletastic/form.rb +131 -0
  17. data/lib/googletastic/group.rb +44 -0
  18. data/lib/googletastic/helpers/document.rb +70 -0
  19. data/lib/googletastic/helpers/event.rb +26 -0
  20. data/lib/googletastic/helpers/form.rb +102 -0
  21. data/lib/googletastic/helpers.rb +18 -0
  22. data/lib/googletastic/image.rb +121 -0
  23. data/lib/googletastic/mixins/actions.rb +113 -0
  24. data/lib/googletastic/mixins/attributes.rb +27 -0
  25. data/lib/googletastic/mixins/finders.rb +78 -0
  26. data/lib/googletastic/mixins/namespaces.rb +42 -0
  27. data/lib/googletastic/mixins/parsing.rb +68 -0
  28. data/lib/googletastic/mixins/requesting.rb +84 -0
  29. data/lib/googletastic/mixins.rb +5 -0
  30. data/lib/googletastic/person.rb +41 -0
  31. data/lib/googletastic/spreadsheet.rb +35 -0
  32. data/lib/googletastic/sync/document.rb +120 -0
  33. data/lib/googletastic/sync/form.rb +106 -0
  34. data/lib/googletastic/sync.rb +46 -0
  35. data/lib/googletastic/thumbnail.rb +7 -0
  36. data/lib/googletastic/youtube.rb +25 -0
  37. data/lib/googletastic.rb +115 -0
  38. data/spec/benchmarks/document_benchmark.rb +40 -0
  39. data/spec/config.yml +6 -0
  40. data/spec/fixtures/data/Doing business in the eMarketPlace.doc +0 -0
  41. data/spec/fixtures/data/basic.txt +1 -0
  42. data/spec/fixtures/data/calendar.list.xml +64 -0
  43. data/spec/fixtures/data/doc_as_html.html +3097 -0
  44. data/spec/fixtures/data/doc_as_html_html.html +0 -0
  45. data/spec/fixtures/data/doclist.xml +76 -0
  46. data/spec/fixtures/data/document.single.xml +30 -0
  47. data/spec/fixtures/data/end.xml +446 -0
  48. data/spec/fixtures/data/event.list.xml +62 -0
  49. data/spec/fixtures/data/form.html +66 -0
  50. data/spec/fixtures/data/group.list.xml +58 -0
  51. data/spec/fixtures/data/person.list.xml +53 -0
  52. data/spec/fixtures/data/photo.list.xml +111 -0
  53. data/spec/fixtures/data/sample_upload.mp4 +0 -0
  54. data/spec/fixtures/data/spreadsheet.list.xml +43 -0
  55. data/spec/fixtures/models/document.rb +7 -0
  56. data/spec/fixtures/models/event.rb +3 -0
  57. data/spec/fixtures/models/form.rb +6 -0
  58. data/spec/fixtures/models/test_model.rb +3 -0
  59. data/spec/fixtures/results/test.txt +185 -0
  60. data/spec/googletastic/access_rule_spec.rb +13 -0
  61. data/spec/googletastic/album_spec.rb +9 -0
  62. data/spec/googletastic/app_engine_spec.rb +12 -0
  63. data/spec/googletastic/base_spec.rb +49 -0
  64. data/spec/googletastic/calendar_spec.rb +11 -0
  65. data/spec/googletastic/document_spec.rb +163 -0
  66. data/spec/googletastic/event_spec.rb +34 -0
  67. data/spec/googletastic/form_spec.rb +43 -0
  68. data/spec/googletastic/group_spec.rb +9 -0
  69. data/spec/googletastic/image_spec.rb +9 -0
  70. data/spec/googletastic/person_spec.rb +9 -0
  71. data/spec/googletastic/post_spec.rb +46 -0
  72. data/spec/googletastic/spreadsheet_spec.rb +9 -0
  73. data/spec/googletastic/youtube_spec.rb +58 -0
  74. data/spec/spec.opts +1 -0
  75. data/spec/spec_helper.rb +25 -0
  76. metadata +187 -0
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><link rel="shortcut icon" href="http://www.google.com/images/spreadsheets/forms/favicon.ico" type="image/x-icon">
2
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
3
+ <title>Untitled form</title>
4
+ <link href='//spreadsheets.google.com/client/css/3386678453-published_form_compiled.css' type='text/css' rel='stylesheet'><link href='//spreadsheets.google.com/client/css/3386678453-published_form_compiled.css' type='text/css' rel='stylesheet'>
5
+ </head>
6
+ <body class="ss-base-body" dir="ltr"><div class="ss-form-container">
7
+ <div class="ss-form-heading"><h1 class="ss-form-title">Untitled form</h1>
8
+ <p></p>
9
+
10
+
11
+ <hr class="ss-email-break" style="display:none;">
12
+ <div class="ss-required-asterisk">* Required</div></div>
13
+ <div class="ss-form"><form action="http://spreadsheets.google.com/formResponse?formkey=dEpxUnV3VWp6a0lkbXFZcFAzaHBtN3c6MA&amp;ifq" method="POST" id="ss-form">
14
+
15
+ <br>
16
+ <div class="errorbox-good">
17
+ <div class="ss-item ss-item-required ss-text"><div class="ss-form-entry"><label class="ss-q-title" for="entry_0">Sample Question
18
+ <span class="ss-required-asterisk">*</span></label>
19
+ <label class="ss-q-help" for="entry_0">What does this saY?</label>
20
+ <input type="text" name="entry.0.single" value="" class="ss-q-short" id="entry_0"></div></div></div>
21
+ <br> <div class="errorbox-good">
22
+ <div class="ss-item ss-text"><div class="ss-form-entry"><label class="ss-q-title" for="entry_1">Sample Question 2
23
+ </label>
24
+ <label class="ss-q-help" for="entry_1"></label>
25
+ <input type="text" name="entry.1.single" value="" class="ss-q-short" id="entry_1"></div></div></div>
26
+ <br> <div class="errorbox-good">
27
+ <div class="ss-item ss-item-required ss-text"><div class="ss-form-entry"><label class="ss-q-title" for="entry_2">Multi Man
28
+ <span class="ss-required-asterisk">*</span></label>
29
+ <label class="ss-q-help" for="entry_2">how many choices do you have?</label>
30
+ <input type="text" name="entry.2.single" value="" class="ss-q-short" id="entry_2"></div></div></div>
31
+ <br>
32
+ <input type="hidden" name="pageNumber" value="0">
33
+ <input type="hidden" name="backupCache" value="">
34
+ <div class="ss-item ss-navigate"><div class="ss-form-entry">
35
+ <input type="submit" name="submit" value="Submit"></div></div></form>
36
+ <script type="text/javascript">
37
+
38
+ (function() {
39
+ var error = false;
40
+ var divs = document.getElementById('ss-form').
41
+ getElementsByTagName('div');
42
+ for (var j in divs) {
43
+ if (divs[j].className == 'errorbox-bad') {
44
+ error = true;
45
+ divs[j].lastChild.firstChild.lastChild.focus();
46
+ break;
47
+ }
48
+ }
49
+ if (!error) {
50
+ for (var i in divs) {
51
+ if (divs[i].className == 'ss-form-entry' && divs[i].
52
+ firstChild.className == 'ss-q-title') {
53
+ divs[i].lastChild.focus();
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ })();
59
+ </script></div>
60
+ <div class="ss-footer"><div class="ss-attribution"></div>
61
+ <div class="ss-legal"><span class="ss-powered-by">Powered by <a href="http://docs.google.com">Google Docs</a></span>
62
+ <span class="ss-terms"><small><a href="http://spreadsheets.google.com/reportabuse?hl=en&amp;formkey=dEpxUnV3VWp6a0lkbXFZcFAzaHBtN3c6MA&amp;source=http%253A%252F%252Fspreadsheets.google.com%252Fviewform%253Fhl%253Den%2526formkey%253DdEpxUnV3VWp6a0lkbXFZcFAzaHBtN3c6MA">Report Abuse</a>
63
+ -
64
+ <a href="http://www.google.com/accounts/TOS">Terms of Service</a>
65
+ -
66
+ <a href="http://www.google.com/google-d-s/terms.html">Additional Terms</a></small></span></div></div></div></body></html>
@@ -0,0 +1,58 @@
1
+ <feed xmlns='http://www.w3.org/2005/Atom'
2
+ xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/'
3
+ xmlns:gContact='http://schemas.google.com/contact/2008'
4
+ xmlns:batch='http://schemas.google.com/gdata/batch'
5
+ xmlns:gd='http://schemas.google.com/g/2005'
6
+ gd:etag='W/"D08MQnc-fSp7ImA9WxRbGU0."'>
7
+ <id>jo@gmail.com</id>
8
+ <updated>2008-12-10T10:44:43.955Z</updated>
9
+ <category scheme='http://schemas.google.com/g/2005#kind'
10
+ term='http://schemas.google.com/contact/2008#group' />
11
+ <title>Jo March's Contact Groups</title>
12
+ <link rel='alternate' type='text/html'
13
+ href='http://www.google.com/' />
14
+ <link rel='http://schemas.google.com/g/2005#feed'
15
+ type='application/atom+xml'
16
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin' />
17
+ <link rel='http://schemas.google.com/g/2005#post'
18
+ type='application/atom+xml'
19
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin' />
20
+ <link rel='http://schemas.google.com/g/2005#batch'
21
+ type='application/atom+xml'
22
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin/batch' />
23
+ <link rel='self'
24
+ type='application/atom+xml'
25
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin?max-results=25' />
26
+ <author>
27
+ <name>Jo March</name>
28
+ <email>jo@gmail.com</email>
29
+ </author>
30
+ <generator version='1.0'
31
+ uri='http://www.google.com/m8/feeds'>Contacts</generator>
32
+ <openSearch:totalResults>2</openSearch:totalResults>
33
+ <openSearch:startIndex>1</openSearch:startIndex>
34
+ <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
35
+ <entry gd:etag='"YDwqeyI."'>
36
+ <id>http://www.google.com/m8/feeds/groups/jo%40gmail.com/base/6</id>
37
+ <updated>1970-01-01T00:00:00.000Z</updated>
38
+ <category scheme='http://schemas.google.com/g/2005#kind'
39
+ term='http://schemas.google.com/contact/2008#group' />
40
+ <title>System Group: My Contacts</title>
41
+ <content>System Group: My Contacts</content>
42
+ <link rel='self' type='application/atom+xml'
43
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin/6' />
44
+ <gContact:systemGroup id='Contacts' />
45
+ </entry>
46
+ <entry gd:etag='"Rn05fDVSLyp7ImA9WxRbGEUORQM."'>
47
+ <id>http://www.google.com/m8/feeds/groups/jo%40gmail.com/base/68f415478ba1aa69</id>
48
+ <updated>2008-12-10T04:44:37.324Z</updated>
49
+ <category scheme='http://schemas.google.com/g/2005#kind'
50
+ term='http://schemas.google.com/contact/2008#group' />
51
+ <title>joggers</title>
52
+ <content>joggers</content>
53
+ <link rel='self' type='application/atom+xml'
54
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin/68f415478ba1aa69' />
55
+ <link rel='edit' type='application/atom+xml'
56
+ href='http://www.google.com/m8/feeds/groups/jo%40gmail.com/thin/68f415478ba1aa69' />
57
+ </entry>
58
+ </feed>
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:gContact="http://schemas.google.com/contact/2008" xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CEAAQHw5eyp7ImA9WxBaEk4.&quot;">
3
+ <id>flexinstyle@gmail.com</id>
4
+ <updated>2010-03-22T04:39:01.223Z</updated>
5
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
6
+ <title>Lance Pollard's Test Contacts</title>
7
+ <link rel="alternate" type="text/html" href="http://www.google.com/"/>
8
+ <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full"/>
9
+ <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full"/>
10
+ <link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/batch"/>
11
+ <link rel="self" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full?max-results=25"/>
12
+ <author>
13
+ <name>Lance Pollard</name>
14
+ <email>flexinstyle@gmail.com</email>
15
+ </author>
16
+ <generator version="1.0" uri="http://www.google.com/m8/feeds">Contacts</generator>
17
+ <openSearch:totalResults>3</openSearch:totalResults>
18
+ <openSearch:startIndex>1</openSearch:startIndex>
19
+ <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
20
+ <entry gd:etag="&quot;SHs6eDVSLyp7ImA9WxBVGUoDTgQ.&quot;">
21
+ <id>http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/base/51c06e3b0c56ebf7</id>
22
+ <updated>2010-02-24T02:51:49.510Z</updated>
23
+ <app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-24T02:51:49.510Z</app:edited>
24
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
25
+ <title/>
26
+ <link rel="http://schemas.google.com/contacts/2008/rel#photo" type="image/*" href="http://www.google.com/m8/feeds/photos/media/flexinstyle%40gmail.com/51c06e3b0c56ebf7"/>
27
+ <link rel="self" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/51c06e3b0c56ebf7"/>
28
+ <link rel="edit" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/51c06e3b0c56ebf7"/>
29
+ <gd:email rel="http://schemas.google.com/g/2005#other" address="d4tocchini@gmail.com"/>
30
+ </entry>
31
+ <entry gd:etag="&quot;SHw-eTVSLyp7ImA9WxBVGUoDTgQ.&quot;">
32
+ <id>http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/base/53fb73460af52c82</id>
33
+ <updated>2010-02-24T02:51:49.251Z</updated>
34
+ <app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-24T02:51:49.251Z</app:edited>
35
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
36
+ <title/>
37
+ <link rel="http://schemas.google.com/contacts/2008/rel#photo" type="image/*" href="http://www.google.com/m8/feeds/photos/media/flexinstyle%40gmail.com/53fb73460af52c82"/>
38
+ <link rel="self" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/53fb73460af52c82"/>
39
+ <link rel="edit" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/53fb73460af52c82"/>
40
+ <gd:email rel="http://schemas.google.com/g/2005#other" address="flexinstyle@gmail.com"/>
41
+ </entry>
42
+ <entry gd:etag="&quot;SH86cTVSLyp7ImA9WxBbGE4CQQE.&quot;">
43
+ <id>http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/base/69739fa38ee7af28</id>
44
+ <updated>2010-03-17T15:10:59.119Z</updated>
45
+ <app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-17T15:10:59.119Z</app:edited>
46
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
47
+ <title/>
48
+ <link rel="http://schemas.google.com/contacts/2008/rel#photo" type="image/*" href="http://www.google.com/m8/feeds/photos/media/flexinstyle%40gmail.com/69739fa38ee7af28"/>
49
+ <link rel="self" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/69739fa38ee7af28"/>
50
+ <link rel="edit" type="application/atom+xml" href="http://www.google.com/m8/feeds/contacts/flexinstyle%40gmail.com/full/69739fa38ee7af28"/>
51
+ <gd:email rel="http://schemas.google.com/g/2005#other" address="lancejpollard@gmail.com"/>
52
+ </entry>
53
+ </feed>
@@ -0,0 +1,111 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:exif="http://schemas.google.com/photos/exif/2007" xmlns:gphoto="http://schemas.google.com/photos/2007" xmlns:media="http://search.yahoo.com/mrss/" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">
3
+ <id>http://picasaweb.google.com/data/feed/api/user/flexinstyle%40gmail.com</id>
4
+ <updated>2010-03-22T01:45:40.478Z</updated>
5
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#user"/>
6
+ <title type="text">101044648073161376708</title>
7
+ <subtitle type="text"/>
8
+ <icon>http://lh5.ggpht.com/_neAii51f7Tc/AAAAwdjhV2w/AAAAAAAAAAA/WWWEBCl_77o/s64-c/101044648073161376708.jpg</icon>
9
+ <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://picasaweb.google.com/data/feed/api/user/101044648073161376708?authkey=Tovg6dK38ho"/>
10
+ <link rel="alternate" type="text/html" href="http://picasaweb.google.com/101044648073161376708"/>
11
+ <link rel="http://schemas.google.com/photos/2007#slideshow" type="application/x-shockwave-flash" href="http://picasaweb.google.com/s/c/bin/slideshow.swf?host=picasaweb.google.com&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F101044648073161376708%3Fauthkey%3DTovg6dK38ho%26alt%3Drss"/>
12
+ <link rel="self" type="application/atom+xml" href="http://picasaweb.google.com/data/feed/api/user/101044648073161376708?q=&amp;start-index=1&amp;max-results=100&amp;kind=photo&amp;access=all"/>
13
+ <author>
14
+ <name>101044648073161376708</name>
15
+ <uri>http://picasaweb.google.com/101044648073161376708</uri>
16
+ </author>
17
+ <generator version="1.00" uri="http://picasaweb.google.com/">Picasaweb</generator>
18
+ <openSearch:totalResults>2</openSearch:totalResults>
19
+ <openSearch:startIndex>1</openSearch:startIndex>
20
+ <openSearch:itemsPerPage>100</openSearch:itemsPerPage>
21
+ <gphoto:user>101044648073161376708</gphoto:user>
22
+ <gphoto:nickname>101044648073161376708</gphoto:nickname>
23
+ <gphoto:thumbnail>http://lh5.ggpht.com/_neAii51f7Tc/AAAAwdjhV2w/AAAAAAAAAAA/WWWEBCl_77o/s64-c/101044648073161376708.jpg</gphoto:thumbnail>
24
+ <gphoto:quotalimit>1073741824</gphoto:quotalimit>
25
+ <gphoto:quotacurrent>235168</gphoto:quotacurrent>
26
+ <gphoto:maxPhotosPerAlbum>1000</gphoto:maxPhotosPerAlbum>
27
+ <entry>
28
+ <id>http://picasaweb.google.com/data/entry/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451268445618438354</id>
29
+ <published>2010-03-22T01:45:40.000Z</published>
30
+ <updated>2010-03-22T01:45:40.478Z</updated>
31
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#photo"/>
32
+ <title type="text">tb_waterfall_wallpaper_kangsi.jpg</title>
33
+ <summary type="text"/>
34
+ <content type="image/jpeg" src="http://lh5.ggpht.com/_neAii51f7Tc/S6bLxOxiANI/AAAAAAAAABc/W_d23V8h0XQ/tb_waterfall_wallpaper_kangsi.jpg"/>
35
+ <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://picasaweb.google.com/data/feed/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451268445618438354"/>
36
+ <link rel="alternate" type="text/html" href="http://picasaweb.google.com/101044648073161376708/SOMETHINGUPLOADABLE#5451268445618438354"/>
37
+ <link rel="http://schemas.google.com/photos/2007#canonical" type="text/html" href="http://picasaweb.google.com/lh/photo/i49ZePsJCroM9Ylmb4uEGA"/>
38
+ <link rel="self" type="application/atom+xml" href="http://picasaweb.google.com/data/entry/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451268445618438354"/>
39
+ <link rel="edit" type="application/atom+xml" href="http://picasaweb.google.com/data/entry/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451268445618438354/1"/>
40
+ <link rel="edit-media" type="image/jpeg" href="http://picasaweb.google.com/data/media/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451268445618438354/1"/>
41
+ <link rel="media-edit" type="image/jpeg" href="http://picasaweb.google.com/data/media/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451268445618438354/1"/>
42
+ <link rel="http://schemas.google.com/photos/2007#report" type="text/html" href="http://picasaweb.google.com/lh/reportAbuse?uname=101044648073161376708&amp;aid=5451259229241282913&amp;iid=5451268445618438354"/>
43
+ <gphoto:id>5451268445618438354</gphoto:id>
44
+ <gphoto:version>1</gphoto:version>
45
+ <gphoto:albumid>5451259229241282913</gphoto:albumid>
46
+ <gphoto:access>public</gphoto:access>
47
+ <gphoto:width>1152</gphoto:width>
48
+ <gphoto:height>864</gphoto:height>
49
+ <gphoto:size>222272</gphoto:size>
50
+ <gphoto:timestamp>1269222340000</gphoto:timestamp>
51
+ <gphoto:imageVersion>23</gphoto:imageVersion>
52
+ <gphoto:commentingEnabled>true</gphoto:commentingEnabled>
53
+ <gphoto:commentCount>0</gphoto:commentCount>
54
+ <gphoto:license id="0" name="All Rights Reserved" url="">ALL_RIGHTS_RESERVED</gphoto:license>
55
+ <exif:tags>
56
+ <exif:time>1269222340000</exif:time>
57
+ <exif:imageUniqueID>190a18d145d1241227547605ed4fa994</exif:imageUniqueID>
58
+ </exif:tags>
59
+ <media:group>
60
+ <media:content url="http://lh5.ggpht.com/_neAii51f7Tc/S6bLxOxiANI/AAAAAAAAABc/W_d23V8h0XQ/tb_waterfall_wallpaper_kangsi.jpg" height="864" width="1152" type="image/jpeg" medium="image"/>
61
+ <media:credit>101044648073161376708</media:credit>
62
+ <media:description type="plain"/>
63
+ <media:thumbnail url="http://lh5.ggpht.com/_neAii51f7Tc/S6bLxOxiANI/AAAAAAAAABc/W_d23V8h0XQ/s72/tb_waterfall_wallpaper_kangsi.jpg" height="54" width="72"/>
64
+ <media:thumbnail url="http://lh5.ggpht.com/_neAii51f7Tc/S6bLxOxiANI/AAAAAAAAABc/W_d23V8h0XQ/s144/tb_waterfall_wallpaper_kangsi.jpg" height="108" width="144"/>
65
+ <media:thumbnail url="http://lh5.ggpht.com/_neAii51f7Tc/S6bLxOxiANI/AAAAAAAAABc/W_d23V8h0XQ/s288/tb_waterfall_wallpaper_kangsi.jpg" height="216" width="288"/>
66
+ <media:title type="plain">tb_waterfall_wallpaper_kangsi.jpg</media:title>
67
+ </media:group>
68
+ </entry>
69
+ <entry>
70
+ <id>http://picasaweb.google.com/data/entry/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451259278243902690</id>
71
+ <published>2010-03-22T01:10:06.000Z</published>
72
+ <updated>2010-03-22T01:10:06.297Z</updated>
73
+ <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#photo"/>
74
+ <title type="text">633752769008239330.jpg</title>
75
+ <summary type="text"/>
76
+ <content type="image/jpeg" src="http://lh4.ggpht.com/_neAii51f7Tc/S6bDbnpHtOI/AAAAAAAAABM/udvwWa9V5FE/633752769008239330.jpg"/>
77
+ <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://picasaweb.google.com/data/feed/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451259278243902690"/>
78
+ <link rel="alternate" type="text/html" href="http://picasaweb.google.com/101044648073161376708/SOMETHINGUPLOADABLE#5451259278243902690"/>
79
+ <link rel="http://schemas.google.com/photos/2007#canonical" type="text/html" href="http://picasaweb.google.com/lh/photo/f7BTgl8oYEf5slW4zsKzTw"/>
80
+ <link rel="self" type="application/atom+xml" href="http://picasaweb.google.com/data/entry/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451259278243902690"/>
81
+ <link rel="edit" type="application/atom+xml" href="http://picasaweb.google.com/data/entry/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451259278243902690/1"/>
82
+ <link rel="edit-media" type="image/jpeg" href="http://picasaweb.google.com/data/media/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451259278243902690/1"/>
83
+ <link rel="media-edit" type="image/jpeg" href="http://picasaweb.google.com/data/media/api/user/101044648073161376708/albumid/5451259229241282913/photoid/5451259278243902690/1"/>
84
+ <link rel="http://schemas.google.com/photos/2007#report" type="text/html" href="http://picasaweb.google.com/lh/reportAbuse?uname=101044648073161376708&amp;aid=5451259229241282913&amp;iid=5451259278243902690"/>
85
+ <gphoto:id>5451259278243902690</gphoto:id>
86
+ <gphoto:version>1</gphoto:version>
87
+ <gphoto:albumid>5451259229241282913</gphoto:albumid>
88
+ <gphoto:access>public</gphoto:access>
89
+ <gphoto:width>300</gphoto:width>
90
+ <gphoto:height>199</gphoto:height>
91
+ <gphoto:size>12896</gphoto:size>
92
+ <gphoto:timestamp>1269220206000</gphoto:timestamp>
93
+ <gphoto:imageVersion>19</gphoto:imageVersion>
94
+ <gphoto:commentingEnabled>true</gphoto:commentingEnabled>
95
+ <gphoto:commentCount>0</gphoto:commentCount>
96
+ <gphoto:license id="0" name="All Rights Reserved" url="">ALL_RIGHTS_RESERVED</gphoto:license>
97
+ <exif:tags>
98
+ <exif:time>1269220206000</exif:time>
99
+ <exif:imageUniqueID>a828c83313d19eca5772a0e7b7f8b283</exif:imageUniqueID>
100
+ </exif:tags>
101
+ <media:group>
102
+ <media:content url="http://lh4.ggpht.com/_neAii51f7Tc/S6bDbnpHtOI/AAAAAAAAABM/udvwWa9V5FE/633752769008239330.jpg" height="199" width="300" type="image/jpeg" medium="image"/>
103
+ <media:credit>101044648073161376708</media:credit>
104
+ <media:description type="plain"/>
105
+ <media:thumbnail url="http://lh4.ggpht.com/_neAii51f7Tc/S6bDbnpHtOI/AAAAAAAAABM/udvwWa9V5FE/s72/633752769008239330.jpg" height="48" width="72"/>
106
+ <media:thumbnail url="http://lh4.ggpht.com/_neAii51f7Tc/S6bDbnpHtOI/AAAAAAAAABM/udvwWa9V5FE/s144/633752769008239330.jpg" height="96" width="144"/>
107
+ <media:thumbnail url="http://lh4.ggpht.com/_neAii51f7Tc/S6bDbnpHtOI/AAAAAAAAABM/udvwWa9V5FE/s288/633752769008239330.jpg" height="192" width="288"/>
108
+ <media:title type="plain">633752769008239330.jpg</media:title>
109
+ </media:group>
110
+ </entry>
111
+ </feed>
@@ -0,0 +1,43 @@
1
+ <feed xmlns="http://www.w3.org/2005/Atom"
2
+ xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
3
+ xmlns:gs="http://schemas.google.com/spreadsheets/2006"
4
+ xmlns:gd="http://schemas.google.com/g/2005"
5
+ gd:etag='W/"D0cERnk-eip7ImA9WBBXGEg."'>
6
+ <id>http://spreadsheets.google.com/feeds/worksheets/key/private/full</id>
7
+ <updated>2006-11-17T18:23:45.173Z</updated>
8
+ <title type="text">Groceries R Us</title>
9
+ <link rel="alternate" type="text/html"
10
+ href="http://spreadsheets.google.com/ccc?key=key"/>
11
+ <link rel="http://schemas.google.com/g/2005#feed"
12
+ type="application/atom+xml"
13
+ href="http://spreadsheets.google.com/feeds/worksheets/key/private/full"/>
14
+ <link rel="self" type="application/atom+xml"
15
+ href="http://spreadsheets.google.com/feeds/worksheets/key/private/full"/>
16
+ <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
17
+ href="http://spreadsheets.google.com/feeds/worksheets/key/private/full"/>
18
+ <author>
19
+ <name>Fitzwilliam Darcy</name>
20
+ <email>fitz@gmail.com</email>
21
+ </author>
22
+ <openSearch:totalResults>1</openSearch:totalResults>
23
+ <openSearch:startIndex>1</openSearch:startIndex>
24
+ <openSearch:itemsPerPage>1</openSearch:itemsPerPage>
25
+ <entry gd:etag='"YDwqeyI."'>
26
+ <id>http://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId</id>
27
+ <updated>2006-11-17T18:23:45.173Z</updated>
28
+ <title type="text">Sheet1</title>
29
+ <content type="text">Sheet1</content>
30
+ <link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
31
+ type="application/atom+xml"
32
+ href="http://spreadsheets.google.com/feeds/list/key/worksheetId/private/full"/>
33
+ <link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
34
+ type="application/atom+xml"
35
+ href="http://spreadsheets.google.com/feeds/cells/key/worksheetId/private/full"/>
36
+ <link rel="self" type="application/atom+xml"
37
+ href="http://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId"/>
38
+ <link rel="edit" type="application/atom+xml"
39
+ href="http://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId/version"/>
40
+ <gs:rowCount>100</gs:rowCount>
41
+ <gs:colCount>20</gs:colCount>
42
+ </entry>
43
+ </feed>
@@ -0,0 +1,7 @@
1
+ class Document < Googletastic::TestModel
2
+ googletastic :document,
3
+ :as => :google_doc,
4
+ :sync => :title
5
+ # googletastic :doc_list
6
+ attr_accessor :something
7
+ end
@@ -0,0 +1,3 @@
1
+ class Event < Googletastic::TestModel
2
+ googletastic :event, :foreign_key => :g_event
3
+ end
@@ -0,0 +1,6 @@
1
+ class Form < Googletastic::TestModel
2
+ googletastic :form,
3
+ :as => :google_form,
4
+ :sync => :title,
5
+ :redirect_to => "/forms/:id"
6
+ end
@@ -0,0 +1,3 @@
1
+ class Googletastic::TestModel < Hash
2
+
3
+ end
@@ -0,0 +1,185 @@
1
+ In the Spirit of Agileness...
2
+ The Evolving Requirements List of My Company
3
+ This is going to be a copy-paste of my notes on what needs to happen to make My Company a success. It will be sloppy, it will be raw, it will be repetitive, but it will be there. As we work on the different parts of the system, new things unfold. We find tiny things that differ between browser, edge cases that weren't immediately apparent but that take 2 weeks to work through, and better ways of doing things to outdo the competition.
4
+
5
+
6
+ Date: 3/28/10
7
+ - Integrate OAuth from the Google API so any user registered with My Company can access forms and documents via the website.
8
+ - CAREFUL - if you check any of the boxes at the top when creating a form, an error will be thrown on the website, because of authentication (why we need OAuth).
9
+ - Integrated another Auth mechanism :). Done with that.
10
+ - Liquid Templates. Now we need to define variables you guys would like to use in your documents.
11
+ - Then we need to build an optimized renderer that can cache the rendered templates as files. This greatly reduces the load time of the website, as the documents are already processed into their final form. Working on this now.
12
+ Date: 3/25/10
13
+ - Better "Authorization Failure" page when you try to login into a restricted place and don't have access.
14
+ - Configurable redirect path when you logout (what screen does it take you to).
15
+ Date: 3/23/10
16
+ - Updated admin event system so tickets, attendees, and forms are on sub tabs so we can use them without javascript so IE doesn't cry.
17
+ - Integrated google forms and google docs into admin panel.
18
+
19
+ Tomorrow (in a few hours):
20
+ - Redefine registration process so it can work without javascript
21
+ - Setup Test payments with My Companys Merchant account on Paypal Pro
22
+ - Build Checking view
23
+
24
+ later:
25
+ - optimize xml data transfer between google apis so we only get what we need, b/c right now it requires a lot of processing which might slow the website down.
26
+ - build micro app/api to ping google to see what content has changed, so we can cache the rendered documents locally.
27
+ - Liquid templating language so we can define basic variables in documents (like names and dates), so we don't have to have multiple versions of the document with minor changes.
28
+
29
+ Date: 3/22/10
30
+ Paypal Recurrent Billing Guide.
31
+ Paypal Website Payments Pro Costs
32
+ Paypal Pro vs. Standard
33
+ Date: 3/21/10
34
+ - Store images on Picasa for free, up to 1GB. Not important to have the raw image file directly SEO'd. Will help dramatically speed up site load time since google is hosting larger assets (can host videos too).
35
+ - Building workflow engine. "WorkItem" defines a set of sequential states, each state which can have multiple tasks executed. The first WorkItem being modeled is the post-registration workflow:
36
+ - Payment Received for Registration, marked as correct. Starts workflow, creates "task list" on admin panel, or adds to list:
37
+ - My CompanyBot - Send confirmation and thank you email
38
+
39
+ - Send email to admin saying they need to schedule a conference call, with conference call details
40
+
41
+ - "Conference Call Task" is assigned to someone in My Company
42
+
43
+ - Once conference call is marked as complete, next item executes: Send forms? wait two business days...
44
+
45
+ - (the specifics can be fleshed out once we get the basics going).
46
+
47
+
48
+ TODO for the meeting on Thursday:
49
+
50
+ - Update My Company Paypal Account to be Paypal Pro
51
+ - Transfer the registration form into Google Docs
52
+ - Register for the Google Apps Premier Account
53
+ - Get rid of security page
54
+ - Test Paypal and Check payments for perfection
55
+ Date: 3/20/10
56
+ Payments
57
+ Been getting a firm grasp on how Merchant accounts work with Banks so we can properly implement a PCI Compliant credit card processing system. It turns out that it's basically illegal to store credit card information on your own system, or it has HUGE legal ramifications if we do that. Right now, we're just set up with PayPal Standard, which requires the customer just checkout on PayPal's website. A good start to doing business, but not the end goal; we want them staying on our site.
58
+
59
+ So we need PayPal Website Payments Pro. $30/mo, plus 2.2% and $0.3 per transaction. To give you perspective, Basecamp (their business/company), is using Authorize.net, which is a more enterprisey (oldschool) solution, and it's $99/mo and 4% per transaction bare minimum, and it fluctuates. So this is a good deal.
60
+
61
+ It's going to take some work to set this up, but it's worth it.
62
+
63
+ TODO:
64
+
65
+ - PayPal Website Payments Pro and PayPal Express for PCI compliant transactions
66
+ - Google Calendar integration
67
+ - Google Apps Premier ($50/year), for programmatically creating users and groups, plus a bunch more space and cool features. Not sure if totally needed, but it's cheap!
68
+ - Google Contacts API. Every user that creates an account with My Company will be automatically added to the My Company's Gmail Contact List. This way they can have certain permissions through the google system. And you can share documents to them much more easily. People don't need Gmail accounts to view documents, just to edit them.
69
+ - Google Documents integration into the My Company Front end. Currently, you can view and download documents dynamically from google docs via the admin panel. Now I'd like to make it so certain users can just go to pretty urls in My Company (My Company.org/documents/breakthrough-training-requirements-doc), and if the user has permission to access that document, they will be able to see it in HTML, and download it as HTML/DOC/PDF.
70
+
71
+ In My Company, there will be a few main Groups of Documents:
72
+
73
+ - Public (or "Public My Company Documents"): Accessible by the search engines, downloadable at any time.
74
+ - Everything else: These will be specified by My Company itself. Some possible ones are:
75
+ - Protected: Accessible from only within My Company (admin)
76
+ - Private: Accessible for only the user who created it
77
+ - Graduate: Accessible once a user fulfills a certain task or role, say once they've become a "Graduate".
78
+ - Then by category:
79
+ - "Breakthrough Trainings in Santa Rosa", etc.
80
+ Documents can be part of multiple groups.
81
+
82
+ In order to access documents, you have to be a part of a group. By default, if you're not part of a group, and not registered, you can only see "public" documents. Once you register (email and password, that's it), you can see more, such as registration docs. If you are a sponsor, and they need specific docs, create a group for them, and make the sponsor part of that group.
83
+
84
+ - Documents are automatically re-published via googledocs every time there is a change made! In order for this to be effective, it needs to be automated: Every time you add a new document, you don't want to have to manually drill down to select "auto-publish". First round: admin panel button to make sure all docs have this selected. Second round, run this task every night automatically.
85
+
86
+ There can optionally be a folder where documents that belong together (say 10 documents about X), and in that folder is also something titled "README". That will be rendered on the My Company website as a description on what to do with the documents in the folder. (Just like github: see how this project organizes files and has a README).
87
+ Date: 3/19/10
88
+ Here is a list of things collected on March 11th, that I am updating this morning. I have created a summarized priority list too.
89
+
90
+ Highest Priorities
91
+ - Registration form for Events with Paypal and Required Form (Works but there are edge cases people may run into)
92
+ - Alternate Payment methods (Check, possibly Credit Card directly, though that's a large task for small payoff)
93
+ - Fix security certificate (not a problem, just shows an ugly screen to the user)
94
+ - Google Groups and Document Sharing
95
+ - Integrate Events into Google Calendar
96
+ - Integrate Old Data
97
+
98
+ - google email
99
+ - Firefox and IE, security page. Security certificate needs to be updated
100
+ - date on event table. fixed
101
+ - automate filling out event fields. almost complete, needs to clone registration tickets
102
+ - internet explorer popups don't work. should work if javascript is enabled. need to add message explaining the IE 6 (from 1999) horrors.
103
+ - how do coupons work security-wise
104
+ - email system isn't working: few days to transfer email system from GoDaddy to Gmail. on the list.
105
+ - surveys/forms sent out automatically: requires a task management panel (advanced Basecamp like functionality, simpler interface). on the list.
106
+ - handle checks and money order in payment system: currently only supports PayPal, and same old manual system.
107
+ - time zone on registration. Time zones are supported, estimated time for this specific feature: 1 day.
108
+ - documents specific to location. sorting features, estimated 2 days.
109
+ - send confirmation documents to everybody through email. 1 day. We're just about there. It can send out emails when they have signed up for an event, we just need a better way to manage from the My Company admin side.
110
+
111
+ - make HTML acceptable in event description - rich text support for event description (plain text now)
112
+ - pagination and search. Implemented in some parts, still considering best approaches to this in others.
113
+
114
+ - event/ticket/product_group (refactor so it works better). complete.
115
+ - who registered you?. make a property on the event object.
116
+ - javascript controller - for integration of HTML with Flex. built, 1 day to integrate.
117
+ - swf_address module- same as javascript, just need to integrate.
118
+ - Email survey results - Complete. Survey results are now stored in Google Spreadsheets.
119
+ - friendly_id - better urls (/events/my-training-in-dc, vs. /events/123213). Low priority.
120
+ - Documents (by type: brochure, form, survey, questionnaire): Built simple READ interface to google docs, now we just need to more finely wire them and tune them. Evolving requirement.
121
+ - Google Apps Premier is $50/year - TOTALLY WORTH IT! Using it now. Will begin integrating into Google Groups for managing document permissions.
122
+ - Donations - Built paypal functionality for it, now need to integrate into the UI.
123
+ - Subscriptions - Same, built for paypal, now need to integrate into UI. Also need to manage email announcements and reminders.
124
+ - money orders - need to build a better system for handling manual payments. Works now by having admin manually check off that order was complete.
125
+ - Old Data - high priority.
126
+ - event registration state machine. This is THE core technology required to automate sending forms/docs/surveys out, making sure people have paid their bills, etc. Evolving requirement.
127
+ - Survey Edits - Surveys and Forms are now created with Google Forms which just came out a few months ago. Very cool. It's integrated into the system now.
128
+ - people page (by role) - Not dynamic, but working on front end.
129
+ - Implement Clone on Event - Done.
130
+ - Permission filtering - Switching to Google Groups Premier, but still defining requirements for integrating it into the Admin system.
131
+ - Forms on Google Docs - Done. Need to load the next ones.
132
+ - ACL (access control list) for each doc - Part of Google Docs (lots of these things were solved with Google Docs! Save time, great product)
133
+
134
+ - Thank you for signing up Event - Right now, when you register, it shows a "Your order was successfully processed" screen. We need to customize this. Estimated time - 2 days.
135
+ - Formal State Machine for Tasks - Task Tracking - Core technology
136
+ - Activity feed (what groups have changed) - List of all activity from Google Docs and Facebook streaming into admin panel.
137
+
138
+ - model sponsor workflow - Automate the transfer/acceptance of documents in this workflow. Very complex flow, can be greatly streamlined, requires Workflow Engine (or Task Manager).
139
+ - better survey validations - Write custom scripts to validate survey results on Google Docs (so user can't write "hello!" for the phone number.
140
+
141
+ - Google Calendar Integration - Events right now are independent of Google Calendar. The Event model became very rich and complex, so it will take some thought and collaboration to delineate exactly what we want here.
142
+ - facebook group integration - New event creates new Facebook Group automatically. We have created an My Company Facebook Application, but it doesn't do anything yet.
143
+ - Eventful integration - Testing and it works. Once Events can process HTML (rich text), we will post them here.
144
+ - More elaborate gifts and donations - Custom pages for Donations (see Make-a-wish or Red Cross).
145
+
146
+ Larger, programmatic things that apply to the whole system:
147
+
148
+ - searching and sorting everything: solid 3 days.
149
+ - pagination - 3 days.
150
+ - re-skin html - Partly done with the front end skin, need to finish front and admin skin - 2 weeks.
151
+ - html fonts - There is a ton here. Fonts are required for the Flex site (can have the most rich fonts), the Mobile/HTML site (less rich), and PDF/DOC (even less). So we have a "Font Chain", and a How-to on when to use them.
152
+ - Javascript abstractions and animations. To increase page load time, and decrease code maintaince cost/time, refactor Javascript so it is all in 1 file.
153
+
154
+ - mulitple login: facebook 1-click login (functionally implemented, need interface and to integrate into login form). Also for OpenID and TwitterAuth
155
+ - gravatar: Gravatar url and "what is this?" description. Gravatars are globally recognized self portraits, your global icon. Used when you login and for your profile.
156
+ - profile: Once Registration, Payments, Docs, and Calendars are working well, which they almost are, build the profile
157
+ - badges: Once Profile is up, we will define a system of recognizing people for what they've done.
158
+ - tree of life (who registered you?) - Longer term, Evolving Requirement (the visuals at least, we can keep track of who registered you easily, see above)
159
+ - google checkout integration - Alternative to PayPal, lower priority.
160
+
161
+ possible models or objects to include in the My Company Framework:
162
+
163
+ - Referral (user - user relation)
164
+ - Testimonial vs. Comment
165
+ - Asset (asset_assignment) (videos, images, songs... to be played on the site)
166
+ - Settings and Configuration - More flexible architecture for modifying those random values, like the Form headers and Page titles.
167
+
168
+ Things to learn:
169
+
170
+ - storing redirects and session in the database (browser_cms)
171
+ - storing slugs/permalinks in the database (friendly_id)
172
+ - hirb
173
+
174
+ Things we know:
175
+
176
+ - tons, now it's just integrating them.
177
+ Rolling list of things we will need from My Company
178
+ If any of the data is not directly reachable, we can scrape the old website for it.
179
+
180
+ 1. All Documents into the file structure you find appropriate. This includes Documents, Surveys, Forms, Catalogues, Letters, Awards, and Business (policy, etc.) docs.
181
+ 2. Text file of all the Groups, printed straight from the database (see the My Company_Contacts.txt file)
182
+ 3. Text file of all Contacts’ information, including address, ContactType, groups they’ve been in, etc.
183
+ 4. Text file of all the deposits straight from the database
184
+
185
+ Bo knows how to extract this information from the database, but if for some reason it is not accessible, we can scrape it off of the website.
@@ -0,0 +1,13 @@
1
+ require File.expand_path("./spec/spec_helper")
2
+
3
+ describe Googletastic::AccessRule do
4
+
5
+ it "should retrieve the acl for a test id" do
6
+ doc_id = "document:0AT1-fvkm5vJPZGN2NzR3bmJfNmN2ampwdmNo"
7
+ acl = Googletastic::AccessRule.find(:all, :document_id => doc_id)
8
+ puts acl.inspect
9
+ # doc = Googletastic::Document.find(doc_id, :include => :acl)
10
+ # puts doc.to_xml
11
+ end
12
+
13
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path("./spec/spec_helper")
2
+
3
+ describe Googletastic::Album do
4
+
5
+ it "should retrieve a list of albums from picasa" do
6
+ Googletastic::Album.all
7
+ end
8
+
9
+ end
@@ -0,0 +1,12 @@
1
+ require File.expand_path("./spec/spec_helper")
2
+
3
+ describe Googletastic::AppEngine do
4
+
5
+ it "should get the cookie for app engine" do
6
+ client = Googletastic.client_for(:app_engine)
7
+ url = "http://ilove4d-cdn.appspot.com/files/testing.html"
8
+ response = client.get(url)
9
+ puts response.body
10
+ end
11
+
12
+ end