Skip to content

Instantly share code, notes, and snippets.

@vincentchu
Created June 30, 2010 00:47
Show Gist options
  • Save vincentchu/458061 to your computer and use it in GitHub Desktop.
Save vincentchu/458061 to your computer and use it in GitHub Desktop.
irb(main):021:0> ENV
=> {"SHELL"=>"/bin/bash", "TERM"=>"screen", "SSH_CLIENT"=>"24.5.83.171 51266 22", "SSH_TTY"=>"/dev/pts/7", "USER"=>"posterous", "LS_COLORS"=>"no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:", "SSH_AUTH_SOCK"=>"/tmp/ssh-MmBlFZ7352/agent.7352", "TERMCAP"=>"SC|screen|VT 100/ANSI X3.64 virtual terminal:\\\n\t:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:\\\n\t:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:\\\n\t:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:\\\n\t:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:\\\n\t:li#44:co#155:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:\\\n\t:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:\\\n\t:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:\\\n\t:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:\\\n\t:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:\\\n\t:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mr=\\E[7m:me=\\E[m:ms:\\\n\t:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:\\\n\t:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:\\\n\t:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\\\n\t:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:k5=\\E[15~:\\\n\t:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:k9=\\E[20~:k;=\\E[21~:\\\n\t:F1=\\E[23~:F2=\\E[24~:kb=\177:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:\\\n\t:@7=\\E[4~:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:\\\n\t:kd=\\EOB:kr=\\EOC:kl=\\EOD:km:", "PATH"=>"/home/posterous/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games", "MAIL"=>"/var/mail/posterous", "STY"=>"7790.pts-7.internal1", "PWD"=>"/home/posterous/posterous/.git/hooks", "EDITOR"=>"vi", "HISTCONTROL"=>"ignoreboth", "HOME"=>"/home/posterous", "SHLVL"=>"2", "RAILS_ENV"=>"production", "LOGNAME"=>"posterous", "WINDOW"=>"0", "SSH_CONNECTION"=>"24.5.83.171 51266 67.207.129.58 22", "LESSOPEN"=>"| /usr/bin/lesspipe %s", "INTERNAL_IP"=>"172.19.1.207", "LESSCLOSE"=>"/usr/bin/lesspipe %s %s", "_"=>"/usr/local/bin/irb", "LINES"=>"44", "COLUMNS"=>"155", "SHA"=>"66394662fc140f38bf5e5737f7522ae67a36dc76", "AUTHOR"=>" Christopher Burnett <signalstatic@gmail.com>", "OUTPUT"=>"rm -r coverage\n(in /home/posterous/posterous)\n/home/posterous/posterous/lib/extensions/hpricot/hpricot.rb:190: warning: already initialized constant ElementContent\nExpanders\n should expand youtube\n should expand dailyshow (FAILED - 1)\n should expand teachertube.com\n should handle bad strings ok\n should expand vimeo via oembed\n should expand animoto via oembed\n should expand generic images\n should not expand generic images for non-bookmarklet\n should expand a youtube link inside a post\n should expand a youtube link inside a post but remove link\n should not expand a generic link inside a post, but should autolink\n should get contents of a good url\n should not fail or return exception for 404 url\n expand tests\n should expand even if there are nbsp's'\n test individual expanders\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/v/B-Ka8DnUVEQ?fu003dvideos&appu003dyoutube_gdata\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/watch#!v=P4eT-G-T_qE&feature=related\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/watch%3Fv%3DhVeSPyAp8aU\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/watch?v=hVeSPyAp8aU\n should expand Posterous::Expanders::Flickr for http://www.flickr.com/photos/garrytan/sets/72157622786190208/\n should expand Posterous::Expanders::Flickr for http://www.flickr.com/photos/garrytan/tags/nyc/\n should expand Posterous::Expanders::Blip for http://blip.tv/file/2441904/\n should expand Posterous::Expanders::AcademicEarth for http://academicearth.org/lectures/electric-chargres-polarization-and-electric-force\n should expand Posterous::Expanders::FunnyOrDie for http://www.funnyordie.com/videos/f5d71fd02f/big-ups-doin-it-exclusive-music-video\n should expand Posterous::Expanders::Break for http://www.break.com/break-originals/elevator-show/elevator---human-testing.html\n should expand Posterous::Expanders::Vimeo for http://vimeo.com/12835319\n should expand Posterous::Expanders::Ted for http://www.ted.com/talks/natasha_tsakos_multimedia_theatrical_adventure.html (FAILED - 2)\n should expand Posterous::Expanders::Ted for http://www.ted.com/talks/stefan_sagmeister_the_power_of_time_off.html\n should expand Posterous::Expanders::Ted for http://www.ted.com/talks/karen_armstrong_makes_her_ted_prize_wish_the_charter_for_compassion.html\n should expand Posterous::Expanders::Scribd for http://www.scribd.com/doc/17927204/Cash-for-Clunkers-House-Legislation\n should expand Posterous::Expanders::Docstoc for http://www.docstoc.com/docs/9408639/Get-a-Low-Cost-Dental-Insurance\n should expand Posterous::Expanders::Slideshare for http://www.slideshare.net/MediaSauce/business-lessons-from-10-internet-success-stories\n should expand Posterous::Expanders::Onion for http://www.theonion.com/content/video/congresswoman_says_botched\n should expand Posterous::Expanders::Onion for http://www.theonion.com/video/congresswoman-says-botched-plastic-surgery-most-im,14355/\n should expand Posterous::Expanders::Dailyshow for http://www.thedailyshow.com/watch/tue-july-28-2009/henry-louis-gate (FAILED - 3)\n should expand Posterous::Expanders::Issuu for http://issuu.com/blackrockcollective/docs/issue1\n should expand Posterous::Expanders::Issuu for http://issuu.com/titlemagazine/docs/issue3?documentId=090728202426-c17cf66c618d4c7bbd879fa0cd6b2498\n should expand Posterous::Expanders::Ning for http://hvwpsi09.ning.com/video/reflection-2009-revqt2\n should expand Posterous::Expanders::Ning for http://hvwpsi09.ning.com/photo/picnik-collage?context=latest\n should expand Posterous::Expanders::Twitvid for http://www.twitvid.com/8E351\n should expand Posterous::Expanders::Twitpic for http://twitpic.com/4zys9 (FAILED - 4)\n should expand Posterous::Expanders::Yfrog for http://img43.yfrog.com/i/srs.mp4/\nhttp://desmond.yfrog.com/Himg405/scaled.php?tn=0&server=405&filename=fvg.jpg&xsize=640&ysize=640\n should expand Posterous::Expanders::Yfrog for http://img405.yfrog.com/i/fvg.jpg/\n should expand Posterous::Expanders::Oembed for http://www.dailymotion.com/us/creative/video/xa33u4_how-can-podcasts-benefit-musiciansy_school\n should expand Posterous::Expanders::Viddler for http://www.viddler.com/explore/thehockeyzen/videos/53/\n should expand Posterous::Expanders::Viddler for http://www.viddler.com/explore/failblog/videos/275/\n should expand Posterous::Expanders::GoogleVideo for http://video.google.com/videoplay?docid=1831463738168502680&hl=en\n should expand Posterous::Expanders::Tudou for http://www.tudou.com/l/BgSGRETVF0g\n should expand Posterous::Expanders::Tudou for http://www.tudou.com/v/adAbak6TiLg/v.swf\n should expand Posterous::Expanders::SchoolTube for http://www.schooltube.com/video/cba6e6dc2a85f6c5a231/2010-CoSN-Conference-Montage\n should expand Posterous::Expanders::Mpora for http://video.mpora.com/watch/Myc1v5l1x/\nSwitchController\n #index\n when not logged in\n should render the switcher form\n should assign a switcher\n when logged in\n should render the switcher form without the email\n should assign a switcher\n #discover\n with invaild params\n should render the form again\n should set the flash[:error] for email\n should set the flash[:error] for site_url\n should set the flash[:error] for service type\n with valid params\n should render switch/import\n when email belongs to an existing user and not logged in\n should render switch/login\n when user is logged in\n should render switch/login\n should set switcher in the session\n when site_url is not a valid service\n should render switch/error\n should set the flash[:error] for bad service type\n when service requires auth\n should redirect to more_info\n should set the switcher in the session\n switcher should be valid\n #verify_twitter_auth\n should respond with 200 if there is a valid twitter account in session\n should respond with status 400 if there isn't a valid twitter acocunt in session\n #tweet\n should try and tweet something if POSTed\nVideoPart\n in general\n should return video as content_part_type\n should return orphaned_part_type\n being created\n should require a uploaded_file\n successfully\n should save its uploaded_file to s3\n should create FileRef\n should enqueue processing\n an instance\n should return file if only thing set for all_files\n should return other files if set\n enqueuing processing\n should create a transcode dj when enqueuing processing\n should not create a dj if the related conent part has no post\n should create a transcode dj with a related page\nTheme\n should find the global themes and users themes and put all the globals first\n an instance\n should strip out any xml declarations from the raw theme on save\nLink\n #create\n when invalid\n should not be vaild without a title\n should not be vaild without a url\n when valid\n should be vaild\n should have a site\n should have display_order\n should create a category...\n ...and assign it as the parent\n when creating a new category\n should not have any errors\n shouldn't create a parent category\n #move_to_position\n should move link1 to 2\n should move link2 to 0\n should move link3 to 1\nXangaImport\n a squarespace blog\n #site_doc\n should not be nil\n #api_url\n should find an id\n #valid?\n should be valid\n #save and #import!\n{\"permalink\"=>\"http://christwoism.xanga.com/729355780/this-is-a-title/\", \"title\"=>\"this is a title\", \"userid\"=>\"37006297\", \"postid\"=>\"729355780\", \"wp_slug\"=>\"\", \"categories\"=>[], \"description\"=>\"<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>\"}\n2010-06-28\n{\"permalink\"=>\"http://christwoism.xanga.com/724487358/item/\", \"title\"=>\"\", \"userid\"=>\"37006297\", \"postid\"=>\"724487358\", \"wp_slug\"=>\"\", \"categories\"=>[], \"description\"=>\"Hi everyone! I'm just getting started on Xanga... Drop me a comment if you've got some ideas on what to do first - or just to say, \\\"Hi!\\\" <IMG height=15 src=\\\"http://www.xanga.com/Images/smiley1.gif\\\" width=15>\"}\n2010-03-30\n should have 1 posts\nTheming\n should expand complex block structures into the correct block objects\n should output ListSidebar only on list actions\n should output ShowSidebar only on show actions\n should work with lowercase blocks\n should properly replace colors\n should add a more block to the posts block\n should properly handle page blocks\n should properly handle link blocks\n should automatically add a search page to the top of the posts block if the theme doesn't have one\n should resolve ids\n helpers\n should add if does not exist\n should add parent tag if does not exist\n should not change the item if the item already exists\n sanitization\n should allow acceptable styles in style tags: font-family: Arial, Helvetica, sans-serif;\n should allow acceptable styles in style tags: font-family: 'Arial', 'Helvetica', sans-serif;\n should allow acceptable styles in style tags: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style tags: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style tags: border-top: 1px solid #eee;\n should allow acceptable styles in style tags: border: 1px solid #eee;\n should allow acceptable styles in style tags: padding: 1px;\n should allow acceptable styles in style tags: margin-bottom: 1px;\n should allow acceptable styles in style attributes: font-family: Arial, Helvetica, sans-serif;\n should allow acceptable styles in style attributes: font-family: 'Arial', 'Helvetica', sans-serif;\n should allow acceptable styles in style attributes: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style attributes: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style attributes: border-top: 1px solid #eee;\n should allow acceptable styles in style attributes: border: 1px solid #eee;\n should allow acceptable styles in style attributes: padding: 1px;\n should allow acceptable styles in style attributes: margin-bottom: 1px;\n should kill bad html: <div onclick=\"alert('\n should kill bad html: <script type=\"text/ja\n should kill bad html: <!DOCTYPE html PUBLIC\n should kill bad html: \t<link rel=\"st\n allowing tags\n should allow p\n should allow div\n should allow b\n should allow em\n should allow html\n should allow body\n allowing attributes\n should allow type\n should allow xmlns:fb\n should allow xmlns\n should allow http-equiv\n should allow content\n should allow id\n should allow type\n should allow name\n should allow value\n should allow style\n should allow rel\n should allow valign\n should allow allowfullscreen\n should allow type\n should allow allowscriptaccess\n should allow flashvars\n should allow classid\n should allow data\n should allow codebase\n should allow wmode\n should allow pluginspage\n should allow quality\n should allow target\n should allow frameborder\n should allow marginwidth\n should allow marginheight\n should allow action\n should allow method\n should allow media\n should allow rowspan\n should allow colspan\n should allow cellspacing\n should allow cellpadding\n should allow debug\n should allow layout\n should allow show_faces\n should allow colorscheme\n should allow shape\n should allow coords\n should allow alt\n should allow usemap\n should allow charset\n should allow lang\n should allow datetime\n should allow pubdate\n should allow property\n allowing specific html\n should allow specific html like: <table><tr><td cellspacing=\"5\" cellpadding=\"10\">hello world</td></tr></table>\n should allow specific html like: <meta property=\"fb:admins\" content=\"12345\" />\nApiController\n #locations\n should be 200\n should be json\n handling files via POST uploadAndPost\n should reject the post if the twitter auth is not correct\n with valid twitter credentials\n should return twitpic 'created response' if the correct twitter auth and text is passed in\n should set the via_type of the post to via_twitter_api\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should return an error of type 1003 'Invalid media type' and send email if two invalid photos were sent\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-1.jpg' @ jpeg.c/EmitMessage/233.\n should return no errors and discard one image and send email if one broken and one correct image was sent.\n handling files via POST upload\n should reject the post if the twitter auth is not correct\n with valid twitter credentials\n should return twitpic 'created response' if the correct twitter auth and text is passed in\n should set the via_type of the post to via_twitter_api\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should return an error of type 1003 'Invalid media type' and send email if two invalid photos were sent\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-1.jpg' @ jpeg.c/EmitMessage/233.\n should return no errors and discard one image and send email if one broken and one correct image was sent.\n newpost\n with valid http auth\n should create a new post\n should set the via_type of the new post to via_api\n should set source field to via_text when creating post\n should accept ping.fm posts normally\n should reject banned users\n should reject banned sites\n should reject unconfirmed users\n should not accept ping.fm posts in PANIC_MODE\n should limit rate limit users\n newcomment\n with a user logged in\n should allow comment creation\n should return error if given bad post id\n should return an error if comments are turned off for site\n readposts\n should return an error w/o auth or site id\n with valid http auth\n should return an error without a bad site_id\n should list 10 posts by default\n should list at most num_posts\n should list less than num_posts if there are fewer\n getpost\n error conditions for getpost\n should return with \"Invalid url\" 2001 error\n should return a post sucessfully with post_id param\n gettags\n without a user logged in\n should return and error for private sites\n should be success for a public site\n with a user logged in\n should return error w/ erroneous site id\n should show tags for another user's public site\n should return error for another user's private site\n should lookup site via hostname\n should lookup site via id\n handling requests from http and https\n Handling SSL actions\n should be agnostic to http or https for uploading - testing: uploadAndPost, http\n should be agnostic to http or https for uploading - testing: uploadAndPost, https\n should be agnostic to http or https for uploading - testing: upload, http\n should be agnostic to http or https for uploading - testing: upload, https\n should be agnostic to protocol for readposts - testing: http\n should be agnostic to protocol for readposts - testing: https\nPost\n should be valid\n should succeed when saved by a user who owns the site\n should asynchronously be able to call create_notifications_for_post\n should asynchronously be able to call remove_notifications_for_post\n should create notifications for subscriptions when a new post is added\n should create multiple notifications \n should remove notifications when a post is destroyed\n should remove notifications when a post is marked private\n should update notifications when a post is updated\n Generated strings\n should generate removestring\n should generate privatestring\n should generate commentstring\n Postprocessing itself\n should always check to see if it needs processing after each save\n should queue a delayed job if the post is unprocessed\n should not queue a delayed job if the post is processed\n the actual act of postprocessing\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_external_urls?\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_video?\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_audio?\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_image?\n Conditions for skipping autoposts\n should not queue autoposts if it is private\n should not queue autoposts if it belongs to a private site\n should not queue autoposts if it belongs to a banned site\n should not queue autoposts if it belongs to a banned user\n should not queue autoposts if it belongs to a banned email\n should not queue autoposts if the site isn't confirmed\n should not queue autoposts if the destination of the post is a moderated group blog\n Conditions for queueing autoposts\n by a user\n should queue all autoposts when incoming username is post\n should queue autoposts when there is a bookmarklet style incoming_username\n by a group profile\n should queue autoposts when there is a group profile\n should avoid duplicates\n by a post with no associated user (e.g., by twitter-only site)\n should queue autoposts\n Conditions for doing an XMLRPC Ping\n should do an xmlrpc ping if it passes muster\n scheduling itself for future posting\n should set a future display date from a subject line option after_save\n should remove the future posting subject line elements\n should remove the future posting subject line elements when scheduling from string\n should set itself to private\n should add a delayed_flag into the incoming_username of a post\n should have a method for actually publishing in the future\n should not publish itself if the display_date is very different publish call is made\n should publish a post if its scheduled time is in the past\n should not create multiple sets of subscriptions on publishing\n should save a new delayed_job that will handle publish the post at the future date\n should default to 1 week from now for display date if it doesn't understand the lag string\n for the delay string publish: midnight tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: noon today\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 5:32 am today\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 3pm tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow midnight\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: today at 5:32 pm\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 5:32 am\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on 3/12/2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on 3/12/2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 5 minutes\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 5 minutes\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 5:45pm\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 5:45pm\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on March 12, 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: today at noon\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: March 12, 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: \"in 10 hours\"\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 2:35 am\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow at noon\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: April 08, 2010 at 6:12 AM\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on March 12 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: March 12 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: one hour\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: April 08, 2010 at 07:38 PM\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow at 2:12 AM\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 2 days\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 1 day\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: noon tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: in 10 hours\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: \"on 3/12/2020\"\n should understand it in the subject line\n should it when updating by string\n via type\n should have contstants\n should have predicates and allow setting via symbol\n ping!\n should set via_type to via_email\n should queue postprocess job\n should queue location job and postprocess job for post with images parts with lat set\n being validated\n should require a site\n being created\n should update posts_count of site\n replacing emailed #more tag\n should replace #more with a comment\n should replace <br>#more<br> with a comment\n should replace <br/>#more<br/> with a comment\n should replace #more<br/> with a comment\n should replace <div>#more</div> with a comment\n should replace <span>#more</span> with a comment\n should replace #more with a comment\n should replace #moresomething with a comment\n should replace div#more with a comment\n adding and extracting tags\n should add tags from string\n should not add tags already on the post with add_tags\n should not create new Tag objs for existing ones add_tags\n should extract tags\n should add from proto multiselect\n should properly avoid dupes\n having external image urls\n should create content parts when i create a new post with an external url\n should create content parts when i edit an existing post with an external url\n should use the same content part on subsequent process_body calls\n should use the same content part multiple times for the same external image\n creating a url slug\n should create a url slug for an nil title\n should create a url slug for an empty title\n should should not create dupe slugs for the same title\n should contintue to increment from dupe titles\n should add random chars to common url slugs\n should transliterate foreign chars in slug\n should remove untitled from slug\n should remove (()) clauses from slug\n should turn ampersand into and in slug\n should get rid of not word stuff\n should turn whitespace into -\n should reduce multiple - down to 1\n should make everything lowercase\n should get rid of whitespace at start end end\n should limit to 45 chars\n being saved\n should create locations for image parts with lat/lng\n being destroyed\n should update posts counts for site\n creating a location summary\n should use Location#summary\n should and separate multiple loc summaries\n should not inlcude dupe summaries\n should comma/and separate multiple loc summaries\n should comma/and separate multiple loc summaries\n should consolidate state name for cities from same state\n should consolidate country names for cities from same country\n locations association\n should extend uniq_by_attr\n dejavascriptifying nojs items\n should dejavascriptify github\n creating html\n cached for facebook\n should remove object, embed and param tags\n should get rid of iframes\n for notifications\n should remove object, embed and param tags\n should get rid of iframes\n having media added\n should add new content parts to body smoothly without removing old ones\n should create an image ContentPart given files\n should create a single image ContentPart if given multiple files\n should create an image content part given and ImagePart\n with an existing image content part\n should add new images to the existing content part with add_media_from_files!\n with an existing file content part\n should add the new posterous content id after the existing pci\n returning valid comments\n should return comments\n should not return unallowed comments\n should not return comments with banned users\n should not return comments with banned users if you are logged in\n caching comments_count and looking up number_of_comments\n should update the comments_count on related post\n should not count unallowed comments in comments_count\n should not count comments w/ banned users in comments_count\n should set comments_count correctly for an arbitrarily large # of comments\n facebook rich media attachments\n should extract plaintext\n Generating Facebook Media Attachments\n should detect embedded flash video - YouTube\n should detect embedded flash video - Vimeo\n should try and detect flash vars from arbitrary embeds (FAILED - 5)\nManageController\n with a user logged in\n #index\n should render :index\n should assign the users sites\n should assign imports\n should assign :stale_imports\n #subscribers\n should render :subscribers\n should assign subscribers\n should be the correct site\n a missing site or bad site\n should redirect to manage#index\n should set the flash\n #settings\n should render :settings\n with a phone number set\n should return the currently set user\n #site\n should render :site\n should assign posts\n should assign hostname\n should be the correct site\n should create two link categories: Navigation and Sites I Like\n as a contributor\n should have access to the site\n unauthorized access\n should not be able to access site\n should set the flash\n should not be able to access subscribers\n should set the flash\nPage\n #create\n when invalid\n should not be vaild without a title\n should not be vaild without a body\n when valid\n should be vaild\n should have a site\n should have display_order\n should belong to a link\n sub pages\n should contain the sub page\n should have the correct parent page\n url slugs\n should have url slugs\n #move_to_position\n should move page1 to 2\n should move page2 to 0\n should move page3 to 1\nPostsController\n Handling Subscriptions\n Following Users\n should subscribe you to all of the user's active sites (excluding private ones) when following a user\n Removing Subscribers\n Should not allow you to remove a subscription if you're not logged in\n Should allow you to remove a subscription that you own\n should allow you to remove a subscription to your own site\n should not allow you to remove a subscription you don't own\n on the site's domain\n without anyone logged in\n should raise bad page error for bad page\n should assign post to posts for list without page\n should assign post to posts for list with page\n should assign empty posts for list with page 2\n should update the cache\n showing a private post\n should not show a private post without the privatestring\n should show a private post given privatestring\n showing a list page\n should show a list page\n should not show a list page for a banned site\n should not show a list page for a site owned by a banned user\n showing a normal post\n should show the post given a url_slug as id\n should show the post even if the site theme is invalid\n should redirect a search to list\n should show a 404 for missing page\n should show a 404 for page on a site owned by a banned user\n should show a 404 for page on a banned site\n when viewing from a mobile browser\n should show the mobile version of the list page\n should show the mobile version of the show page\n should show next and previous link if viewing a middle post\n should show next link but not the previous link if viewing last post\n should show previous link but not next link if viewing first post\n should not show the mobile version of the site if user has chosen not to\n 404 request\n should show a 404 for a missing blog\n should show a 404 for a missing blog on mobile\n should show a 404 for a missing blog on iphone\n pinging a comment\n should allow a comment from a user\n should allow a comment from a contributor\n should moderate a comment from a non user non contributor\n for a site that does not allow comments\n should not allow a comment\n for a site that allows logged in users to comment\n should not allow a comment\n for a site that allows logged in users to comment (moderation)\n should allow a comment by the site owner\n should moderate a comment\n for a site that allows anyone to comment\n should allow an anon comment\n should not create a comment if bot field is filled in\n submitting an akismet spam comment\n should not create a comment if akismet returns spam\n should not incrment post comment count when receiving spam comment\n with a site owning user\n should show unmoderated comments\n with a (non site owning) user logged in\n should create a comment with ajaxcomment\n should create a comment with privateajaxcomment\n should return json for ajaxcomment using xhr\n should not show unmoderated comments\n for a mobile user agent\n should not blow up on show page\n on a forwarding site's domain\n should forward slug for public post\n should forward to private path of private post\n on posterous.com\n without anyone logged in\n should redirect new\n should redirect create\n be able to edit a post while not logged in (legacy editpost)\n edit post body\n fail to edit post body on wrong removestring\n should update a post body\n should fail update a post body on invalid removestring\n should update a display date with pretty date\n should not change the site id if the user passes something in\n be able to edit a post while not logged in (new, using auth param on edit/update action)\n edit post body\n fail to edit post body on wrong removestring\n should update a post body\n should delete a post\n should fail to delete a post with wrong removestring\n should fail update a post body on invalid removestring\n should update a display date with pretty date\n should not change the site id if the user passes something in\n with a user logged in\n Creating a new post\n should create a new post\n should set via_type of new posts to via_web\n should download images to avoid hotlinking\n should create a new post and autopost\n should create a new post and autopost with specific selections\n should create a new post and not autopost if there is no autopost specified\n should redirect create given another user's site\n Updating a post\n should update a post\n should update a post if you are a contributor and you created the post\n should not update a post if you are a contributor and you did not create the post\n<p><html><body>You are being <a href=\"http://hostname1442.posterous.com/private/nInqhyrgwF\">redirected</a>.</body></html> <p>Post was successfully updated.\n should update a post using the auth string while logged in without messing with owner or the site\n should allow you to reschedule a delayed post\n should allow you to publish a post immediately\n should assign a post to a different site\n should not update a post you don't own\n should update a post w/o an explicit site id\n should update a post w/ nonsense for site id\n Destroying a post\n should delete a post\n should delete a post by another user when i am site owner\n should not delete a post by another user when i am just a site contributor\n should not delete a post you don't own\n Autoposting a post\nYou have a nil object when you didn't expect it!\nYou might have expected an instance of Array.\nThe error occurred while evaluating nil.index\n should allow you to autopost to a site\n dealing with submitted content parts\n should add content_parts when creating\n should update content parts of a post\n /textmarks\n should create a post give a phone number\n should set via_type to via_sms\nComment\n should mark a public comment public\n should mark an unallowed comment not public\n should mark a comment to a private site private\n should mark a comment to a private post private\n should return cleanUrl even if url is nil\n dealing with active state\n should be active normally\n should not be active if unpinged\n should not be active if user is banned\n should update active\n the valid named scope\n should include normal comments\n should include normal comments w/o users\n should not include banned user comments\n should not include comments from banned users\n being created\n should fix broken post comments_count\n should not increment post comment count for unpinged posts\n should not increment post comment count for unallowed posts\n should update post comment count on save\n should set public\n being updated\n should correctly update the comments count of post already in memory\n should update active\n being destroyed\n should update post comment count on save\n Moderation, whitelist, and blacklisting\n POSTEROUS USER\n Moderation on\n should moderate an anonymous comment\n should moderate a comment by another user\n should allow a comment by an owner of the site\n should whitelist a user comment\n should handle a blacklisted user\n moderation off\n should post a comment\n should allow a comment by an owner of the site\n should do nothing on a whitelisted user comment\n should moderate a user comment if blacklisted\n FACEBOOK USER\n moderation on\n should moderate a comment\n should whitelist a user comment\n should handle a blacklisted user\n moderation off\n should post a comment\n should allow a comment by an owner of the site\n should do nothing on a whitelisted user comment\n should moderate a user comment if blacklisted\n TWITTER USER\n moderation on\n should moderate a comment\n should whitelist a user comment\n should handle a blacklisted user\n moderation off\n should post a comment\n should allow a comment by an owner of the site\n should do nothing on a whitelisted user comment\n should moderate a user comment if blacklisted\n VIA EMAIL\n basic ping_email functionality\n should set a site on ping\n should not barf on email being nil\n should not set to allowed if previous post by same email is not allowed\n should set allowed on subsequent emails only if one of the previous emails was allowed\n moderation on\n POSTEROUS USER\n should post an authorized user comment\n should moderate a non-authorized user comment\n should destroy a banned user comment\n should auto-approve a whitelisted user comment\n TWITTER USER\n should moderate a non-authorized user comment\n should destroy a banned user comment\n should auto-approve a whitelisted user comment\n FACEBOOK USER\n should moderate a non-authorized user comment\n should destroy a banned user comment\n should auto-approve a whitelisted user comment\n EMAIL USER\n should post an user comment of someone who is just an email contributor\n should moderate a random persons email\n moderation off\n POSTEROUS USER\n should post an authorized user comment\n should post a non-authorized user comment\n should delete a banned user comment\n should post a whitelisted user comment\n TWITTER USER\n should post a non-authorized user comment\n should delete a banned user comment\n should post a whitelisted user comment\n FACEBOOK USER\n should post a non-authorized user comment\n should delete a banned user comment\n should post a whitelisted user comment\n EMAIL USER\n should post an user comment of someone who is just an email contributor\n should moderate a random persons email\n Denormalization of site on comment\n should move all comments to another site on changing site id\n should do nothing if post is changed but site id is not changed\nNingImport\n #new\n should gen the blog url\n should gen the blog url\n #create\n #import\nopening page: http://cuwebd.ning.com/profiles/blog/list\ncollection size: 20\n****************************************************************************************************\n should have 20 posts\nPosterous::ServiceDetector\n #new\n should set the doc\n #detect_by_url\n should detect blogger\n #detect_by_generator\n should detect blogger\n #generator\n should detect blogger\n #to_klass\n should return BloggerImport\nImagePart\n in general\n should return image as content_part_type\n should return orphaned_part_type\n being validated\n should require a uploaded_file\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\n should not be valid with a bad image file\n with an external url\n should be valid with the external url, display external url for image part prior to processing\n should download external url on process\n should handle urls with weird extensions\nidentify: no decode delegate for this image format `/tmp/stream7930-1' @ constitute.c/ReadImage/531.\n should handle obviously wrong things by setting error status\n should handle totally invalid urls ok\n being created\n should put given uploaded_file on s3\n should create a corresponding full file and file ref and set dimensions\n should pull latitude and longitude off jpg image if present\n should also get geocords off jpeg images\n should process right away if process_after_create == true\n being processed\n w/ a jpg larger than 500 but smaller than 1000\n synchronously\n should update processed_at\n should update the size and dimensions of it's full file\n should create new Images and FileRefs for each FORMAT\n asynchronously\n should update processed_at\n should update the size and dimensions of it's full file\n should create new Images and FileRefs for each FORMAT\n with a jpg larger than 1000\n should create new Images and FileRefs for each FORMAT\n should destroy all images on destroy\n with a portrait photo more than 500px wide\n should create a 500 image that is 500 wide\n should have correct thumb\n with a landscape image with orientation data\n should orient the photo correctly\n should resize down to a width of 500\n should have correct thumb\n with a portrait image with (bad) orientation data\n should not auto orient\n should have correct thumb\n with a jpg smaller than the 500 format\n should create a scaled500 image that is not scaled and no scale1000 image\n should have correct thumb\n with animated gif\n should create scaled500 and thumb as a gif\n should use the full FileRef for the scaled500 FileRef\n should have correct thumb\n with a png\n should create scaled500 and thumb as a png\n should not flatten a png\n should have correct thumb\n with a tiff file larger than 500 but less than 1000\n should convert the tif to a jpg\n should have correct thumb\n with a PSD\n should convert the psd to a jpg\n should have correct thumb\n rotating an image\n should return a new image_part given integer rotation\n should return a new image_part given string rotation\n should double rotate an image that we autoorient\n instance\n it should set the post of associated location when added to content part\n should create a location when being saved with lat/lng and no location\n should not create a location if one exists when being saved w/ lat/lng\n should return all files\n should smart serialize\n should create a content_part dj when enqueuing processing\n calculating geo coords\n should not error with invalid coords\n should ignore invalid coords in seconds\n should return nil coord w/ error in degrees or minutes\nContentPart\n Belonging to Post\n being validated\n should set a value for posterous_content_id\n should set its site from its post\n should set its user from its post\n should set its email from its post\n Belonging to Page\n being validated\n should set a value for posterous_content_id\n should set its site from its page\n should set its user from its page\n should set its email from its page\n being saved\n should not stomp exisint posterous_content_id\n an instance\n should smart serialize\n should have predicates based on content type\n should have associates for each type\n should return label based on content_type\n being processed after create\n should process image_parts\n should enqueue transcoding for unprocessed audio parts\n should enqueue transcoding for unprocessed video parts\n with multiple images\n should create a zip file if it has multiple images\n should create a new zip if more files are added\n should not create a new zip if no images need processing\n should upate the body_html of it's post\n being created from media parts\n should group image parts\n should raise and error if media_part already has a content_id\n being created from files\n should not fail if give nothing\n should create a Delayed::Job\n with image file(s)\n should create a ContentPart with an ImagePart give an image file with create_from_files\n should remove spaces from filenames when creating s3_keys\n should create a single content part from multiple image files\n should fall back on file extension given general MIME type\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\n should not create any ContentParts with a bad image file\n should handle an image string as an uploade_file\n should use ImageMagick identify on jpg file w/ no discernable MIME type or extension\n should use ImageMagick identify on png file w/ no discernable MIME type or extension\n should not choke on no image file without content type or extension\n should use ImageMagick and not barf on upload w/o original_filename\n with audio file(s)\n should create an AudioPart and FileRef\n should create a new AudioPart for every file\n with video file(s)\n should create an VideoPart and FileRef\n should create a new VideoPart for every file\n with ipaper supported files\n should create a FilePart and FileRef\n should create a new VideoPart for every file\n with an unsupported file\n should not create any ContentParts\n being enqueued\n should create a delayed job\n should create a blog_import_content_part delayed job if given a post w/ a blog_import\n should create a blog_import_content_part delayed job if given a post w/ a blog_import hostname\n creating from an external url\n should create an image content part for an external url, and subsequent calls should return same cp\n should create an image content part for an external url with an external_link, and subsequent calls should return same cp\nAudioPart\n in general\n should return image as content_part_type\n should return orphaned_part_type\n creating flash embed\n should not munge M\303\263veis\n should not munge \347\256\200\344\275\223\345\255\227\n should do best to convert to UTF 8 if given latin\n being created\n should require a uploaded_file\n successfully\n should save its uploaded_file to s3\n should create FileRef\n an instance\n should return file for all_files w/o mp3\n should return file and mp3 for all files if both exist\n enqueuing processing\n should create a transcode dj when enqueuing processing\n should not create a dj if the related conent part has no site\nUser\n should have many logins\n should change mail to Email with human_attribute_name and leave other stuff alone\n being validated\n on create\n should require password to be set\n should require sitename to be set\n should require mail to be set\n should require a password of at least 5 characters\n should a allow a valid password\n should require a sitename at least 2 characters long\n should require a sitename that is not taken (ignoring case)\n should require a sitename that doesn not start with comment-\n should allow a sitename with comment- in the middle\n should require a sitename that begins and ends with a letter or number\n should require a sitename with only letters numbers and dashes\n should lowercase and clean spaces from sitename\n should allow valid sitenames\n should require mail longer than 4 characters\n should require a correctly formatted mail\n should allow a validly formatted mail\n should require a mail that is not taken by an email with a user (ignoring case)\n should allow a mail that is taken by an email w/o a user\n should lowercase and clean spaces from mail\n on update\n should not require a password\n should not require a sitename\n should not require a mail\n should require nickname\n should require valid new password when changing password\n should require correct old password when changing password\n should be valid w/ new password and correct old_password\n an instance\n should default num_sites_allowed to 3 but allow override\n should return owned_sites\nYou have a nil object when you didn't expect it!\nYou might have expected an instance of Array.\nThe error occurred while evaluating nil.index\n should return html for get_external_site_icons\n should return it's encrypted id\n claiming twitter comments\n should move comment to user and nil out commenter_auth email and url\n should not move comment with name but no oauth user\n being banned or unbanned\n should update the comments_count of posts it has commented on\n should update active of comments\n encrypting ids\n should encrypt them\n should decrypt them\n Computing User Milestones\n Stuff related to sending emails to try and get them to come back\n should find all users who haven't had any activity for specified amount of time\n Stuff related to the display for milestones for the frontend\n should have all of the appropriate method definitions for each milestone\n should return a hash with a description and a URL for how to complete a milestone\n should compute how many milestones a user has completed\n should tell you what action to take when next milestone is confirm_emails\n should tell you what action to take when next milestone is update_profile\n should tell you what action to take when next milestone is add_subscriptions\n should tell you what action to take when next milestone is invite_subscribers\n should tell you what action to take when next milestone is add_autoposts\n should tell you what action to take when next milestone is try_bookmarklet\n should tell you what action to take when next milestone is purchase_domain\n should return a nil next action if all milestones have been completed\n should skip milestones even if they aren't satisfied as long as the milestones flag has been set\nFeedImport\n a wordpress blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\n a vox blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\n a LJ blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\n a Blogger blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\nBlogImport\n STI\n Subclass\n #create\n should be a MetaWeblogImport\n #metaweblog_endpoint\n should get metweblog endpoint\n should raise ArgumentError when site_url is nil\n #import!\n should return posts\n #merge!\n should have a merged_site\n should have 1 post in imported site\n should have 0 posts in the new site\n on #merge!\n should move posts to the new site\n #add_dowloand_class\n should add the dl class to images\n #import!\n should not throw NotImplemented when called from subclass\nActiveRainImport\n #new\n should gen the blog url\n #create\n #import\nopening page: http://activerain.com/blogs/elizabethweintraub\ncollection size: 10\n****************************************************************************************************\n should have 10 posts\nBloggerImport\n a blogger blog\n #import!\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=1\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=101\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=201\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=301\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=401\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=501\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=601\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=701\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=801\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=901\n should have 4 posts\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nWordPressImport\n a wordpress blog\n #create\n should set export_data\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\n #import!\n should parse export data to a doc\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\n should have 21 posts\nTweetPhoto\n a tweetphoto blog\n #create\n[\n [ 0] {\n \"Message\" => \"Life is precious.\",\n \"Name\" => \"x2_1be7eb6\",\n \"Views\" => 10103,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:50:07Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261494\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7eb6\",\n \"Id\" => 29261494,\n \"UploadDate\" => 1277563807,\n \"TinyAlias\" => \"29261494\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7eb6\",\n \"GdAlias\" => \"29261494\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7eb6\",\n \"CommentCount\" => 151,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7eb6\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 39\n },\n [ 1] {\n \"Message\" => \"And son... \",\n \"Name\" => \"x2_1be7e24\",\n \"Views\" => 14724,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:49:08Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261348\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7e24\",\n \"Id\" => 29261348,\n \"UploadDate\" => 1277563748,\n \"TinyAlias\" => \"29261348\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7e24\",\n \"GdAlias\" => \"29261348\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7e24\",\n \"CommentCount\" => 36,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7e24\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n },\n [ 2] {\n \"Message\" => \"Dad...\",\n \"Name\" => \"x2_1be7dd8\",\n \"Views\" => 13949,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:48:38Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261272\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7dd8\",\n \"Id\" => 29261272,\n \"UploadDate\" => 1277563718,\n \"TinyAlias\" => \"29261272\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7dd8\",\n \"GdAlias\" => \"29261272\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7dd8\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7dd8\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n },\n [ 3] {\n \"Message\" => \"Love is... \",\n \"Name\" => \"x2_1be7d73\",\n \"Views\" => 9744,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:47:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261171\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7d73\",\n \"Id\" => 29261171,\n \"UploadDate\" => 1277563675,\n \"TinyAlias\" => \"29261171\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7d73\",\n \"GdAlias\" => \"29261171\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7d73\",\n \"CommentCount\" => 101,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7d73\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 40\n },\n [ 4] {\n \"Message\" => \"Road trip time for DDub & EDub! Both with our respective gadgets- Uber & Gam Boy DS!!!!!! \",\n \"Name\" => \"x2_1b77d3e\",\n \"Views\" => 10782,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-24T04:07:01Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28802366\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b77d3e\",\n \"Id\" => 28802366,\n \"UploadDate\" => 1277352421,\n \"TinyAlias\" => \"28802366\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b77d3e\",\n \"GdAlias\" => \"28802366\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b77d3e\",\n \"CommentCount\" => 136,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b77d3e\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 33\n },\n [ 5] {\n \"Message\" => \"Do not be alarmed... That was not an earthquake... That was just me dropping the barritone in The Back Rub studio! ;)\",\n \"Name\" => \"x2_1b65d98\",\n \"Views\" => 12001,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-23T18:55:46Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28728728\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b65d98\",\n \"Id\" => 28728728,\n \"UploadDate\" => 1277319346,\n \"TinyAlias\" => \"28728728\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b65d98\",\n \"GdAlias\" => \"28728728\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b65d98\",\n \"CommentCount\" => 158,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b65d98\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 36\n },\n [ 6] {\n \"Message\" => \"How can you not love Jessica Simpson.... \",\n \"Name\" => \"x2_1b6579a\",\n \"Views\" => 10699,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-23T18:44:12Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28727194\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b6579a\",\n \"Id\" => 28727194,\n \"UploadDate\" => 1277318652,\n \"TinyAlias\" => \"28727194\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b6579a\",\n \"GdAlias\" => \"28727194\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b6579a\",\n \"CommentCount\" => 93,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b6579a\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 18\n },\n [ 7] {\n \"Message\" => \"So much for vacation! It was fun for a day! Photo shoot time. \",\n \"Name\" => \"x2_1b43522\",\n \"Views\" => 11845,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-22T21:22:12Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28587298\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b43522\",\n \"Id\" => 28587298,\n \"UploadDate\" => 1277241732,\n \"TinyAlias\" => \"28587298\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b43522\",\n \"GdAlias\" => \"28587298\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b43522\",\n \"CommentCount\" => 245,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b43522\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 63\n },\n [ 8] {\n \"Message\" => \"Today... Trust that all is how it is meant to be & that all will be as it should. Acceptance, trust & love = POWER!\",\n \"Name\" => \"x2_1b3c087\",\n \"Views\" => 9534,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-22T17:22:22Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28557447\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b3c087\",\n \"Id\" => 28557447,\n \"UploadDate\" => 1277227342,\n \"TinyAlias\" => \"28557447\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b3c087\",\n \"GdAlias\" => \"28557447\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b3c087\",\n \"CommentCount\" => 45,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b3c087\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 18\n },\n [ 9] {\n \"Message\" => \"NKOTB & BSB tonight on ET... If you missed the show Saturday.... Don't miss ET tonight!\",\n \"Name\" => \"x2_1b13055\",\n \"Views\" => 7521,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-21T15:19:02Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28389461\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b13055\",\n \"Id\" => 28389461,\n \"UploadDate\" => 1277133542,\n \"TinyAlias\" => \"28389461\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b13055\",\n \"GdAlias\" => \"28389461\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b13055\",\n \"CommentCount\" => 47,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b13055\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 27\n },\n [10] {\n \"Message\" => \"If you weren't there... Watch tonight on Entertainment Tonight! NKOTB/BSB on ET! \",\n \"Name\" => \"x2_1b12c21\",\n \"Views\" => 11093,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-21T15:08:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28388385\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b12c21\",\n \"Id\" => 28388385,\n \"UploadDate\" => 1277132914,\n \"TinyAlias\" => \"28388385\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b12c21\",\n \"GdAlias\" => \"28388385\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b12c21\",\n \"CommentCount\" => 45,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b12c21\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 19\n },\n [11] {\n \"Message\" => \"While you Laker fans celebrate... \",\n \"Name\" => \"x2_1b127c2\",\n \"Views\" => 7438,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-21T14:55:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28387266\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b127c2\",\n \"Id\" => 28387266,\n \"UploadDate\" => 1277132155,\n \"TinyAlias\" => \"28387266\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b127c2\",\n \"GdAlias\" => \"28387266\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b127c2\",\n \"CommentCount\" => 106,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b127c2\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 36\n },\n [12] {\n \"Message\" => \"NKOTB! RADIO CITY! ;)\",\n \"Name\" => \"x2_1a961e0\",\n \"Views\" => 11100,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T20:47:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27877856\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a961e0\",\n \"Id\" => 27877856,\n \"UploadDate\" => 1276894050,\n \"TinyAlias\" => \"27877856\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a961e0\",\n \"GdAlias\" => \"27877856\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a961e0\",\n \"CommentCount\" => 50,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a961e0\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 21\n },\n [13] {\n \"Message\" => \"Want you all here tonight... \",\n \"Name\" => \"x2_1a9229d\",\n \"Views\" => 10964,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T18:51:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27861661\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a9229d\",\n \"Id\" => 27861661,\n \"UploadDate\" => 1276887094,\n \"TinyAlias\" => \"27861661\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a9229d\",\n \"GdAlias\" => \"27861661\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a9229d\",\n \"CommentCount\" => 127,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a9229d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 25\n },\n [14] {\n \"Message\" => \"If I weren't there lat night... I would think this weren't a real pic... I would think it was CGI!!!!! \",\n \"Name\" => \"x2_1a902c3\",\n \"Views\" => 10820,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T17:57:48Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27853507\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a902c3\",\n \"Id\" => 27853507,\n \"UploadDate\" => 1276883868,\n \"TinyAlias\" => \"27853507\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a902c3\",\n \"GdAlias\" => \"27853507\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a902c3\",\n \"CommentCount\" => 51,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a902c3\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 14\n },\n [15] {\n \"Message\" => \"I mean seriously... Does it get any better? So blessed am I my soldiers! Thank you for sharing this journey!\",\n \"Name\" => \"x2_1a8eb4e\",\n \"Views\" => 9774,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T17:16:53Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27847502\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a8eb4e\",\n \"Id\" => 27847502,\n \"UploadDate\" => 1276881413,\n \"TinyAlias\" => \"27847502\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a8eb4e\",\n \"GdAlias\" => \"27847502\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a8eb4e\",\n \"CommentCount\" => 75,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a8eb4e\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 27\n },\n [16] {\n \"Message\" => \"How can you not love the people of this city...? The courage! The sacrifice! \",\n \"Name\" => \"x2_1a7ebaa\",\n \"Views\" => 8682,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T06:52:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27782058\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a7ebaa\",\n \"Id\" => 27782058,\n \"UploadDate\" => 1276843937,\n \"TinyAlias\" => \"27782058\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a7ebaa\",\n \"GdAlias\" => \"27782058\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a7ebaa\",\n \"CommentCount\" => 46,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a7ebaa\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 19\n },\n [17] {\n \"Message\" => \"Pride! \",\n \"Name\" => \"x2_1a168de\",\n \"Views\" => 11301,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-15T16:14:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27355358\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a168de\",\n \"Id\" => 27355358,\n \"UploadDate\" => 1276618446,\n \"TinyAlias\" => \"27355358\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a168de\",\n \"GdAlias\" => \"27355358\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a168de\",\n \"CommentCount\" => 92,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a168de\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 38\n },\n [18] {\n \"Message\" => \"Join us... \",\n \"Name\" => \"x2_1a09b3c\",\n \"Views\" => 10183,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-15T05:38:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27302716\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a09b3c\",\n \"Id\" => 27302716,\n \"UploadDate\" => 1276580317,\n \"TinyAlias\" => \"27302716\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a09b3c\",\n \"GdAlias\" => \"27302716\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a09b3c\",\n \"CommentCount\" => 110,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a09b3c\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 17\n },\n [19] {\n \"Message\" => \"Actually... This might be pretty damn great too!!!!!!!!!!!! New AVATARS anyone??????????? Let's REP THIS!!!!!!!!!!!\",\n \"Name\" => \"x2_19e6f04\",\n \"Views\" => 15385,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T05:02:11Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27160324\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6f04\",\n \"Id\" => 27160324,\n \"UploadDate\" => 1276491731,\n \"TinyAlias\" => \"27160324\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6f04\",\n \"GdAlias\" => \"27160324\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6f04\",\n \"CommentCount\" => 74,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6f04\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 29\n },\n [20] {\n \"Message\" => \"What could be better than that? \",\n \"Name\" => \"x2_19e6cdc\",\n \"Views\" => 17058,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:56:39Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159772\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6cdc\",\n \"Id\" => 27159772,\n \"UploadDate\" => 1276491399,\n \"TinyAlias\" => \"27159772\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6cdc\",\n \"GdAlias\" => \"27159772\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6cdc\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6cdc\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 23\n },\n [21] {\n \"Message\" => \"And we got family! \",\n \"Name\" => \"x2_19e6c52\",\n \"Views\" => 16386,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:55:12Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159634\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6c52\",\n \"Id\" => 27159634,\n \"UploadDate\" => 1276491312,\n \"TinyAlias\" => \"27159634\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6c52\",\n \"GdAlias\" => \"27159634\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6c52\",\n \"CommentCount\" => 43,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6c52\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 32\n },\n [22] {\n \"Message\" => \"But we got Soldiers... \",\n \"Name\" => \"x2_19e6bf7\",\n \"Views\" => 16027,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:54:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159543\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6bf7\",\n \"Id\" => 27159543,\n \"UploadDate\" => 1276491246,\n \"TinyAlias\" => \"27159543\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6bf7\",\n \"GdAlias\" => \"27159543\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6bf7\",\n \"CommentCount\" => 44,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6bf7\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 30\n },\n [23] {\n \"Message\" => \"We aint got no Grammy's... \",\n \"Name\" => \"x2_19e6b13\",\n \"Views\" => 14835,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:51:43Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159315\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6b13\",\n \"Id\" => 27159315,\n \"UploadDate\" => 1276491103,\n \"TinyAlias\" => \"27159315\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6b13\",\n \"GdAlias\" => \"27159315\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6b13\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6b13\",\n \"UnLikedVotes\" => 6,\n \"LikedVotes\" => 17\n },\n [24] {\n \"Message\" => \"We aint got no Oscars... \",\n \"Name\" => \"x2_19e6aa4\",\n \"Views\" => 12038,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:50:25Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159204\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6aa4\",\n \"Id\" => 27159204,\n \"UploadDate\" => 1276491025,\n \"TinyAlias\" => \"27159204\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6aa4\",\n \"GdAlias\" => \"27159204\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6aa4\",\n \"CommentCount\" => 47,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6aa4\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 25\n },\n [25] {\n \"Message\" => \"I'm not alone tonight.... We had to bring in the good luck charm!!!!!!!!\",\n \"Name\" => \"x2_19df1bc\",\n \"Views\" => 14305,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T00:32:32Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27128252\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19df1bc\",\n \"Id\" => 27128252,\n \"UploadDate\" => 1276475552,\n \"TinyAlias\" => \"27128252\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19df1bc\",\n \"GdAlias\" => \"27128252\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19df1bc\",\n \"CommentCount\" => 137,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19df1bc\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 38\n },\n [26] {\n \"Message\" => \"LET'S GO CELTICS!\",\n \"Name\" => \"x2_19de535\",\n \"Views\" => 12191,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T00:08:48Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27125045\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19de535\",\n \"Id\" => 27125045,\n \"UploadDate\" => 1276474128,\n \"TinyAlias\" => \"27125045\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19de535\",\n \"GdAlias\" => \"27125045\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19de535\",\n \"CommentCount\" => 109,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19de535\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 52\n },\n [27] {\n \"Message\" => \"Today... We show love to our city! Our town! Our home! The place that taught us to walk, fall, talk and soar! Yup\",\n \"Name\" => \"x2_19cb230\",\n \"Views\" => 11024,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-13T14:53:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27046448\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19cb230\",\n \"Id\" => 27046448,\n \"UploadDate\" => 1276440810,\n \"TinyAlias\" => \"27046448\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19cb230\",\n \"GdAlias\" => \"27046448\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19cb230\",\n \"CommentCount\" => 176,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19cb230\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 52\n },\n [28] {\n \"Message\" => \"Thanks BluePhoenix!!!!!!!! Love you!\",\n \"Name\" => \"x2_19b0671\",\n \"Views\" => 12875,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-12T23:13:53Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26936945\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19b0671\",\n \"Id\" => 26936945,\n \"UploadDate\" => 1276384433,\n \"TinyAlias\" => \"26936945\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19b0671\",\n \"GdAlias\" => \"26936945\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19b0671\",\n \"CommentCount\" => 20,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19b0671\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 9\n },\n [29] {\n \"Message\" => \"Love it!\",\n \"Name\" => \"x2_19afd10\",\n \"Views\" => 10314,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-12T22:59:23Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26934544\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19afd10\",\n \"Id\" => 26934544,\n \"UploadDate\" => 1276383563,\n \"TinyAlias\" => \"26934544\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19afd10\",\n \"GdAlias\" => \"26934544\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19afd10\",\n \"CommentCount\" => 63,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19afd10\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 12\n },\n [30] {\n \"Message\" => \"Spent a few moments with a LEGEND!!!! Team Jordan indeed! \",\n \"Name\" => \"x2_198fde6\",\n \"Views\" => 13268,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-12T06:40:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26803686\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_198fde6\",\n \"Id\" => 26803686,\n \"UploadDate\" => 1276324814,\n \"TinyAlias\" => \"26803686\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_198fde6\",\n \"GdAlias\" => \"26803686\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_198fde6\",\n \"CommentCount\" => 226,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_198fde6\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 72\n },\n [31] {\n \"Message\" => \"High *er* Rollers last night! Good times! \",\n \"Name\" => \"x2_1979c02\",\n \"Views\" => 14075,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-11T19:59:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26713090\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1979c02\",\n \"Id\" => 26713090,\n \"UploadDate\" => 1276286344,\n \"TinyAlias\" => \"26713090\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1979c02\",\n \"GdAlias\" => \"26713090\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1979c02\",\n \"CommentCount\" => 234,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1979c02\",\n \"UnLikedVotes\" => 3,\n \"LikedVotes\" => 58\n },\n [32] {\n \"Message\" => \"Anybody wanna get up in my snuggie with me...?\",\n \"Name\" => \"x2_195ed12\",\n \"Views\" => 13959,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-11T03:57:46Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26602770\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_195ed12\",\n \"Id\" => 26602770,\n \"UploadDate\" => 1276228666,\n \"TinyAlias\" => \"26602770\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_195ed12\",\n \"GdAlias\" => \"26602770\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_195ed12\",\n \"CommentCount\" => 245,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_195ed12\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 78\n },\n [33] {\n \"Message\" => \"Ignore the crazy eye and focus on the hat... Congrats to The Blackhawks!!!!! CHI-TOWN!!!!!!!!!!!!!!!!!!!!\",\n \"Name\" => \"x2_19387c3\",\n \"Views\" => 14449,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-10T04:27:41Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26445763\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19387c3\",\n \"Id\" => 26445763,\n \"UploadDate\" => 1276144061,\n \"TinyAlias\" => \"26445763\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19387c3\",\n \"GdAlias\" => \"26445763\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19387c3\",\n \"CommentCount\" => 111,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19387c3\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 45\n },\n [34] {\n \"Message\" => \"Great sign! Great girls! Great moment! Great memory! Yup!\",\n \"Name\" => \"x2_1934dad\",\n \"Views\" => 10261,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-10T02:26:13Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26430893\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1934dad\",\n \"Id\" => 26430893,\n \"UploadDate\" => 1276136773,\n \"TinyAlias\" => \"26430893\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1934dad\",\n \"GdAlias\" => \"26430893\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1934dad\",\n \"CommentCount\" => 30,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1934dad\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 11\n },\n [35] {\n \"Message\" => \"Bumped into one of my favorite follows... @anettskee after the game! She was in town to see BSB and found an NKOTB!\",\n \"Name\" => \"x2_1919b08\",\n \"Views\" => 10323,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-09T06:22:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26319624\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1919b08\",\n \"Id\" => 26319624,\n \"UploadDate\" => 1276064575,\n \"TinyAlias\" => \"26319624\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1919b08\",\n \"GdAlias\" => \"26319624\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1919b08\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1919b08\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 9\n },\n [36] {\n \"Message\" => \"BOSTON! Its almost time... \",\n \"Name\" => \"x2_190ea66\",\n \"Views\" => 11680,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-08T23:42:24Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26274406\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_190ea66\",\n \"Id\" => 26274406,\n \"UploadDate\" => 1276040544,\n \"TinyAlias\" => \"26274406\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_190ea66\",\n \"GdAlias\" => \"26274406\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_190ea66\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_190ea66\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 15\n },\n [37] {\n \"Message\" => \"If you don't know what \\\"Alma Nove\\\" stands for... This should help! (Bottom right corner is my 1/9th of the team). \",\n \"Name\" => \"x2_190d461\",\n \"Views\" => 10837,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-08T22:58:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26268769\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_190d461\",\n \"Id\" => 26268769,\n \"UploadDate\" => 1276037894,\n \"TinyAlias\" => \"26268769\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_190d461\",\n \"GdAlias\" => \"26268769\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_190d461\",\n \"CommentCount\" => 108,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_190d461\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 31\n },\n [38] {\n \"Message\" => \"If you go through MA and you haven't been to Alma Nove yet... WOW! Nothing for nothing... My brother is the truth! \",\n \"Name\" => \"x2_190d18f\",\n \"Views\" => 8160,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-08T22:52:52Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26268047\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_190d18f\",\n \"Id\" => 26268047,\n \"UploadDate\" => 1276037572,\n \"TinyAlias\" => \"26268047\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_190d18f\",\n \"GdAlias\" => \"26268047\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_190d18f\",\n \"CommentCount\" => 43,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_190d18f\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 15\n },\n [39] {\n \"Message\" => \"All tied up @snoopdogg... BACK TO BOSTON!!!!!!\",\n \"Name\" => \"x2_18d0fba\",\n \"Views\" => 8711,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-07T02:56:01Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26021818\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18d0fba\",\n \"Id\" => 26021818,\n \"UploadDate\" => 1275879361,\n \"TinyAlias\" => \"26021818\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18d0fba\",\n \"GdAlias\" => \"26021818\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18d0fba\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18d0fba\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 33\n },\n [40] {\n \"Message\" => \"Its true... KG did lose a step... FOR ONE GAME!!! TONIGHT The Big Ticket hits back! Get in their A** tonight KG! \",\n \"Name\" => \"x2_18ca8b9\",\n \"Views\" => 8454,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-06T23:41:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25995449\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18ca8b9\",\n \"Id\" => 25995449,\n \"UploadDate\" => 1275867664,\n \"TinyAlias\" => \"25995449\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18ca8b9\",\n \"GdAlias\" => \"25995449\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18ca8b9\",\n \"CommentCount\" => 16,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18ca8b9\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 8\n },\n [41] {\n \"Message\" => \"Humbling.\",\n \"Name\" => \"x2_189c263\",\n \"Views\" => 10976,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-05T23:54:40Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25805411\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_189c263\",\n \"Id\" => 25805411,\n \"UploadDate\" => 1275782080,\n \"TinyAlias\" => \"25805411\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_189c263\",\n \"GdAlias\" => \"25805411\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_189c263\",\n \"CommentCount\" => 58,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_189c263\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 14\n },\n [42] {\n \"Message\" => \"If you want it....\",\n \"Name\" => \"x2_188f6a2\",\n \"Views\" => 11262,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-05T18:50:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25753250\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_188f6a2\",\n \"Id\" => 25753250,\n \"UploadDate\" => 1275763806,\n \"TinyAlias\" => \"25753250\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_188f6a2\",\n \"GdAlias\" => \"25753250\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_188f6a2\",\n \"CommentCount\" => 80,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_188f6a2\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 28\n },\n [43] {\n \"Message\" => \"Me in 10 days!\",\n \"Name\" => \"x2_185c212\",\n \"Views\" => 15120,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T17:07:24Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25543186\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_185c212\",\n \"Id\" => 25543186,\n \"UploadDate\" => 1275671244,\n \"TinyAlias\" => \"25543186\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_185c212\",\n \"GdAlias\" => \"25543186\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_185c212\",\n \"CommentCount\" => 38,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_185c212\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 14\n },\n [44] {\n \"Message\" => \"Me tonight... \",\n \"Name\" => \"x2_185c15b\",\n \"Views\" => 14151,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T17:06:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25543003\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_185c15b\",\n \"Id\" => 25543003,\n \"UploadDate\" => 1275671174,\n \"TinyAlias\" => \"25543003\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_185c15b\",\n \"GdAlias\" => \"25543003\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_185c15b\",\n \"CommentCount\" => 97,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_185c15b\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 46\n },\n [45] {\n \"Message\" => \"Me last night... \",\n \"Name\" => \"x2_185c115\",\n \"Views\" => 10976,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T17:05:43Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25542933\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_185c115\",\n \"Id\" => 25542933,\n \"UploadDate\" => 1275671143,\n \"TinyAlias\" => \"25542933\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_185c115\",\n \"GdAlias\" => \"25542933\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_185c115\",\n \"CommentCount\" => 55,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_185c115\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 9\n },\n [46] {\n \"Message\" => \"Difference between LA and Boston... 10 empty seats at jump ball. Pathetic. \",\n \"Name\" => \"x2_18433ef\",\n \"Views\" => 12114,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T01:08:51Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25441263\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18433ef\",\n \"Id\" => 25441263,\n \"UploadDate\" => 1275613731,\n \"TinyAlias\" => \"25441263\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18433ef\",\n \"GdAlias\" => \"25441263\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18433ef\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18433ef\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 12\n },\n [47] {\n \"Message\" => \"This guy is all mixed up!\",\n \"Name\" => \"x2_18410d1\",\n \"Views\" => 12688,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T00:06:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25432273\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18410d1\",\n \"Id\" => 25432273,\n \"UploadDate\" => 1275609997,\n \"TinyAlias\" => \"25432273\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18410d1\",\n \"GdAlias\" => \"25432273\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18410d1\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18410d1\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 21\n },\n [48] {\n \"Message\" => \"MIXTAPE COVER!\",\n \"Name\" => \"x2_1840d5a\",\n \"Views\" => 9567,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T00:00:21Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25431386\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1840d5a\",\n \"Id\" => 25431386,\n \"UploadDate\" => 1275609621,\n \"TinyAlias\" => \"25431386\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1840d5a\",\n \"GdAlias\" => \"25431386\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1840d5a\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1840d5a\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 20\n },\n [49] {\n \"Message\" => \"And this...\",\n \"Name\" => \"x2_183546f\",\n \"Views\" => 10470,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-03T18:00:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25384047\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_183546f\",\n \"Id\" => 25384047,\n \"UploadDate\" => 1275588017,\n \"TinyAlias\" => \"25384047\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_183546f\",\n \"GdAlias\" => \"25384047\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_183546f\",\n \"CommentCount\" => 34,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_183546f\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n }\n]\n[\n [ 0] {\n \"Message\" => \"Thinking this may go down again!!!!\",\n \"Name\" => \"x2_1835195\",\n \"Views\" => 8444,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-03T17:54:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25383317\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1835195\",\n \"Id\" => 25383317,\n \"UploadDate\" => 1275587695,\n \"TinyAlias\" => \"25383317\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1835195\",\n \"GdAlias\" => \"25383317\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1835195\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1835195\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 27\n },\n [ 1] {\n \"Message\" => \"My man @snoopdogg may need to start rocking this type of gear in a week or so! GO CELTS!!!! \",\n \"Name\" => \"x2_1816d07\",\n \"Views\" => 7931,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-02T22:21:51Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25259271\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1816d07\",\n \"Id\" => 25259271,\n \"UploadDate\" => 1275517311,\n \"TinyAlias\" => \"25259271\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1816d07\",\n \"GdAlias\" => \"25259271\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1816d07\",\n \"CommentCount\" => 25,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1816d07\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 16\n },\n [ 2] {\n \"Message\" => \"Driving listening to my man @roscoeumalion The Laker Anthem! Proud of you my dude! Though its Celtics in 6!!!!! \",\n \"Name\" => \"x2_17f2b71\",\n \"Views\" => 8465,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-01T22:34:59Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25111409\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17f2b71\",\n \"Id\" => 25111409,\n \"UploadDate\" => 1275431699,\n \"TinyAlias\" => \"25111409\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17f2b71\",\n \"GdAlias\" => \"25111409\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17f2b71\",\n \"CommentCount\" => 75,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17f2b71\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 35\n },\n [ 3] {\n \"Message\" => \"DDUB and DDUBL.O.D. 34 years in the books! \",\n \"Name\" => \"x2_17ce8e2\",\n \"Views\" => 10224,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-31T21:52:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24963298\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17ce8e2\",\n \"Id\" => 24963298,\n \"UploadDate\" => 1275342767,\n \"TinyAlias\" => \"24963298\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17ce8e2\",\n \"GdAlias\" => \"24963298\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17ce8e2\",\n \"CommentCount\" => 86,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17ce8e2\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 50\n },\n [ 4] {\n \"Message\" => \"Left MIXX now at MUR\342\200\242MUR with the LEGEND @questlove in the booth!!!! No stopping us tonight!!!!! \",\n \"Name\" => \"x2_178b616\",\n \"Views\" => 12054,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-30T07:18:18Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24688150\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_178b616\",\n \"Id\" => 24688150,\n \"UploadDate\" => 1275203898,\n \"TinyAlias\" => \"24688150\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_178b616\",\n \"GdAlias\" => \"24688150\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_178b616\",\n \"CommentCount\" => 35,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_178b616\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 20\n },\n [ 5] {\n \"Message\" => \"Good Times.... \",\n \"Name\" => \"x2_1779b6a\",\n \"Views\" => 11923,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T23:23:10Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24615786\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1779b6a\",\n \"Id\" => 24615786,\n \"UploadDate\" => 1275175390,\n \"TinyAlias\" => \"24615786\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1779b6a\",\n \"GdAlias\" => \"24615786\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1779b6a\",\n \"CommentCount\" => 39,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1779b6a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 36\n },\n [ 6] {\n \"Message\" => \"To The Philipines!!!!!!\",\n \"Name\" => \"x2_17766f1\",\n \"Views\" => 11232,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T22:03:24Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24602353\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17766f1\",\n \"Id\" => 24602353,\n \"UploadDate\" => 1275170604,\n \"TinyAlias\" => \"24602353\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17766f1\",\n \"GdAlias\" => \"24602353\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17766f1\",\n \"CommentCount\" => 25,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17766f1\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 7\n },\n [ 7] {\n \"Message\" => \"From the Bean...\",\n \"Name\" => \"x2_1776016\",\n \"Views\" => 9502,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T21:53:41Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24600598\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1776016\",\n \"Id\" => 24600598,\n \"UploadDate\" => 1275170021,\n \"TinyAlias\" => \"24600598\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1776016\",\n \"GdAlias\" => \"24600598\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1776016\",\n \"CommentCount\" => 21,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1776016\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 10\n },\n [ 8] {\n \"Message\" => \"This is how it goes down in The Bean!!!!!! \",\n \"Name\" => \"x2_176fd4a\",\n \"Views\" => 9212,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T19:24:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24575306\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_176fd4a\",\n \"Id\" => 24575306,\n \"UploadDate\" => 1275161046,\n \"TinyAlias\" => \"24575306\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_176fd4a\",\n \"GdAlias\" => \"24575306\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_176fd4a\",\n \"CommentCount\" => 25,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_176fd4a\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 11\n },\n [ 9] {\n \"Message\" => \"MIXX was CRAZY last night at BORGATA! Tonight its FREE with an NKOTB Ticket! GET HERE! Let's smash this tonight! \",\n \"Name\" => \"x2_17668d5\",\n \"Views\" => 7973,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T15:37:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24537301\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17668d5\",\n \"Id\" => 24537301,\n \"UploadDate\" => 1275147454,\n \"TinyAlias\" => \"24537301\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17668d5\",\n \"GdAlias\" => \"24537301\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17668d5\",\n \"CommentCount\" => 20,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17668d5\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 4\n },\n [10] {\n \"Message\" => \"Of the many Foxwood fans... These ones asked me to tweet their photo! Almost forgot!!! \",\n \"Name\" => \"x2_16e032c\",\n \"Views\" => 8547,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-26T03:59:57Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23986988\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16e032c\",\n \"Id\" => 23986988,\n \"UploadDate\" => 1274846397,\n \"TinyAlias\" => \"23986988\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16e032c\",\n \"GdAlias\" => \"23986988\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16e032c\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16e032c\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 12\n },\n [11] {\n \"Message\" => \"Wahlberg LOVIN' at the game! ;)\",\n \"Name\" => \"x2_16bea61\",\n \"Views\" => 15261,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-25T02:05:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23849569\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16bea61\",\n \"Id\" => 23849569,\n \"UploadDate\" => 1274753134,\n \"TinyAlias\" => \"23849569\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16bea61\",\n \"GdAlias\" => \"23849569\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16bea61\",\n \"CommentCount\" => 240,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16bea61\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 70\n },\n [12] {\n \"Message\" => \"Straight THUGGING at the game! ;)\",\n \"Name\" => \"x2_16be941\",\n \"Views\" => 14184,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-25T02:02:35Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23849281\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16be941\",\n \"Id\" => 23849281,\n \"UploadDate\" => 1274752955,\n \"TinyAlias\" => \"23849281\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16be941\",\n \"GdAlias\" => \"23849281\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16be941\",\n \"CommentCount\" => 86,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16be941\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 33\n },\n [13] {\n \"Message\" => \"With my older brother Chef Paul at the site of his new restaurant... ALMA NOVE! In HINGHAM MA! Opens in one WEEK!\",\n \"Name\" => \"x2_16b47b5\",\n \"Views\" => 11578,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-24T19:12:49Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23807925\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16b47b5\",\n \"Id\" => 23807925,\n \"UploadDate\" => 1274728369,\n \"TinyAlias\" => \"23807925\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16b47b5\",\n \"GdAlias\" => \"23807925\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16b47b5\",\n \"CommentCount\" => 207,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16b47b5\",\n \"UnLikedVotes\" => 3,\n \"LikedVotes\" => 51\n },\n [14] {\n \"Message\" => \"Anybody interested...?\",\n \"Name\" => \"x2_166f02d\",\n \"Views\" => 17671,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-22T20:28:42Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23523373\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_166f02d\",\n \"Id\" => 23523373,\n \"UploadDate\" => 1274560122,\n \"TinyAlias\" => \"23523373\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_166f02d\",\n \"GdAlias\" => \"23523373\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_166f02d\",\n \"CommentCount\" => 225,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_166f02d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 37\n },\n [15] {\n \"Message\" => \"The Legend returned last night! \",\n \"Name\" => \"x2_16690c3\",\n \"Views\" => 13460,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-22T17:47:43Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23498947\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16690c3\",\n \"Id\" => 23498947,\n \"UploadDate\" => 1274550463,\n \"TinyAlias\" => \"23498947\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16690c3\",\n \"GdAlias\" => \"23498947\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16690c3\",\n \"CommentCount\" => 171,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16690c3\",\n \"UnLikedVotes\" => 3,\n \"LikedVotes\" => 53\n },\n [16] {\n \"Message\" => \"Ladies... Don't lose your minds... Today is just one of those days... Me & a LEGEND!\",\n \"Name\" => \"x2_160f3a1\",\n \"Views\" => 13611,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-19T23:49:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23131041\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_160f3a1\",\n \"Id\" => 23131041,\n \"UploadDate\" => 1274312987,\n \"TinyAlias\" => \"23131041\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_160f3a1\",\n \"GdAlias\" => \"23131041\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_160f3a1\",\n \"CommentCount\" => 265,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_160f3a1\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 79\n },\n [17] {\n \"Message\" => \"My arms are open... SOMEBODY TWUG ME!\",\n \"Name\" => \"x2_15e0c1d\",\n \"Views\" => 12416,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-18T14:27:29Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22940701\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_15e0c1d\",\n \"Id\" => 22940701,\n \"UploadDate\" => 1274192849,\n \"TinyAlias\" => \"22940701\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_15e0c1d\",\n \"GdAlias\" => \"22940701\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_15e0c1d\",\n \"CommentCount\" => 173,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_15e0c1d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 29\n },\n [18] {\n \"Message\" => \"View from my bed... *sings* Shoes on the bed, Shoes on the bed!\",\n \"Name\" => \"x2_155f1d8\",\n \"Views\" => 19588,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T20:16:25Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22409688\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_155f1d8\",\n \"Id\" => 22409688,\n \"UploadDate\" => 1273868185,\n \"TinyAlias\" => \"22409688\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_155f1d8\",\n \"GdAlias\" => \"22409688\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_155f1d8\",\n \"CommentCount\" => 284,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_155f1d8\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 40\n },\n [19] {\n \"Message\" => \"View from my balcony... Jealous? \",\n \"Name\" => \"x2_155ee9f\",\n \"Views\" => 17974,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T20:10:01Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22408863\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_155ee9f\",\n \"Id\" => 22408863,\n \"UploadDate\" => 1273867801,\n \"TinyAlias\" => \"22408863\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_155ee9f\",\n \"GdAlias\" => \"22408863\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_155ee9f\",\n \"CommentCount\" => 223,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_155ee9f\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 38\n },\n [20] {\n \"Message\" => \"Okay... I'll say more!!!!!!!!\",\n \"Name\" => \"x2_15493ab\",\n \"Views\" => 17781,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T03:20:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22320043\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_15493ab\",\n \"Id\" => 22320043,\n \"UploadDate\" => 1273807204,\n \"TinyAlias\" => \"22320043\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_15493ab\",\n \"GdAlias\" => \"22320043\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_15493ab\",\n \"CommentCount\" => 69,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_15493ab\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n },\n [21] {\n \"Message\" => \"NUFF SAID!!!!!!!!\",\n \"Name\" => \"x2_1549351\",\n \"Views\" => 13534,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T03:19:05Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22319953\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1549351\",\n \"Id\" => 22319953,\n \"UploadDate\" => 1273807145,\n \"TinyAlias\" => \"22319953\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1549351\",\n \"GdAlias\" => \"22319953\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1549351\",\n \"CommentCount\" => 39,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1549351\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 12\n },\n [22] {\n \"Message\" => \"Ohhhhh South Beach!\",\n \"Name\" => \"x2_1540551\",\n \"Views\" => 11968,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T21:49:38Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22283601\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1540551\",\n \"Id\" => 22283601,\n \"UploadDate\" => 1273787378,\n \"TinyAlias\" => \"22283601\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1540551\",\n \"GdAlias\" => \"22283601\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1540551\",\n \"CommentCount\" => 76,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1540551\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 12\n },\n [23] {\n \"Message\" => \"In case there is any confusion about where the remaining pieces of my heart will be tonight.... GO CELTICS!\",\n \"Name\" => \"x2_153c7cf\",\n \"Views\" => 12481,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T19:25:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22267855\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_153c7cf\",\n \"Id\" => 22267855,\n \"UploadDate\" => 1273778714,\n \"TinyAlias\" => \"22267855\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_153c7cf\",\n \"GdAlias\" => \"22267855\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_153c7cf\",\n \"CommentCount\" => 94,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_153c7cf\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 37\n },\n [24] {\n \"Message\" => \"Empty... \",\n \"Name\" => \"x2_153c33a\",\n \"Views\" => 9193,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T19:13:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22266682\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_153c33a\",\n \"Id\" => 22266682,\n \"UploadDate\" => 1273778010,\n \"TinyAlias\" => \"22266682\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_153c33a\",\n \"GdAlias\" => \"22266682\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_153c33a\",\n \"CommentCount\" => 53,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_153c33a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 4\n },\n [25] {\n \"Message\" => \"Momma and baby soldiers too!!!!!!!!!!!!!!!!! Woooooo!!!!!!!\",\n \"Name\" => \"x2_152b49f\",\n \"Views\" => 11148,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:58:35Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22197407\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152b49f\",\n \"Id\" => 22197407,\n \"UploadDate\" => 1273726715,\n \"TinyAlias\" => \"22197407\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152b49f\",\n \"GdAlias\" => \"22197407\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152b49f\",\n \"CommentCount\" => 48,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152b49f\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 13\n },\n [26] {\n \"Message\" => \"How cool... The only thing good about security... SOLDIERS!\",\n \"Name\" => \"x2_152b244\",\n \"Views\" => 10638,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:51:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22196804\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152b244\",\n \"Id\" => 22196804,\n \"UploadDate\" => 1273726290,\n \"TinyAlias\" => \"22196804\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152b244\",\n \"GdAlias\" => \"22196804\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152b244\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152b244\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 12\n },\n [27] {\n \"Message\" => \"More soldiers on board!!!!!!!!!!! Maybe we will just start the party right now!!!!!!!!!!!\",\n \"Name\" => \"x2_152afd3\",\n \"Views\" => 9979,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:44:26Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22196179\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152afd3\",\n \"Id\" => 22196179,\n \"UploadDate\" => 1273725866,\n \"TinyAlias\" => \"22196179\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152afd3\",\n \"GdAlias\" => \"22196179\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152afd3\",\n \"CommentCount\" => 35,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152afd3\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 12\n },\n [28] {\n \"Message\" => \"DWAir is now boarding and I am not alone! Soldiers!!!!!!!!!\",\n \"Name\" => \"x2_152aae6\",\n \"Views\" => 7919,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:30:54Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22194918\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152aae6\",\n \"Id\" => 22194918,\n \"UploadDate\" => 1273725054,\n \"TinyAlias\" => \"22194918\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152aae6\",\n \"GdAlias\" => \"22194918\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152aae6\",\n \"CommentCount\" => 57,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152aae6\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 11\n },\n [29] {\n \"Message\" => \"How cool is this pic?!?! Rather... How cool is this chick?!?!?! Awesome! \",\n \"Name\" => \"x2_14ea2d3\",\n \"Views\" => 12761,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T23:55:25Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21930707\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14ea2d3\",\n \"Id\" => 21930707,\n \"UploadDate\" => 1273535725,\n \"TinyAlias\" => \"21930707\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14ea2d3\",\n \"GdAlias\" => \"21930707\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14ea2d3\",\n \"CommentCount\" => 82,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14ea2d3\",\n \"UnLikedVotes\" => 8,\n \"LikedVotes\" => 22\n },\n [30] {\n \"Message\" => \"ATTENTION! VERY IMPORTANT!! There has been a Tony Spallelli sighting!!!!!!!! He has come out of hiding! \",\n \"Name\" => \"x2_14ea062\",\n \"Views\" => 15633,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T23:48:50Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21930082\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14ea062\",\n \"Id\" => 21930082,\n \"UploadDate\" => 1273535330,\n \"TinyAlias\" => \"21930082\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14ea062\",\n \"GdAlias\" => \"21930082\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14ea062\",\n \"CommentCount\" => 171,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14ea062\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 34\n },\n [31] {\n \"Message\" => \"E Dubs grades of some of our performances from rehearsal... \",\n \"Name\" => \"x2_14e79ad\",\n \"Views\" => 11595,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T22:00:59Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21920173\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14e79ad\",\n \"Id\" => 21920173,\n \"UploadDate\" => 1273528859,\n \"TinyAlias\" => \"21920173\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14e79ad\",\n \"GdAlias\" => \"21920173\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14e79ad\",\n \"CommentCount\" => 188,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14e79ad\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 28\n },\n [32] {\n \"Message\" => \"Mental shot! \",\n \"Name\" => \"x2_14e1083\",\n \"Views\" => 11294,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T17:05:58Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21893251\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14e1083\",\n \"Id\" => 21893251,\n \"UploadDate\" => 1273511158,\n \"TinyAlias\" => \"21893251\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14e1083\",\n \"GdAlias\" => \"21893251\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14e1083\",\n \"CommentCount\" => 76,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14e1083\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 39\n },\n [33] {\n \"Message\" => \"@palmslasvegas\",\n \"Name\" => \"x2_149e534\",\n \"Views\" => 9345,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-08T22:05:56Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21620020\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_149e534\",\n \"Id\" => 21620020,\n \"UploadDate\" => 1273356356,\n \"TinyAlias\" => \"21620020\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_149e534\",\n \"GdAlias\" => \"21620020\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_149e534\",\n \"CommentCount\" => 77,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_149e534\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 54\n },\n [34] {\n \"Message\" => \"Come play!\",\n \"Name\" => \"x2_145df0d\",\n \"Views\" => 12324,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-07T01:51:08Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21356301\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_145df0d\",\n \"Id\" => 21356301,\n \"UploadDate\" => 1273197068,\n \"TinyAlias\" => \"21356301\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_145df0d\",\n \"GdAlias\" => \"21356301\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_145df0d\",\n \"CommentCount\" => 143,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_145df0d\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 22\n },\n [35] {\n \"Message\" => \"Jon Knight on stage. Waist down \",\n \"Name\" => \"x2_1459ac5\",\n \"Views\" => 13246,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T23:04:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21338821\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1459ac5\",\n \"Id\" => 21338821,\n \"UploadDate\" => 1273187087,\n \"TinyAlias\" => \"21338821\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1459ac5\",\n \"GdAlias\" => \"21338821\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1459ac5\",\n \"CommentCount\" => 115,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1459ac5\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 21\n },\n [36] {\n \"Message\" => \"The party is growing... @djcheapshot & @stageleft19 have joined the backstage work force!! BTW- still no new cholos!\",\n \"Name\" => \"x2_145232f\",\n \"Views\" => 12561,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T18:02:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21308207\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_145232f\",\n \"Id\" => 21308207,\n \"UploadDate\" => 1273168937,\n \"TinyAlias\" => \"21308207\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_145232f\",\n \"GdAlias\" => \"21308207\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_145232f\",\n \"CommentCount\" => 58,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_145232f\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 16\n },\n [37] {\n \"Message\" => \"Room service just showed up BACKSTAGE! Yum! Breakfast! Though Krunchy needs some cholo socks! \",\n \"Name\" => \"x2_1451e12\",\n \"Views\" => 10509,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T17:49:13Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21306898\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1451e12\",\n \"Id\" => 21306898,\n \"UploadDate\" => 1273168153,\n \"TinyAlias\" => \"21306898\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1451e12\",\n \"GdAlias\" => \"21306898\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1451e12\",\n \"CommentCount\" => 72,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1451e12\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 14\n },\n [38] {\n \"Message\" => \"Me and @krunchtastic, backstage, hard at work already! \",\n \"Name\" => \"x2_1451c53\",\n \"Views\" => 8449,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T17:45:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21306451\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1451c53\",\n \"Id\" => 21306451,\n \"UploadDate\" => 1273167904,\n \"TinyAlias\" => \"21306451\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1451c53\",\n \"GdAlias\" => \"21306451\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1451c53\",\n \"CommentCount\" => 71,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1451c53\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 17\n },\n [39] {\n \"Message\" => \"Its about to go down! GET HERE!\",\n \"Name\" => \"x2_14473f0\",\n \"Views\" => 6928,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T08:13:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21263344\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14473f0\",\n \"Id\" => 21263344,\n \"UploadDate\" => 1273133617,\n \"TinyAlias\" => \"21263344\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14473f0\",\n \"GdAlias\" => \"21263344\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14473f0\",\n \"CommentCount\" => 73,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14473f0\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 9\n },\n [40] {\n \"Message\" => \"The Cholo Socks have returned for a limited spring engagement! \",\n \"Name\" => \"x2_13e26e3\",\n \"Views\" => 11525,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-02T21:15:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20850403\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13e26e3\",\n \"Id\" => 20850403,\n \"UploadDate\" => 1272834937,\n \"TinyAlias\" => \"20850403\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13e26e3\",\n \"GdAlias\" => \"20850403\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13e26e3\",\n \"CommentCount\" => 142,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13e26e3\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 24\n },\n [41] {\n \"Message\" => \"THEY'RE BAAAAAAAACkK!!!! \",\n \"Name\" => \"x2_13e0c73\",\n \"Views\" => 11073,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-02T20:20:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20843635\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13e0c73\",\n \"Id\" => 20843635,\n \"UploadDate\" => 1272831614,\n \"TinyAlias\" => \"20843635\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13e0c73\",\n \"GdAlias\" => \"20843635\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13e0c73\",\n \"CommentCount\" => 171,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13e0c73\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 23\n },\n [42] {\n \"Message\" => \"Crunchy and I... Working it out!! \",\n \"Name\" => \"x2_13cd27a\",\n \"Views\" => 10008,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-02T05:35:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20763258\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13cd27a\",\n \"Id\" => 20763258,\n \"UploadDate\" => 1272778517,\n \"TinyAlias\" => \"20763258\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13cd27a\",\n \"GdAlias\" => \"20763258\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13cd27a\",\n \"CommentCount\" => 80,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13cd27a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 26\n },\n [43] {\n \"Message\" => \"Its a beautiful day.... Time to take it on! Back to work!\",\n \"Name\" => \"x2_13b5126\",\n \"Views\" => 9504,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-01T17:15:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20664614\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13b5126\",\n \"Id\" => 20664614,\n \"UploadDate\" => 1272734134,\n \"TinyAlias\" => \"20664614\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13b5126\",\n \"GdAlias\" => \"20664614\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13b5126\",\n \"CommentCount\" => 182,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13b5126\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 64\n },\n [44] {\n \"Message\" => \"Love is... Mi familia aka a warm blanket! \",\n \"Name\" => \"x2_13334fd\",\n \"Views\" => 12419,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-27T15:29:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20133117\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13334fd\",\n \"Id\" => 20133117,\n \"UploadDate\" => 1272382187,\n \"TinyAlias\" => \"20133117\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13334fd\",\n \"GdAlias\" => \"20133117\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13334fd\",\n \"CommentCount\" => 316,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13334fd\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 74\n },\n [45] {\n \"Message\" => \"Its fun being the special guest instead of the star! Good Luck Jimmy & the Filipino Kid Roscoe Umali! 2010 its on! \",\n \"Name\" => \"x2_13073b3\",\n \"Views\" => 14278,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-26T00:05:29Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19952563\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13073b3\",\n \"Id\" => 19952563,\n \"UploadDate\" => 1272240329,\n \"TinyAlias\" => \"19952563\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13073b3\",\n \"GdAlias\" => \"19952563\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13073b3\",\n \"CommentCount\" => 79,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13073b3\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 24\n },\n [46] {\n \"Message\" => \"While I may have gotten a touch of sun in Barbados.... That is not my hand. That would belong to the 617 Legend!\",\n \"Name\" => \"x2_1300e5d\",\n \"Views\" => 11053,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-25T20:23:49Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19926621\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1300e5d\",\n \"Id\" => 19926621,\n \"UploadDate\" => 1272227029,\n \"TinyAlias\" => \"19926621\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1300e5d\",\n \"GdAlias\" => \"19926621\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1300e5d\",\n \"CommentCount\" => 58,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1300e5d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 5\n },\n [47] {\n \"Message\" => \"DDub and \\\"The Commision\\\" are airborne! Miami first! \",\n \"Name\" => \"x2_12d57b1\",\n \"Views\" => 11786,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-24T18:08:44Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19748785\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_12d57b1\",\n \"Id\" => 19748785,\n \"UploadDate\" => 1272132524,\n \"TinyAlias\" => \"19748785\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_12d57b1\",\n \"GdAlias\" => \"19748785\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_12d57b1\",\n \"CommentCount\" => 68,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_12d57b1\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 26\n },\n [48] {\n \"Message\" => \"My row on the plane... Featuring JM, JK, and JRK! Anybody wanna borrow my seat for a bit???? ;)\",\n \"Name\" => \"x2_126ffc7\",\n \"Views\" => 18137,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-21T15:26:05Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19333063\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_126ffc7\",\n \"Id\" => 19333063,\n \"UploadDate\" => 1271863565,\n \"TinyAlias\" => \"19333063\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_126ffc7\",\n \"GdAlias\" => \"19333063\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_126ffc7\",\n \"CommentCount\" => 507,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_126ffc7\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 90\n },\n [49] {\n \"Message\" => \"Life's simple pleasures... I am standing in a long ass airport security line! I love it! \",\n \"Name\" => \"x2_126f49a\",\n \"Views\" => 16595,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-21T14:57:10Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19330202\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_126f49a\",\n \"Id\" => 19330202,\n \"UploadDate\" => 1271861830,\n \"TinyAlias\" => \"19330202\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_126f49a\",\n \"GdAlias\" => \"19330202\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_126f49a\",\n \"CommentCount\" => 194,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_126f49a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 44\n }\n]\n should get 50 photos\nThe Post class finding posts\n find_posts_for_site_list_action\n with normal params (neither tag nor search)\n should use correct per_page\n should use correct viewing user\n should page\n paginate_for_site\n should not include unpinged posts\n should not include unallowed posts\n should not include unconfirmed posts\n should page through posts\n should not lookup total entries for rss\n should normally include site, locations and poststags\n should include site, content_parts and user for rss\n with a nil viewing_user\n should not include private posts\n when paging should not include private posts in total entries\n with a viewing_user that does not own the site\n should not include private posts\n when paging should not include private posts in total entries\n with a viewing_user that owns the site\n should include private posts\n should include private posts in total entries count\n find_ids_first_for_offset\n with a limit offset\n should return identical results as find for {:offset=>25, :limit=>5}\n should return identical results as find for {:offset=>25, :limit=>5, :order=>\"display_date DESC\"}\n should return identical results as find for {:offset=>25, :limit=>5, :conditions=>\"id > 10\", :order=>\"id\"}\n should return identical results as find for {:offset=>25, :limit=>5, :conditions=>{:is_private=>true}}\n should return identical results as find for {:offset=>25, :limit=>5, :conditions=>{:is_private=>false}, :order=>\"display_date DESC\"}\n should return identical results as find for {:offset=>25, :include=>:user, :limit=>5, :conditions=>{:is_private=>false}, :order=>\"display_date DESC\"}\n without a limit offset\n should return identical results as find for {}\n should return identical results as find for {:order=>\"display_date DESC\"}\n should return identical results as find for {:order=>\"id\", :conditions=>\"id > 10\"}\n should return identical results as find for {:conditions=>{:is_private=>true}}\n should return identical results as find for {:order=>\"display_date DESC\", :conditions=>{:is_private=>false}}\n should return identical results as find for {:include=>:user, :order=>\"display_date DESC\", :conditions=>{:is_private=>false}}\n find_tagged_posts_for_site_by_page\n should return empty array for tag that doesn't exist\n should return empty array for a nonsense tag\n paginating\n should not include private posts w/o user\n should not include private posts given other user\n should include private posts given owning user\n paginate_favorite_links_for\n should find all favorites for same session user\n should find public favorites other session user\n should find public favorites no session user\nPosterous::ResourceRateLimiter\n Account Registration Limiting by IP address\n should return false after 10 registration attempts\n Specific example for API rate limiting\n should return false after DEFAULT_LIMIT posts on the same day\n should allow posts on next day after reaching limit\n should not let one users limit effect anothers\n should allow override of DEFAULT_LIMIT with number in user capabilities\n should allow all posts if memcached fails\nPosterous::Highlighter\n when supplied markdown\n #new\n should set the @body\n should detect the is_markdown?\n should set the @document\n #parse_code_block\n should strip out the code and language\n #highlight_code_block\n should highlight by language\n when supplied html\n #new\n should set the @body\n should detect the is_markdown?\n should set the @document\n #process_body!\n should process all code blocks\n when supplied plain markdown and forced\n #new\n should set the @body\n should detect the is_markdown?\n should set the @document\n #process_body!\n should process all code blocks\nSanitizer\n should alter or fix: <<<bad html to &lt;&lt;&lt;bad html\n should alter or fix: <<<bad html> to \n should alter or fix: <link rel='foo'/> to \n should alter or fix: I <3 you to I &lt;3 you\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <p id=\"foo\">bar</p> to <p>bar</p>\n should alter or fix: I\302\222ve never seen such to I've never seen such \n should alter or fix: <div style=\"position: to foo\n should alter or fix: <div style=\"z-index: to foo\n should alter or fix: <div style=\"backgroun to <div style=\"backgroun\n should alter or fix: <blockquote>foo</bloc to <blockquote class=\"po\n should alter or fix: <blockquote>foo foo f to <blockquote class=\"po\n should alter or fix: <span style=\"font-siz to <div style=\"font-size\n should alter or fix: <span style=\"font-siz to <span style=\"font-siz\n should alter or fix: <div apple-content-ed to <div style=\"font-fami\n should alter or fix: &lt;a href=\"foo\"&gt;T to <a href=\"foo\">Test</a\n should alter or fix: &lt;a href=\"<a href=\" to <a href=\"http://foo.c\n should alter or fix: &lt;a href=&quot;<a h to <a href=\"http://poste\n should alter or fix: &lt;a href=&quot;<a h to <a href=\"http://www.t\n should alter or fix: Hello world<br/><br/> to Hello world<p />secon\n should alter or fix: Hello world<br/><br/> to Hello world<p /><br /\n should alter or fix: <p>a</p><p>b</p><br/> to <p>a</p><p>b</p><p />\n should alter or fix: Things that are reall to Things that are reall\n should alter or fix: a<div><br></div>text< to a<p />text<p>a</p>\n should alter or fix: a<DIV><BR></DIV>text< to a<p />text<p>a</p>\n should alter or fix: a \n<div>\n <br> \n</div to a \n<p /> \ntext<p>a</p\n should alter or fix: a<div><br><br></div>t to a<p />text<p>a</p>\n should alter or fix: a<div><br>test</div>t to a<div><br />test</div\n should alter or fix: a<div>test<br>test</d to a<div>test<br />test<\n should alter or fix: a<div>&nbsp;</div>tex to a<p />text<p>a</p>\n should alter or fix: a \n<div>\n &nbsp; \n</d to a \n<p /> \ntext<p>a</p\n should alter or fix: a<div>&nbsp;&nbsp;</d to a<p />text<p>a</p>\n should alter or fix: a<div>&nbsp;test</div to a<div>&nbsp;test</div\n should alter or fix: a<div>test&nbsp;test< to a<div>test&nbsp;test<\n should alter or fix: <p>&nbsp;</p>foo<p>&n to <p>&nbsp;</p>foo<p>&n\n should alter or fix: <br/>foo<br/>test to foo<br />test\n should alter or fix: <p><br/></p>foo<p><br to foo\n should alter or fix: <p><br/></p>foo<p><br to foo<p><br /></p>bar\n should alter or fix: <br/> to \n should alter or fix: <p/> to \n should alter or fix: <span/> to \n should alter or fix: <span></span> to \n should alter or fix: <p><br><span></span>< to \n should alter or fix: A<p><br><span></span> to A<p><br /><span></spa\n should alter or fix: \n\n<div><br/> </div>fo to foo\n should alter or fix: foo\n\n<div><br/> </div to foo\n should alter or fix: <div>foo</div><div></ to <div>foo</div><p /><d\n should alter or fix: \r\n\r\n<p></p>\r\n\r\n<div c to \r\n<p>&nbsp;[[posterou\n should alter or fix: \r\n\r\n<p></p>\r\n\r\n<p></p to \r\n<p>&nbsp;[[posterou\n should alter or fix: <div class=\"Section1\" to \r\n<p>&nbsp;[[posterou\n should alter or fix: <div class=\"Section1\" to \r\n<p>&nbsp;[[posterou\n should alter or fix: <div class=\"Section1\" to \r\n<p>foo</p>\r\n\r\n should alter or fix: <div>foo</div> to foo\n should alter or fix: \n<div>foo</div>\n to \nfoo\n should alter or fix: \n<div>foo</div><div>b to <div>foo</div><div>ba\n should alter or fix: <br><br><br><br>foo to foo\n should alter or fix: foo<br><br><br><br> to foo\n should alter or fix: foo<br><br><br><br>ba to foo<p /><p />bar\n should alter or fix: <div>foo</div><div>ba to <div>foo</div><div>ba\n should alter or fix: <div class=\"posterous to <div class=\"posterous\n should alter or fix: <object width=\"640\" h to <object height=\"394\" \n should alter or fix: http://www.youtube.co to <object height=\"417\" \n should alter or fix: <table width='600'><t to <table><tr><td>foo</t\n should alter or fix: <table width='50%'><t to <table><tr><td>foo</t\n should alter or fix: <a href=\"http://www.y to <object height=\"417\" \n should alter or fix: <p>http://www.youtube to <p><object height=\"41\n should alter or fix: <p>I don't EXPAND you to <p>I don't EXPAND you\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <a href=\"javascript:a to <a>test</a>\n should alter or fix: <script>alert('bad'); to \n should alter or fix: <SCRIPT SRC=http://ha to \n should alter or fix: <IMG SRC=\"javascript: to <img />\n should alter or fix: <IMG\nSRC\n=\n\"\nj\na\nv\na\n to <img />\n should alter or fix: <p>foo</p></div> to <p>foo</p>\n should alter or fix: <p>foo</div> to <p>foo</p>\n should alter or fix: <p>foo</div></p> to <p>foo</p>\n should alter or fix: foo</p> to foo\n should alter or fix: <p><span><p><span>foo to <p><span><p><span>foo\n should alter or fix: <p>foo to <p>foo</p>\n should alter or fix: <b>foo to <b>foo</b>\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <img src=\"http://foo. to <img src=\"http://foo.\n should alter or fix: <p style='font-family to <p style=\"font-family\n should alter or fix: <p style='font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"\">foo</p>\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"\">foo</p> to <p style=\"\">foo</p>\n should alter or fix: \n <iframe wi to <iframe src=\"http://m\n should alter or fix: \n <object widt to <object height=\"394\" \n should alter or fix: \n <object width= to <object height=\"300\" \n should alter or fix: <!DOCTYPE HTML PUBLIC to A<p />B<p />C\n should alter or fix: blargh<div><span clas to blargh<p />foo\n should alter or fix: blargh<div><span clas to blargh<p />foo\n should alter or fix: <p>blargh</p><div><sp to <p>blargh</p><p />foo\n should alter or fix: <p>blargh</p><div><sp to <p>blargh</p><p />foo\n should alter or fix: <META HTTP-EQUIV=\"Con to \n should alter or fix: <!--[if !mso]>\n to \n should alter or fix: <link rel=File-List h to \n should alter or fix: <script language=\"jav to <script language=\"jav\n should alter or fix: <link href=\"/styleshe to <link href=\"/styleshe\n should alter or fix: <script src=\"http://g to <script src=\"http://g\n should be special case for bad word 12\n should properly remove enclosing items for <div><div><div>foo</d\n should properly remove enclosing items for <div><div style=\"\"><d\n should properly remove enclosing items for <div><div class=\"foo\"\n should properly remove enclosing items for <div><div><p style=\"f\n should properly remove enclosing items for <div><div><div style=\n should properly remove enclosing items for foo<p />bar\n should preprocess correctly for <span><div>foo</div><\n should preprocess correctly for <div><span><div>foo</\n should preprocess correctly for <div><span><div><span\n should sanitize css correctly for margin-right: 0px; ma\n should sanitize css correctly for margin-right: 0px; ma\n should sanitize css correctly for margin-top: 0px !impo\n Absolutizing Links\n should absolutize <a href=\"#bar\">bar</a> \n should absolutize <a href=\"/bar\">bar</a> \n should absolutize <a href=\"/bar/baf\">bar</a> \n should absolutize <a href=\"bar/baf\">bar</a> \n should absolutize <a href=\"?foo=bar\">bar</a> \n should absolutize <a href=\"/bar/baf/#boo\">bar</a> \n should absolutize <img src=\"../baf/#boo\">bar \n Autolinking\n should autolink http://foo.com\n should autolink http://bugs.mysql.com/bug.php?id=20773&dfjzidfioszjoijoejoifjaweoia=weijfz8jf8jjr893jfzjd8jf98e=ze8f38jf83w\n should autolink http://www.youtube.com/watch?v=irSklXqsXBo#t=0m_-40s\n These things should pass through untouched\n should not touch: Some text\n should not touch: [code]\nfoo\n[/code]\n should not touch: [code]\nhttp://foo.com\n should not touch: A <a href=\"http://foo\n should not touch: <table><tr><td>Hello<\n should not touch: <b>foo</b>\n should not touch: <img src='http://foo.\n should not touch: <div align='right'>fo\n should not touch: <a href='http://foo.c\n should not touch: <hr/>\n should not touch: <em>foo</em>\n should not touch: <map name=\"follow_us_\n should not touch: <a href=\"http://pixel\n should not touch: <a href=\"mailto:bar@f\n should not touch: <a href=\"itpc://garry\n should not touch: <blockquote class=\"po\n should not touch: <blockquote class=\"po\n should not touch: <img src=\"http://foo.\n should not touch: <blockquote class=\"po\n should not touch: <blockquote class=\"po\n should not touch: \"<object><param name=\n should not touch: <a href=\"http://media\n should not touch: \n <div class\n should not touch: <object width=\"450\" h\n should not touch: \n <form acti\n should not touch: <object classid=\"clsi\n should not touch: <div style=\"font-size\n should not touch: <center>centered text\n should not touch: <embed src=\"http://ww\n Kill bad tags and contents\n should kill tag and contents: head\n should kill tag and contents: applet\n should kill tag and contents: style\n should kill tag and contents: frame\n should kill tag and contents: frameset\n should kill tag and contents: ilayer\n should kill tag and contents: layer\n should kill tag and contents: bgsound\n should kill tag and contents: title\n should kill tag and contents: xml\n HTML comment handling\n should get rid of HTML comments like <!-- Hello -->\n should get rid of HTML comments like <! -- Hello -->\n should get rid of HTML comments like < !-- Hello -->\n should get rid of random closed comment\n should allow more comments\n Segment whitelist/blacklist\n should whitelist scripts\n should dewhitelist a script\n should whitelist a medium difficulty example\n should whitelist/dewhitelist an extreme example\nNotification\n should call comments delegate from async method call\n should send a notifiable for a comment to a user\n should send multiple notifiables for a comment to a multi-user site with 5 contributors\n should send notifiable to previous commenter\n should properly call mail robot from send_notifiable_for_user\n should send notifiable to previous commenter for anonymous commenters\n should get delayed notifications for comments\n should call favorites delegate from async method call\n should send a notifiable for a favorite to a user\n should properly call mail robot from send_notifiable_for_user for a favorite\n should get delayed notifications for favorites\n should call subscription delegate from async method call\n should send a notifiable for a subscription to a user\n should properly call mail robot from send_notifiable_for_user for a subscription\n should get delayed notifications for subscription\n post moderation\n should call moderate_post delegate from async method call\n should send a notifiable for a moderate_post to a user\n should properly call mail robot from send_notifiable_for_user for a moderate_post\n should get delayed notifications for moderate_post\n comment moderation\n should call moderate_comment delegate from async method call\n should send a notifiable for a moderate_post to a user\n should properly call mail robot from send_notifiable_for_user for a moderate_post\n should get delayed notifications for moderate_post\n new post notifications for contributors\n should send a new post notification for a site with contributors\n should not send a post notification for a site with contributors\nModerateController\n Comment moderation\n with a user logged in\n should list comments to be moderated\n should list comments to be moderated via ajax\n should return 20 comments and no more link\n should show more if there are more than 20 comments\n should paginate via date\n should approve a comment\n should whitelist a commenter\n should ban a commenter\n should reject all comments\n should approve all comments\n should list comment permissions\n should remove ban for commenter\n should remove whitelist for commenter\n with an unauthorized user logged in\n should not approve a comment\n should not whitelist a commenter\n should not ban a commenter\n should not reject all comments\n should not approve all comments\n should not list comment permissions\n should not remove ban for commenter\n should not remove whitelist for commenter\nLocation\n should return gmap_zoom based on precision\n should create a geolookup delayed job on create\n should not create a delayed job on save\n being validated\n should require a lat\n should require a lng\n looking up geo data\n should store address data and save with lookup!\n generating formatted lat/lng\n should display 12.23,12.55 as 12\302\26013'N, 12\302\26033'E\n should display -12.23,-12.55 as 12\302\26013'S, 12\302\26033'W\n should display -88.435,70.99 as 88\302\26026'S, 70\302\26059'E\n generating a summary\n should include city and state when available for US\n should include country name outside of the use\n should indicate state w/o city in US\n should include state and country for country outside US\n should include country if only given country\n should indicate latitude and longitude w/o other data\nPagesController\n when authorized\n #edit\n should have a site\n should be success\n when unauthorized\n #edit\n should not be able to access edit\n should set the flash on edit\n #update\n should not be able to access update\n should set the flash on update\n #create\n should not be able to access create\n should set the flash on create\n #new\n should not be able to access new\n should set the flash on new\n #destroy\n should not be able to access destroy\n should set the flash on destroy\nSite\n an instance\n should set and get dont_show_locations with show_locations\n should set and get dont_show_locations via show_locations with string\n Creating a new site for new user (e.g., from register action)\n should create a new site from a new user\n being validated\n should require a hostname\n should not allow hostnames with underscores\n should not allow hostnames that start or end w/ hyphens\n should not be valid with new underscored hostname\n should be valid w/ existing hostnames w/ underscores\n should require a unique hostname\n should require a unique hostname ingnoring case\nfalse\n should require a unique virtual host ignoring case\n should validate virtual host is valid domain\n should not be valid unless both FB API/Secret keys are either blank or non-blank for custom domains\n should not allow virtual hosts that contain posterous.com\n should not allow abc.posterous.com\n should not allow posterous.com\n should allow allaboutposterous.com\n comment permission\n should have constants\n should have predicates and allow setting via symbol\n ratings and flagging\n should have contstants for rating\n should have predicates and allow setting via symbol\n should change rating and update with flag_as_general_audience!\n should change rating and update with flag_as_pg13!\n should change rating and update with flag_as_adult!\n feedburner\n should require a valid feedburner_id\n should strip http part off feedburner URL\n should convert feedburner_id to alt_feed_url on save\n should not populate alt_feed_url w/o feedburner_id\n should return feedburner id based on alt_feed_url\n should return updated feedburner id even if alt_feed_url exists\n should return nil feedburner_id\n should allow nilling out of alt_feed_url via blank feedburner_id\n should not destroy non feedburner alt_feed_url if feedburner_id set to blank\n should not error setting feedburner_id to nil w/o alt_feed_url\n site notifications\n should remove notifications when a site is banned\n should recreate notifications when a site is unbanned\n should remove notifications when a site is destroyed\n showable flag\n should be showable if nil user\n should not be showable if unconfirmed email\n should not be showable if site is banned\n should be showable again if site is banned and unbanned\n should be showable for default user\n should be showable if email becomes confirmed\n generating full hostname\n should use posterous subdomain for nil or empty virtual_host\n should use virtual_host if it exists\n finding subscribers\n should order by subscription id\n should paginate subscribers\n should not include unshowable users\n should not include adult\n should not count total given flag\n getting retrieved for twitter credentials\n should raise error given bad creds\n should create a new extenal site and site given valid creds\n should lookup existing site and external site w/ valid creds\n should resolve to the group site for twitter site w/ a group site\n creating a site for a twitter external site\n should create a new site with the username in the hostname and sharing enabled\nApi2Controller\n upload endpoint\n should reject GET requests\n should be agnostic to http or https for uploading - testing: http\n should be agnostic to http or https for uploading - testing: https\n Verifying OAuth Headers\n Verifying X_AUTH_SERVICE_PROVIDER header\n should verify the presence of an X_AUTH_SERVICE_PROVIDER header\n should verify that the X_AUTH_SERVICE_PROVIDER points to twitter\n Verifying X_VERIFY_CREDENTIALS_AUTHORIZATION header\n should complain if the credentials header is completely missing\n should complain vigorously if any of the credential params are missing - oauth_consumer_key\n should complain vigorously if any of the credential params are missing - oauth_signature_method\n should complain vigorously if any of the credential params are missing - oauth_token\n should complain vigorously if any of the credential params are missing - oauth_timestamp\n should complain vigorously if any of the credential params are missing - oauth_nonce\n should complain vigorously if any of the credential params are missing - oauth_version\n should complain vigorously if any of the credential params are missing - oauth_signature\n Uploading after passing twitter verification\n should return twitpic 'created response' if the correct twitter auth and text is passed in\n should set the via_type of the post to via_twitter_api\n should set the via_text to the passed in source field\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should return an error of type 1003 'Invalid media type' and send email if two invalid photos were sent\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-1.jpg' @ jpeg.c/EmitMessage/233.\n should return no errors and discard one image and send email if one broken and one correct image was sent.\nExtTwitterBasic\n should allow you to query by twitter_id\n finding or being created from twitter\n should not create a new external site given invalid twitter creds\n with valid twitter creds\n should find an existing site given twitter valid creds\n should create a new external site given valid twitter creds\n With Twitter OAuth Echo\n should find an existing site given an existing twitter name\n should create a new external site from a username\nRouting\n for posterous.com and www.posterous.com\n (posterous.com)\n should route / to {:controller=>\"main\", :action=>\"index\"}\n should route /confirmemail/adfssdaf to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"adfssdaf\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /loginstring/adfssdaf to {:controller=>\"main\", :action=>\"loginstring\", :hash=>\"adfssdaf\"}\n should route /getfile/files.posterous.com/abcdef/abc.jpg to {:controller=>\"getfile\", :action=>\"index\", :key=>\"abcdef/abc.jpg\", :bucket=>\"files.posterous.com\"}\n should route /privacy to {:controller=>\"main\", :action=>\"privacy\"}\n should route /tos to {:controller=>\"main\", :action=>\"tos\"}\n should route /about to {:controller=>\"main\", :action=>\"about\"}\n should route /faq to {:controller=>\"main\", :action=>\"faq\"}\n should route /facebook_tab to {:controller=>\"posts\", :action=>\"list\"}\n should route /post/textmarks to {:controller=>\"posts\", :action=>\"textmarks\"}\n should route /admin to {:controller=>\"admin\", :action=>\"index\"}\n should route /admin/posts to {:controller=>\"admin\", :action=>\"posts\"}\n should route /admin/debug/posts/1234 to {:controller=>\"admin\", :class=>\"posts\", :action=>\"debug_obj\", :id=>\"1234\"}\n should route /explore to {:controller=>\"explore\", :action=>\"index\"}\n should route /explore/tag/abc to {:controller=>\"explore\", :tag=>\"abc\", :action=>\"index\"}\n should route /share to {:controller=>\"share\", :action=>\"index\"}\n should route /autopost to {:controller=>\"autopost\", :action=>\"index\"}\n should route /autopost/editexternal to {:controller=>\"autopost\", :action=>\"editexternal\"}\n should route /autopost/editexternal/5 to {:controller=>\"autopost\", :action=>\"editexternal\", :id=>\"5\"}\n should route /reader to {:controller=>\"reader\", :action=>\"index\"}\n should route /reader/rss/4 to {:controller=>\"reader\", :action=>\"rss\", :id=>\"4\"}\n should route /people/edit/abc123 to {:controller=>\"people\", :action=>\"edit\", :id=>\"abc123\"}\n should route /people/subscriptions/abc123 to {:controller=>\"people\", :action=>\"subscriptions\", :id=>\"abc123\"}\n should route /people/abc123 to {:controller=>\"people\", :action=>\"index\", :id=>\"abc123\"}\n should route /confirmemail/abcd to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"abcd\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /editpost/abcded to {:controller=>\"posts\", :action=>\"editpost\", :hash=>\"abcded\"}\n should route /removepost/abcded to {:controller=>\"posts\", :action=>\"removepost\", :hash=>\"abcded\"}\n should route /remove/abcded to {:controller=>\"posts\", :action=>\"remove\", :hash=>\"abcded\"}\n should route /confirmpost/abcded to {:controller=>\"posts\", :action=>\"confirmpost\", :hash=>\"abcded\"}\n should route /pingcomment/abcd/123 to {:controller=>\"posts\", :commentid=>\"123\", :action=>\"pingcomment\", :hash=>\"abcd\"}\n should route /pingpost/abcd to {:controller=>\"posts\", :action=>\"pingpost\", :hash=>\"abcd\"}\n should route /picposterous to {:controller=>\"mobile\", :action=>\"picposterous\"}\n should route /api/upload to {:controller=>\"api\", :action=>\"upload\"}\n should route /api2/upload to {:controller=>\"api2\", :action=>\"upload\"}\n should route /api2/upload.json to {:controller=>\"api2\", :format=>\"json\", :action=>\"upload\"}\n should route /api2/upload.xml to {:controller=>\"api2\", :format=>\"xml\", :action=>\"upload\"}\n should route /sso/check.js to {:controller=>\"sso\", :format=>\"js\", :action=>\"check\"}\n should route /some-generic-sitename to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"list_redirect\"}\n should route /some-generic-sitename/rss to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/rss.xml to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/some-generic-slug to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"show_redirect\", :id=>\"some-generic-slug\"}\n should route /analytics/image/newsletter.gif?user_id=1234 to {:event=>\"newsletter\", :controller=>\"analytics\", :user_id=>\"1234\", :action=>\"image\"}\n (www.posterous.com)\n should route / to {:controller=>\"main\", :action=>\"index\"}\n should route /confirmemail/adfssdaf to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"adfssdaf\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /loginstring/adfssdaf to {:controller=>\"main\", :action=>\"loginstring\", :hash=>\"adfssdaf\"}\n should route /getfile/files.posterous.com/abcdef/abc.jpg to {:controller=>\"getfile\", :action=>\"index\", :key=>\"abcdef/abc.jpg\", :bucket=>\"files.posterous.com\"}\n should route /privacy to {:controller=>\"main\", :action=>\"privacy\"}\n should route /tos to {:controller=>\"main\", :action=>\"tos\"}\n should route /about to {:controller=>\"main\", :action=>\"about\"}\n should route /faq to {:controller=>\"main\", :action=>\"faq\"}\n should route /facebook_tab to {:controller=>\"posts\", :action=>\"list\"}\n should route /post/textmarks to {:controller=>\"posts\", :action=>\"textmarks\"}\n should route /admin to {:controller=>\"admin\", :action=>\"index\"}\n should route /admin/posts to {:controller=>\"admin\", :action=>\"posts\"}\n should route /admin/debug/posts/1234 to {:controller=>\"admin\", :class=>\"posts\", :action=>\"debug_obj\", :id=>\"1234\"}\n should route /explore to {:controller=>\"explore\", :action=>\"index\"}\n should route /explore/tag/abc to {:controller=>\"explore\", :tag=>\"abc\", :action=>\"index\"}\n should route /share to {:controller=>\"share\", :action=>\"index\"}\n should route /autopost to {:controller=>\"autopost\", :action=>\"index\"}\n should route /autopost/editexternal to {:controller=>\"autopost\", :action=>\"editexternal\"}\n should route /autopost/editexternal/5 to {:controller=>\"autopost\", :action=>\"editexternal\", :id=>\"5\"}\n should route /reader to {:controller=>\"reader\", :action=>\"index\"}\n should route /reader/rss/4 to {:controller=>\"reader\", :action=>\"rss\", :id=>\"4\"}\n should route /people/edit/abc123 to {:controller=>\"people\", :action=>\"edit\", :id=>\"abc123\"}\n should route /people/subscriptions/abc123 to {:controller=>\"people\", :action=>\"subscriptions\", :id=>\"abc123\"}\n should route /people/abc123 to {:controller=>\"people\", :action=>\"index\", :id=>\"abc123\"}\n should route /confirmemail/abcd to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"abcd\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /editpost/abcded to {:controller=>\"posts\", :action=>\"editpost\", :hash=>\"abcded\"}\n should route /removepost/abcded to {:controller=>\"posts\", :action=>\"removepost\", :hash=>\"abcded\"}\n should route /remove/abcded to {:controller=>\"posts\", :action=>\"remove\", :hash=>\"abcded\"}\n should route /confirmpost/abcded to {:controller=>\"posts\", :action=>\"confirmpost\", :hash=>\"abcded\"}\n should route /pingcomment/abcd/123 to {:controller=>\"posts\", :commentid=>\"123\", :action=>\"pingcomment\", :hash=>\"abcd\"}\n should route /pingpost/abcd to {:controller=>\"posts\", :action=>\"pingpost\", :hash=>\"abcd\"}\n should route /picposterous to {:controller=>\"mobile\", :action=>\"picposterous\"}\n should route /api/upload to {:controller=>\"api\", :action=>\"upload\"}\n should route /api2/upload to {:controller=>\"api2\", :action=>\"upload\"}\n should route /api2/upload.json to {:controller=>\"api2\", :format=>\"json\", :action=>\"upload\"}\n should route /api2/upload.xml to {:controller=>\"api2\", :format=>\"xml\", :action=>\"upload\"}\n should route /sso/check.js to {:controller=>\"sso\", :format=>\"js\", :action=>\"check\"}\n should route /some-generic-sitename to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"list_redirect\"}\n should route /some-generic-sitename/rss to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/rss.xml to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/some-generic-slug to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"show_redirect\", :id=>\"some-generic-slug\"}\n should route /analytics/image/newsletter.gif?user_id=1234 to {:event=>\"newsletter\", :controller=>\"analytics\", :user_id=>\"1234\", :action=>\"image\"}\n for posterous.com subdomains and custom domains\n (subdomain)\n should route / to {:controller=>\"posts\", :action=>\"list\"}\n should route /tag/abc to {:controller=>\"posts\", :tag=>\"abc\", :action=>\"list\"}\n should route /search to {:controller=>\"posts\", :action=>\"search\"}\n should route /rss to {:controller=>\"posts\", :action=>\"rss\"}\n should route /rss.xml to {:controller=>\"posts\", :action=>\"rss\"}\n should route /private/abcded/rss to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcded/rss.xml to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcdefg to {:controller=>\"posts\", :action=>\"show\", :private=>\"abcdefg\"}\n should route /url-slug to {:controller=>\"posts\", :action=>\"show\", :id=>\"url-slug\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /email_subscriptions/recaptcha to {:controller=>\"email_subscriptions\", :action=>\"recaptcha\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n (custom domain)\n should route / to {:controller=>\"posts\", :action=>\"list\"}\n should route /tag/abc to {:controller=>\"posts\", :tag=>\"abc\", :action=>\"list\"}\n should route /search to {:controller=>\"posts\", :action=>\"search\"}\n should route /rss to {:controller=>\"posts\", :action=>\"rss\"}\n should route /rss.xml to {:controller=>\"posts\", :action=>\"rss\"}\n should route /private/abcded/rss to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcded/rss.xml to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcdefg to {:controller=>\"posts\", :action=>\"show\", :private=>\"abcdefg\"}\n should route /url-slug to {:controller=>\"posts\", :action=>\"show\", :id=>\"url-slug\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /email_subscriptions/recaptcha to {:controller=>\"email_subscriptions\", :action=>\"recaptcha\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n for posterous.com and posterous.com subdomains\n (the subdomain)\n should route /posts/ajaxcomment/url-slug to {:controller=>\"posts\", :action=>\"ajaxcomment\", :url_slug=>\"url-slug\"}\n should route /posts/privateajaxcomment/privatestring to {:controller=>\"posts\", :action=>\"privateajaxcomment\", :privatestring=>\"privatestring\"}\n should route /tag/addtag to {:controller=>\"tag\", :action=>\"addtag\"}\n should route /tag/removetag to {:controller=>\"tag\", :action=>\"removetag\"}\n should route /tag/edittags to {:controller=>\"tag\", :action=>\"edittags\"}\n should route /tag/ to {:controller=>\"tag\", :action=>\"index\"}\n should route /posts/getcomments to {:controller=>\"posts\", :action=>\"getcomments\"}\n should route /autopost/crosspost to {:controller=>\"autopost\", :action=>\"crosspost\"}\n should route /reader/favorite to {:controller=>\"reader\", :action=>\"favorite\"}\n should route /sso/recovery to {:controller=>\"sso\", :action=>\"recovery\"}\n should route /site/private to {:controller=>\"site\", :action=>\"private\"}\n should route /admin/resavepost to {:controller=>\"admin\", :action=>\"resavepost\"}\n should route /main/claim to {:controller=>\"main\", :action=>\"claim\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n (posterous.com)\n should route /posts/ajaxcomment/url-slug to {:controller=>\"posts\", :action=>\"ajaxcomment\", :url_slug=>\"url-slug\"}\n should route /posts/privateajaxcomment/privatestring to {:controller=>\"posts\", :action=>\"privateajaxcomment\", :privatestring=>\"privatestring\"}\n should route /tag/addtag to {:controller=>\"tag\", :action=>\"addtag\"}\n should route /tag/removetag to {:controller=>\"tag\", :action=>\"removetag\"}\n should route /tag/edittags to {:controller=>\"tag\", :action=>\"edittags\"}\n should route /tag/ to {:controller=>\"tag\", :action=>\"index\"}\n should route /posts/getcomments to {:controller=>\"posts\", :action=>\"getcomments\"}\n should route /autopost/crosspost to {:controller=>\"autopost\", :action=>\"crosspost\"}\n should route /reader/favorite to {:controller=>\"reader\", :action=>\"favorite\"}\n should route /sso/recovery to {:controller=>\"sso\", :action=>\"recovery\"}\n should route /site/private to {:controller=>\"site\", :action=>\"private\"}\n should route /admin/resavepost to {:controller=>\"admin\", :action=>\"resavepost\"}\n should route /main/claim to {:controller=>\"main\", :action=>\"claim\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n for postly\n should route / to {:controller=>\"postly\", :action=>\"index\"}\n should route /post to {:controller=>\"postly\", :action=>\"post\"}\n should route /navbar to {:controller=>\"postly\", :action=>\"navbar\"}\n should route /uploads/upload to {:controller=>\"uploads\", :action=>\"upload\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n should route /something to {:controller=>\"shorturl\", :action=>\"redirect\", :id=>\"something\"}\nSSO handling\n on a virtual host domain that ends in posterous.com\n should redirect a post url for sso\n should redirect / for sso\n should redirect /tag/abcde for sso\n should redirect /sso/init for sso\n should not redirect / for sso with params with params {\"c\":\"1\"}\n should not redirect /tag/abcde for sso with params with params {\"c\":\"1\"}\n should not redirect post requests\n should not redirect bots\n digg or ip checks\n should not redirect digg\n should not redirect anything on digg subnet\n should redirect other ips that are not digg\n going between domains\n without a user logged out and logged in on posterous.com\n should log the user in if they're logged in on posterous.com\n should preserve query params through sso redirect\n should log the user and redirect to given jumpto using /sso/init\n should log the user and redirect to http referer using /sso/init if jumpto is missing\n using /sso/init should end sso on / w/o referer or jumto\n should sync oauth user across sessions\n should sync twitter account accross sessions\n should clear out existing twitter accout on vhost\n should clear out oauth_user on vhost\n with a user logged in and logged out on posterous.com\n should log the user out\n on a virtual host domain\n should redirect a post url for sso\n should redirect / for sso\n should redirect /tag/abcde for sso\n should redirect /sso/init for sso\n should not redirect / for sso with params with params {\"c\":\"1\"}\n should not redirect /tag/abcde for sso with params with params {\"c\":\"1\"}\n should not redirect post requests\n should not redirect bots\n digg or ip checks\n should not redirect digg\n should not redirect anything on digg subnet\n should redirect other ips that are not digg\n going between domains\n without a user logged out and logged in on posterous.com\n should log the user in if they're logged in on posterous.com\n should preserve query params through sso redirect\n should log the user and redirect to given jumpto using /sso/init\n should log the user and redirect to http referer using /sso/init if jumpto is missing\n using /sso/init should end sso on / w/o referer or jumto\n should sync oauth user across sessions\n should sync twitter account accross sessions\n should clear out existing twitter accout on vhost\n should clear out oauth_user on vhost\n with a user logged in and logged out on posterous.com\n should log the user out\n on posterous.com\n should not redirect / for sso with params\n should not redirect /help for sso with params\n on a posterous.com subdomain\n should not redirect a post url for sso with params\n should not redirect / for sso with params\n should not redirect /tag/abcde for sso with params\nSiteController\n Creating and destroying sites\n should show the newsite ajax action\n should return true for available hostname\n should return false for unavailable hostname\n should allow you to create new sites\n should prevent you from creating duplicate sites\n should prevent users from creating sites as other users\n should allow you to delete sites\n should prevent non-owners from deleting sites\n Updating attributes of sites\nTEST\n should let you update feedburner and google analytics\nTEST\n should let you set an fb key\nTEST\n should let you change privacy and password\n should let you change site vars through SiteExtra\n should let you update the typekit id\nTEST\n should let you change commenting, downloading, and posting options\nTEST\n should let you change site name and subhead\nTEST\n should let you change site address\n should prevent you from changing your address to something that's taken\nTEST\n should let you change virtual host\n should notify you of errors if your virtual host is misconfigured\nTEST\n should allow you to set a bogus hostname if you disable verification\n should prevent non-owners/non-contributors from altering a site\n should prevent contributors from altering a site\nTEST\n should prevent you from resetting your site id\nTEST\n should prevent you from setting the primary owner of a site to someone else\n Inviting site contributors by a logged in user\n should not allow you to add contributors to a site you do not own\n should make sure the user is confirmed before allowing him to add contributors\n should create a SitesEmails object if the email is not confirmed\n should create a SitesUsers object if the email is associated with a posterous user\n should create a new Contact for the user if the email is new\n should reject poorly formatted emails\n should not allow you to add duplicate contributors (sitesemails)\nemail2911@designerslash.com (John Doe) <br/>\n should not allow you to add duplicate contributors (sitesusers)\n should place a message in flash[:notice] if the add was successful\n should redirect to mainsite url if the request is GET\n Creating a new site\n should allow you to create a new site\nSiteExtra\n Initializing a new site\n should create a new SiteExtra object and initialize vars to nil\n Getting and setting site vars\n should initialize valid vars to nil\n should throw an error if I reference an invalid var\n should allow me to set a valid var\n should not allow me to set an invalid var\nLinksController\n scraping title\n should return a proper page title\n when authorized\n #update\n should have a site\n should be success\n should update the link's url (FAILED - 6)\n when unauthorized\n #update\n should not be able to access update\n should set the flash on update\n #create\n should not be able to access create\n should set the flash on create\n #destroy\n should not be able to access destroy\n should set the flash on destroy\nPeopleController\n index\n should lookup user via encrypted id\n should lookup user via normal id\nPosterous::UrlHelper\n url_for_user\n should return posterous.com and user's encrypted id\n generating homepage_url_for_site\n should return posterous homepage for nil site\n should use subdomain without virutal_host\n should use virtual host if site has one\n generating an rss URL\n should use alt_feed_url if it exists\n should add /rss.xml to site host for rss_url\n should use secret rss url for private site\n should use secret rss URL for private site with alt_feed_url\nExtTwitterOauth\n should set username and site_url from twitter_acct\n should validate the presence of an oauth user that is authenticated\nGot shorturl http://posterous.com/shorturl/redirect/5JG\n should try three times if it can't post before failing out\n should allow you to query by twitter_id\n Querying Twitter for user info\n should try a few times to fetch account info and fail if it doesn't work\n should properly assign user info\nOauthController\n oauth for posterous main site\n should close window properly\nSubscription\n notifications\n should call generate create notifications for a subscription\n should create notifications for a subscription check for notification\n should create notifications for subscriptions when a subscription is added\n should create new notifiables on new posts\n should back-fill post subscriptions\n should remove notifications when a post has gone private\n should return the right notifications from get_notifications for subscribed posts\n should return the right notifications from get_notifications for subscribed posts for weekly\n should return the right notifications from get_notifications for subscribed posts for none\nTue Jun 29 17:20:41 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:20:41 -0700 2010: Got 1 notifications\nTue Jun 29 17:20:41 -0700 2010: Processing 532766 user, John Doe, 1 notifications\nTue Jun 29 17:20:41 -0700 2010: Cleaning up 1 notifications\nTue Jun 29 17:20:41 -0700 2010: END MAIL JOB\n should create an email for one post daily\nTue Jun 29 17:21:11 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:21:11 -0700 2010: Got 100 notifications\nTue Jun 29 17:21:11 -0700 2010: Processing 532768 user, John Doe, 100 notifications\nTue Jun 29 17:21:11 -0700 2010: Cleaning up 100 notifications\nTue Jun 29 17:21:11 -0700 2010: END MAIL JOB\n should create an email for one hundred posts daily, with the top 20 scores for the batch being sent\n should send an email digesting the top 20\n counter_cache for site\n should increment subscription_count for site if user is showable\n should decrement subscription_count for site if subscription is removed\nResourceViewing\n increment and return view count for a post instance\n increment and return view count for a site instance\n should bulk increment post views by id\nPosterous::Freud\n Validating test setup\n should set site showable state correctly\n should set up site tags correctly\n Downloading and processing site tag data\n should fetch a list of site ids whose tags we are going to use and sort them numerically\n should sort the tags found in the sites alphabetically\n should create a hash that tells where in the array each tag is\n should create tag vectors for each site with the appropriate probabilities\n should record the frequency with which a tag appears in the selected sites\n Basic Redis Setup\n should set and return its own redis namespace\n should nuke its own namespace\n Persisting the clustering results into Redis\ncluster_kmeans! iter = 0, centroid_change = 3.393e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 0.000e+00<br/>\n should remember how many sites, tags, and clusters there are\ncluster_kmeans! iter = 0, centroid_change = 3.789e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 9.932e-02<br/>\ncluster_kmeans! iter = 2, centroid_change = 1.407e-01<br/>\ncluster_kmeans! iter = 3, centroid_change = 0.000e+00<br/>\n should store all tags and sites\ncluster_kmeans! iter = 0, centroid_change = 4.080e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 0.000e+00<br/>\n should store clusters and centroids\ncluster_kmeans! iter = 0, centroid_change = 3.759e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 1.156e-01<br/>\ncluster_kmeans! iter = 2, centroid_change = 0.000e+00<br/>\n should store the frequency with which tags appear in all sites\n Clustering the tag data\n should appropriately calculate covariances\n should appropriately calculate Pearson coefficients\ncluster_kmeans! iter = 0, centroid_change = 3.388e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 0.000e+00<br/>\n should return a list of k clusters when doing k-means clustering\n Making recommendations based on input\ncluster_kmeans! iter = 0, centroid_change = 2.096e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 1.488e-01<br/>\ncluster_kmeans! iter = 2, centroid_change = 1.671e-01<br/>\ncluster_kmeans! iter = 3, centroid_change = 0.000e+00<br/>\n****************************************************************************************************<br/>\nDEBUG INFO<br/>\n@centroids = [<br/>\n 0 : 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00<br/>\n 1 : 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00, 0.00000e+00<br/>\n 2 : 0.00000e+00, 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01<br/>\n]<br/>\n<br/>\n@cluster_0 = [867002]<br/>\n@cluster_1 = [867001]<br/>\n@cluster_2 = [867003]<br/>\n<br/>\n@site_id_867001 = 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00, 0.00000e+00<br/>\n@site_id_867002 = 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00<br/>\n@site_id_867003 = 0.00000e+00, 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01<br/>\n****************************************************************************************************<br/><br/>\ncluster_index = 0<br/>\ncluster_index = 2<br/>\n should recommend the appropriate cluster for you (case insensitivity on tag)\ncluster_kmeans! iter = 0, centroid_change = 3.720e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 8.754e-02<br/>\ncluster_kmeans! iter = 2, centroid_change = 9.965e-02<br/>\ncluster_kmeans! iter = 3, centroid_change = 1.040e-01<br/>\ncluster_kmeans! iter = 4, centroid_change = 7.803e-02<br/>\ncluster_kmeans! iter = 5, centroid_change = 1.319e-01<br/>\ncluster_kmeans! iter = 6, centroid_change = 1.871e-01<br/>\ncluster_kmeans! iter = 7, centroid_change = 9.526e-02<br/>\ncluster_kmeans! iter = 8, centroid_change = 4.112e-02<br/>\ncluster_kmeans! iter = 9, centroid_change = 1.157e-01<br/>\ncluster_kmeans! iter = 10, centroid_change = 1.408e-01<br/>\ncluster_kmeans! iter = 11, centroid_change = 8.158e-02<br/>\ncluster_kmeans! iter = 12, centroid_change = 5.647e-02<br/>\ncluster_kmeans! iter = 13, centroid_change = 8.951e-02<br/>\ncluster_kmeans! iter = 14, centroid_change = 1.156e-01<br/>\ncluster_kmeans! iter = 15, centroid_change = 1.219e-01<br/>\ncluster_kmeans! iter = 16, centroid_change = 0.000e+00<br/>\n should be able to recommend from a previous clustering run\nUserProfile\n Detecting spam bastards on the user profile\n should run queue_detect_spam on after_save\n should queue a resque job if the body is changed\n should not queue a resque job if body isn't changed\n the actual act of detecting spam\n should detect to see if a user_profile is spam, then stick it into redis if it is\n should remove user_profile id from redis if it's not spam\n should have a method for moving user profile ids out of spammy bucket into a banned spammy bucket\n should return a list of spammy user_profile_ids who own the user_profiles\n should return a list of spammy users\n should weed out users that have already been banned\n should have a method for handling a newly-banned user\n should report misclassifications and remove itself from redis\nExternalSite\n Normal user external site scenarios\nGot shorturl http://posterous.com/shorturl/redirect/5JH\n should post to Twitter once when calling post\n should identify whether or not twitter should be autoposted based on the incoming user string\n should externally post to Twitter a normal post to a normal site\n should not externally post to Twitter a private post to a normal site\n should properly post using external_site[...] syntax for incoming user\n should post to both external ids using external_site[] syntax\n should post to both a user's external site and the group profile\n should not post using external_site[...] syntax for an unauthorized site\n should not post using external_site[...] syntax for incoming user for a nonexistent external site\n should dupecheck against site_url and skip the 2nd site\n Normal user external site scenarios for private site\n should not externally post to Twitter a normal post to a private site\n Anonymous user external site scenarios\n should externally post to Twitter a normal post to a normal site\n Showable for user and site\n should mark user and site as showable if external site is added\n Group profile external site scenarios\n should externally post to Twitter both a normal user and a group profile\n should not externally post to Twitter to only a group profile if user doesn't want it autoposted to their own\n returing a related site\n should be nil with no assoc\n should first check user.site\n should then check site\n should then check group_profile.sites.first\n named scopes\n should only include twitter sites with twitter\n Other methods\n should just return nil if facebook_user is called on a non-facebook related site\ntweet = Jolie promenade nantaise cet apr\303\250s-midi. Ciel gris et temps frais. Quand m\303\252me de la lumi\303\250re et de la chaleur. Quelque... http://post.ly/fU1V l1 = 143 l2 = 140<br/>\n should properly handle tweet lengths for posts with foreign characters in the title\nShareController\n without a user logged in\n should redirect create\n with a user logged in\n should create a new post with create\n should set via_type of the new post to via_share\nBookmarkletController\n showing iframe contents\n should indicate loading w/ no params\n should show a create form given a linkto\n should not explode given a linkto with a URI that needs escaping\n Creating a new post via the Bookmarklet\n should create a new post correctly\n should download images to avoid hotlinking\n should set via_type of post to via_bookmarklet\n should appropriately include the autopost sites\n should create a new scheduled post\nSiteTheme\n should check and populate cache on theme lookup\n should not use still cache if theme set\n should not still use cache if theme id set\n should default back to the first theme if the theme is undetected\nSetting the cookie domain\n for a site with a virtual host that ends in posterous.com\n should set it to somethingposterous.com\n for a site with a two level tld virtual host\n should set it to something.co.uk\n for a site with a virtual host\n should set it to something.com\n for a subdomain site\n should set it to .posterous.com\n for posterous.com\n should set it to .posterous.com\nThe Post class finding posts adjusting content parts from serialized version\n should do nothing given nil\n should do nothing for serialized version of current content_part\n should move image_parts from one content part to another\n should enqueue djs for two content parts that swap image parts\n should correctly reorder image parts for given content part\n should orphan unused image parts\n should get rid of missing image content parts\n should get rid of missing non image content parts\n should not allow adding another posts image_part to current content parts image parts\n adding image content parts\n should add content parts given smart serialized content parts\n should add content parts given smart serialized content parts with string keys\n should add content parts given json content parts\n should expand content part already in body_html\n should enqueue content part delayed jobs for images\n adding non image content parts\n should schedule transcode for new video part\n given images parts w/ rotation set\n should rotate images passed in w/ rotation set\n should enque processing on rotation if image was previously processed\nPostlyController\n should return 400 for get request of /post\n redirecting short urls\n should redirect a valid short_url\n should redirect to mainsite_url with no id\n should redirect to mainsite_url for bad id\n with no one logged in\n should show a post to twitter button\n with a posterous user logged in\n should let user post w/o a twitter account\n should allow a post as a contributor\n should set via_type of post to via_postly\n with a twitter basic user logged in\n should add given media to post\n with a twitter user logged in associated to a group profile\n should post to the group autopost site\n with an existing user who has logged in via twitter\n should set incoming username to just twitter id if autopost_control is blank\n with a new oauth user and twitter_acct in the session\n should create an external site and site\n with an oauth user and twitter_acct for an existing site in the session\n should not create an external site, site or oauth_user\nPost\n previous and next posts\n should return the previous post\n should return the next post\n should return nil if there is no next post\n should return nil if there is no previous post\nPostRegistrationController\n should be agnostic to http or https for uploading - testing: render_modal_flow, http\n should return images with proto http if request was http\n should be agnostic to http or https for uploading - testing: render_modal_flow, https\n should return images with proto https if request was https\n Finding Friends\n should return a list of sites that belong to friends (excluding friends with no public sites)\n searching for friends through Facebook\n should return a list of sites that belong to facebook friends\n Searching for friends through Twitter\n should return a list of sites that belong to twitter friends\n should response with an error if the oauth user isn't in session\n Searching for friends through Contacts\n should respond with code 202 (wait) if the email contacts haven't been imported yet\n should response with a list of existing contact friends if the redis import fails for whatever reason\n should return a list of sites that belong to email contacts\nPosterous::FriendFinder\n Basic class initialization\n should assign a facebook_user from the user\n should assign an oauth_user from the user\n should assign twitter credentials from the user\n should assign the contacts from the user\n Finding friends that have hadded you previously to their contacts\n should find friends that have added you previously to their contacts\n Finding friends through previously-imported contacts\n should find friends through contacts\n Finding friends through newly-imported contacts\n should find friends inside newly imported contacts\n Finding friends through Facebook\n should find friends through Facebook\n Finding friends through Twitter\n should find friends through Twitter Oauth\n should find friends through Twitter Basic\n Finding suggested sites using friend's sites\n should return a list of unique sites that my friends own\n should only return 1 site per friend if specified\n should not return any private sites\n should not return sites that the user is already subscribed to (if specified)\n should not return users that the user is already subscribed to (if specified)\nSsoController\n on posterous.com\n should redirect /sso/verify to jumpto on bad token\n should redirect to jumpto given as array\n should redirect /sso/verify to homepage on bad token w/o jumpto\n checking a virtual hosts session\n should not need sync with check for {} and {}\n should not need sync with check for {:user_id=>1} and {:user_id=>1}\n should not need sync with check for {:oauth_user=>#<OauthUser id: nil, user_id: nil, provider_type: nil, token: nil, secret: nil, authenticated: false, expires: 0, created_at: nil, updated_at: nil, external_site_id: nil>} and {:oauth_user=>#<OauthUser id: nil, user_id: nil, provider_type: nil, token: nil, secret: nil, authenticated: false, expires: 0, created_at: nil, updated_at: nil, external_site_id: nil>}\n should not need sync with check for {:twitter_acct=>{\"a\"=>\"b\"}} and {:twitter_acct=>{\"a\"=>\"b\"}}\n should not need sync with check for {:user_id=>1, :nonsense=>\"something irrelevant\"} and {:user_id=>1}\n should not need sync with check for {:user_id=>1} and {:user_id=>1, :nonsense=>\"something irrelevant\"}\n should need sync with check for {} and {:user_id=>1}\n should need sync with check for {:user_id=>1} and {}\n should need sync with check for {:oauth_user=>#<OauthUser id: nil, user_id: nil, provider_type: nil, token: nil, secret: nil, authenticated: false, expires: 0, created_at: nil, updated_at: nil, external_site_id: nil>} and {}\n should need sync with check for {:twitter_acct=>{\"a\"=>\"b\"}} and {:twitter_acct=>{\"a\"=>\"c\"}}\n on a site's virtual domain\n should redirect /sso/recover to jumpto on missing token\n should redirect /sso/recover to jumpto with args on missing token\n should redirect /sso/recover to homepage on missing token w/o jumpto\n should redirect /sso/recover to jumpto on bad token\n should redirect /sso/recover to jumpto with args on bad token\n should redirect /sso/recover to homepage on bad token w/o jumpto\n should not jumpto a forgein domain via recovery\n should still jumpto root for invalid jumpto URI\n should allow jumpto with domain w/ www for same host\n should correctly add c param to URL w/ query string\n should not add c param to URL that has it\n with a user logged in\n should log the user out with logout\n should log the user out and go to jumpto with logut\nPagesHelper\n should be included in the object returned by #helper\nUserProfilePic\n being added to a user profile that has a pic\n should delete old pic and child\nClasses that include BelongsToContentPart\n find_by_orphaned_part_ref\n should find the obj\n should find nothing for a random string\n deleting old orphans\n should not delete new files\n should delete older files\n should actually delete the file refs of the older files\n should delete a lot of older files\n processed?\n should be based on processed_at\n should be true for classes w/o processed_at\nUploadsController\n upload\n should create a media part and save it returning filerefs\n should create multiple media parts given multiple files\n should create multiple media parts given hash of files\n check\n should return false for an image_part that is not yet processed\n should return the smart serliazed image for an already processed image\n should do multiple refs at once\n should ignore bad refs\n should ignore no ref\nFileRef\n being validated\n should require an fileio\n should require an size\n should require an s3_key\n should set url, size and original name from uploaded file\n should use inferred_filename in preference to original_filename\n should create an s3 key given a content_part and a fileio\n should create an s3 key given only a fileio\n should accept a normal IO as fileio if original_name is set\n should create a url passed in bucket\n sanitizing an s3 key\n should get rid of non word chars\n should turn whitespace into _\n should turn accented forgein chars into ascii equiv\n being saved\n should save its file to s3\n an instance\n should smart serialize to url\n being destroyed\n should not actually destroy and set deleted at\n being deleted\n should actually delete the record remove the file\n generating HTML\n using get_html_expanded\n should HTML escape original filename\n using get_html_collapsed\n should HTML escape original filename\nImage\n an instance\n should smart serialize\nPosterous::SmartSerializable\n should serialize all the fields given\n should serialize any field values that respond to smart_serialize\n should smart serialize arrays of values that respond to smart_serialize\n should allow custom extra fields via block\nDomain\n Domains reporting and analytics\n should generate timestamps\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , one_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , two_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , five_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , ten_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , one_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , two_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , five_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , ten_year)\n should genereate a timeseries for number of domains purchased over the past 10 days\n should generate a timeseries for the total revenue generated over the past 10 days\n should generate a figure for week-on-week change in numbers of domains purchased\n should generate a figure for month-on-month change in numbers of domains purchased\n Checking domain domain availability\n should reject blank domains or domains with subdomains\nTesting tld com<br/>\nTesting tld net<br/>\nTesting tld org<br/>\nTesting tld cn<br/>\n should reject domains that aren't .com, .net, or .org\n should not care if a user adds an http or trailing slash or weird capitalization - testing: http://foo.com\n should not care if a user adds an http or trailing slash or weird capitalization - testing: http://foo.com/\n should not care if a user adds an http or trailing slash or weird capitalization - testing: https://foo.com\n should not care if a user adds an http or trailing slash or weird capitalization - testing: foo.com/\n should not care if a user adds an http or trailing slash or weird capitalization - testing: FoO.CoM\n should not care if a user adds an http or trailing slash or weird capitalization - testing: http://FOO.COM\n should not care if a user adds an http or trailing slash or weird capitalization - testing: HTTP://FOO.COM/\n Registering and Purchasing a Domain\n should report that all contact info is present when it actually is present\n should have a method for checking whether or not contact info is missing for name\n should have a method for checking whether or not contact info is missing for address\n should have a method for checking whether or not contact info is missing for city\n should have a method for checking whether or not contact info is missing for state\n should have a method for checking whether or not contact info is missing for zip\n should have a method for checking whether or not contact info is missing for country\n should have a method for checking whether or not contact info is missing for phone\n should insert a domain into DB if everything goes peachy\n should bill the credit card for the right amount with the appropriate information\n should set expiration date, random password, order id, pricing plan, and notes for a valid domain after purchase\nChecking expected field RegistrantCity<br/>\nChecking expected field RegistrantStateProvince<br/>\nChecking expected field RegistrantLastName<br/>\nChecking expected field RegistrantEmailAddress<br/>\nChecking expected field RegistrantCountry<br/>\nChecking expected field RegistrantPostalCode<br/>\nChecking expected field RegistrantPhone<br/>\nChecking expected field RegistrantFirstName<br/>\nChecking expected field RegistrantAddress1<br/>\nChecking expected field TechCity<br/>\nChecking expected field TechStateProvince<br/>\nChecking expected field TechLastName<br/>\nChecking expected field TechEmailAddress<br/>\nChecking expected field TechCountry<br/>\nChecking expected field TechPostalCode<br/>\nChecking expected field TechPhone<br/>\nChecking expected field TechFirstName<br/>\nChecking expected field TechAddress1<br/>\nChecking expected field AdminCity<br/>\nChecking expected field AdminStateProvince<br/>\nChecking expected field AdminLastName<br/>\nChecking expected field AdminEmailAddress<br/>\nChecking expected field AdminCountry<br/>\nChecking expected field AdminPostalCode<br/>\nChecking expected field AdminPhone<br/>\nChecking expected field AdminFirstName<br/>\nChecking expected field AdminAddress1<br/>\nChecking expected field AuxBillingCity<br/>\nChecking expected field AuxBillingStateProvince<br/>\nChecking expected field AuxBillingLastName<br/>\nChecking expected field AuxBillingEmailAddress<br/>\nChecking expected field AuxBillingCountry<br/>\nChecking expected field AuxBillingPostalCode<br/>\nChecking expected field AuxBillingPhone<br/>\nChecking expected field AuxBillingFirstName<br/>\nChecking expected field AuxBillingAddress1<br/>\n should correctly set the other parameters\n should set id theft field if selected during purchase\n should purchase ID theft after domain purchase if requested\n should complain vigorously if an invalid plan parameters are submitted\n should not bill credit card if the domain is unavailable\n should have a method for defaulting the MX records to google\nDomainsController\n should redirect to to secure page if SSL isn't enabled\n should have a method for checking the availability of a domain name via AJAX\n Purchasing a domain\n should allow a user to purchase a domain\n should allow a user to add a purchased domain to a site\n should not allow a user to add a purchased domain to a site he doesn't own\n Linking a purchased domain to a Posterous site\n should allow you to link a site you own to a domain you own\n should not allow you to link a site you don't own\nTumblrImport\n #create with http://chrisburnett.tumblr.com\n should be valid\n should be an array\n should have 19 posts\n should have 1 failure\n should have 19 succeeded\n should have 1 skipped\n should create 19 posts\nDealing with hostnames\n for a site with a virtual host that ends in posterous.com\n should look up correct site given correct hostname without sso\n should redirect the www variant to the normal virtual host\n should redirect the www variant to the normal virtual host without sso\n should redirect subdomain version to custom domain\n that starts with www\n should redirect non www version to www\n for a site with a virtual host\n should look up correct site given correct hostname without sso\n should redirect the www variant to the normal virtual host\n should redirect the www variant to the normal virtual host without sso\n should redirect subdomain version to custom domain\n that starts with www\n should redirect non www version to www\n for a subdomain site\n should look up correct site given correct hostname\n should redirect www version to normal subdomain\nCreditCard\n Basic Validations\n should validate presence of user, first/last names, and credit card number\n should validate the credit card number by seeing if it's of a recognized type\n should save a display number and token if the gateway responds with success\n should make sure the credit card isn't expired\n should destroy old credit cards for a user if a new one is created\nPhoneController\n should create a new site\n /newpost\n should create a post given user token\n should set via_type of post to via_iphone\nMainController\n handling GET /main/login\n should be successful\n should render index template\n should force users to use SSL if logging in\n should display a quantcast tag that is SSL\n should not force SSL for other actions - feedback\n should not force SSL for other actions - register\n should not force SSL for other actions - forgot\n should not force SSL for other actions - logout\n should not force SSL for other actions - privacy\n should not force SSL for other actions - tos\n should not force SSL for other actions - faq\n should not force SSL for other actions - about\n without a user logged in\n should show a form on get to /loginstring\n should update password on post to loginstring\n forgot password\n should show forgot pw page\n should reset my password\n site creation by a new user\n should redirect to manage upon site registration if the user isn't using AJAX to submit form\n Using AJAX to signup\n should create a new site from a user filling out register form\n should allow a user to claim his site from an email that matches the original post email\n should allow a user to claim his site from an email that doesn't match the original post email\n should appropriately handle registration attempt by a banned user\n Handling errors on validations\n should appropriately handle registration attempt for an existing site name\n should appropriately handle registration attempt for an existing email address\n should appropriately handle a registration attempt with a blank hostname\n should appropriately handle a registration attempt with a blank email\n should appropriately handle a registration attempt with a blank password\n adding and removing email addresses\n should be able to add a valid email address\n should be able to add a valid address and reject mass assignment exploit\n should reject bad email address\n should confirm an email\n should set as primary\n should not be able to set as primary if email is not confirmed\n should not be able to set as primary if email is not yours\n should resend confirmation email\n should remove this email if i own it\n should not let me delete my primary email\n should reject email deletion if i do not own it\n adding and removing phone number\n should be able to add a phone number\n changing my notification settings\n should be able to change all my notifications to never\n with a user logged in\n should log the user out with logout\n should log the user out and go to jumpto with logut\n loading a user from the session\n should load user from user obj\n should load user from user_id\n should reload banned user obj and log them out\n should save new session with just user_id\nPosterous::XmlrpcPing\n should not explode on perform\n should not explode on pubsub\nAdminController\n with noone logged in\n should redirect\n with a non-admin logged in\n should get redirected\n with an admin logged in\n should show index\n /user\n should look up via an email\n should look up via an email, ignoring extra space\n should look up via an email with name\n should look up via an email with name in quotes\n should look up via user id\n should lookup via site address\n should lookup a site address with underscores\n should lookup a site address with dashes\n should lookup a site address that starts with a number\n should lookup a site by custom domain\n should assign @ownedsites and @authoredsites\n Posterous Features Admin Interface\n should allow you to create a new Posterous Feature\n should allow you to edit a Posterous Feature\n should allow you to delete a Posterous Feature\nPosterousFeature\n Basic Validations\n should validate the presence of a long description\n should validate the presence of a post\n should not define default icons that don't exist inside the repo\n should not allow you to set a category that doesn't exist\n should not allow you to set an icon that doesn't exist\n should not sanitize HTML stored in long and short descriptions\n Creating and Updating\n should allow you to create a new feature from a params hash\n should allow you to update a feature from a params hash\n Assigning default field values\n should set the added on field to the post date by default\n should set the short description field to the post title by default\n should set the category field to 'general' by default\n should set the icon by default to the 'general' category icon\n Returning list of new Posterous features\n should only return features the user hasn't seen (based on his last login date)\n should return features the user hasn't seen based on his second-to-last-login\n should return features the user hasn't seen based on a specified time\n shouldn't choke if the user has no logins\n should return a specified number of features, starting with the most recent\n should not return private features to non-admin uesrs\nExtMetaWeblog\n should autopost if the incoming username has 'blog' or 'blogs' in the incoming username\n should autopost if the incoming username is 'wordpress' and the site_url matches wordpress\nPosterous::Expanders::Gist\n should expand http://gist.github.com/268948\n should expand http://gist.github.com/319882#file_ssh-instance-function.sh\n should expand http://gist.github.com/268948.js?file=multi_parameter_attributes.rb\n should expand http://gist.github.com/319882?file=ssh-instance-function.sh\n should expand http://gist.github.com/268948#file_enviroment.rb\nPosterous::Expanders::GoogleMaps\n matching URIs\n should match http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=110242485016184900177.00045b46382e1ae6133f4&ll=37.775735,-122.466574&spn=0.010617,0.017209&z=16\n should match http://maps.google.com/maps?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://www.google.com/maps?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://maps.google.cl/?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://www.google.cl/maps?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=40+Anzavista+Ave,+San+Francisco,+CA+94115+(home)&sll=-33.438163,-70.639223&sspn=0.011209,0.017209&ie=UTF8&z=16&iwloc=A&layer=c&cbll=37.779722,-122.442343&panoid=H0knKr8kbgBFijvrJ6U2Mw&cbp=12,1.98,,0,5\n should match http://maps.google.com/?ie=UTF8&hq=&hnear=222+Columbus+Ave,+San+Francisco,+California+94133&ll=37.797273,-122.405783&spn=0,359.977727&z=16&layer=c&cbll=37.798638,-122.408297&panoid=iK53IVP-W0PRwfmrgfOomw&cbp=12,160.07,,0,5\n should match http://maps.google.com/?ie=UTF8&hq=&hnear=222+Columbus+Ave,+San+Francisco,+California+94133&ll=37.797273,-122.405783&spn=0,359.977727&z=16&layer=c&cbll=37.798638,-122.408297&cbp=12,160.07,,0,5\n should match http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=london&sll=48.379433,31.16558&sspn=12.409783,22.807617&ie=UTF8&hq=&hnear=London,+United+Kingdom&z=14&layer=c&cbll=51.498717,-0.138612&panoid=ixNpDWxtpmOds-urd0ntiw&cbp=12,359.35,,0,5\n should not match http://www.google.cl/maps\n should not match http://maps.google.com/\n should not match http://yahoo.com/\n should not match http://maps.google.au/maps/mm\n expanding urls\n should remove zoom and escape quote for url base\n should expand url into iframe\n should set output to svembed for http://maps.google.com/maps?f=q&source=s_\n should set output to svembed for http://maps.google.com/?ie=UTF8&hq=&hnear\n should set output to svembed for http://maps.google.com/?ie=UTF8&hq=&hnear\n should set output to svembed for http://maps.google.com/maps?f=q&source=s_\n should set output to embed for http://maps.google.com/maps/ms?ie=UTF8&hl\n should set output to embed for http://maps.google.com/maps?ie=UTF8&ll=-3\n should set output to embed for http://www.google.com/maps?ie=UTF8&ll=-33\n should set output to embed for http://maps.google.cl/?ie=UTF8&ll=-33.438\n should set output to embed for http://www.google.cl/maps?ie=UTF8&ll=-33.\nHttpCheckController\n should return something very short\nEmailSubscription\n basic model functionality\n should create a mail setting for an email if it does not alrady exist\n should create a secret string for an email if it does not already exist\n should set email mysubs setting to 'never' if the email is signed up for the first time\n should not alter an email's mail settings if they were previously set\n should not create a new email subscription if the target email has email_notify = false\n notifications\n should call generate create notifications for a subscription\n should create notifications for a subscription check for notification\n should remove notifications for a post\n should create notifications for subscriptions when an email subscription is added\n should create new notifiables on new posts\n should back-fill post subscriptions\n should remove notifications when a site has been unsubscribed\n should remove notifications when a post has gone private\n should return the right notifications from get_notifications for subscribed posts\n should return the right notifications from get_notifications for subscribed posts for weekly\n should return the right notifications from get_notifications for subscribed posts for none\nTue Jun 29 17:28:45 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:28:45 -0700 2010: Got 1 notifications\nTue Jun 29 17:28:45 -0700 2010: Processing 558383 email, email4173@designerslash.com, 1 notifications\nTue Jun 29 17:28:45 -0700 2010: Cleaning up 1 notifications\nTue Jun 29 17:28:45 -0700 2010: END MAIL JOB\n should create an email for one post daily\nTue Jun 29 17:29:13 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:29:13 -0700 2010: Got 100 notifications\nTue Jun 29 17:29:13 -0700 2010: Processing 558385 email, email4176@designerslash.com, 100 notifications\nTue Jun 29 17:29:14 -0700 2010: Cleaning up 100 notifications\nTue Jun 29 17:29:14 -0700 2010: END MAIL JOB\n should create an email for one hundred posts daily, with the top 20 scores for the batch being sent\n should send an email digesting the top 20\nCokeController\n <br/>\n should not redirect SSL POST requests to non-SSL page\nEmail\n should have a method for verifying the format of an email\n should find or create unique email objects\n should convert email_subscriptions to normal subscriptions when moving to user\n should create a mail_settings object for a new email\n should create a mail_setting object if an email doesn't already have one\n should set email_notify to true upon creation\n should destroy email subscriptions if email_notify is set to false\n being validated\n should not allow you to create an email with the wrong format\n checking uniqueness of email address\n should require a unique email\n should require a unique email regardless of case\n should not require a unique email on save\nDealing with a corrupt session\n should just reset the session\nMailRobot\n should not error when sending delayed job exceptions\nFilePart\n in general\n should return image as content_part_type\n should return orphaned_part_type\n being created\n should require a uploaded_file\n successfully\n should save its uploaded_file to s3\n should create FileRef\n being saved with a new file\n should save new file\n should delete old FileRef and create new one\n checking for ipaper support\n should support ipaper w/ ipaper extension\n should not support ipaper w/ filename w/ erroneous extension\n should not support ipaper w/ blank filename\n should not support ipaper w/ extensionless filename\n should not support ipaper w/ missing filename\n should not support ipaper w/o FilePart\n with a valid ipaper extension\n should use content user_id in ipaper embed if user exists\n should use content email_id in ipaper embed if email exists\n should use content site_id in ipaper w/o user or email\n for a swf file\n should generate a swf embed for get_html\n an instance\n should return file for all_files\nMailSetting\n return select options\n should return and array w/ titleized values in order\n should use default if no specific options exists\n an instance\n should set all the fields to never with opt_out_all!\nContact\n validations\n should validate the presence of a user\n should validate the presence of an email\n inserting / retrieving contacts from redis\n should store new contacts in redis\nemail: foo@bar2.com <br/>\nemail: foo@bar3.com <br/>\nemail: foo@bar4.com <br/>\nemail: email4244@designerslash.com <br/>\nemail: foo@bar1.com <br/>\nemail: email4245@designerslash.com <br/>\nemail: email4246@designerslash.com <br/>\n should merge and sort new contacts with existing contacts\n should store all new contacts into DB without redundancies\n should set import progress indicators in redis\n should clean up redis namespaces\n data denormalization\n should determine if the email is associated with a posterous user and record that information\n contact ranking\n should update the aggregate ranking based on the sub rankings\nPosterous::UniqByAttr\n An @array that extends Posterous::UniqByAttr\n should respond to uniq by methods\n should uniq by attribute\n should uniq by attribute with under bar\n should uniq by two attrs separated by and\n should uniq by two attrs separated by and with under bar\n should still raise method not found errors\nThe merge_find_options_with_scope extension\n should merge {} into {:conditions=>{:site_id=>1}} to get {:conditions=>{:site_id=>1}}\n should merge {:conditions=>{:is_private=>true}} into {:conditions=>{:site_id=>1}} to get {:conditions=>\"(`posts`.`site_id` = 1) AND (`posts`.`is_private` = 1)\"}\n should merge {} into {:include=>:site} to get {:include=>:site}\n should merge {:include=>:site} into {} to get {:include=>:site}\n should merge {:include=>:posttags} into {:include=>:site} to get {:include=>[:posttags, :site]}\n should merge {} into {:order=>\"display_date\"} to get {:order=>\"display_date\"}\n should merge {:order=>\"display_date\"} into {} to get {:order=>\"display_date\"}\n should merge {:order=>\"display_date\"} into {:order=>\"id\"} to get {:order=>\"display_date\"}\nThe extension to memcached to retry on read errors\n should still call underlying memcached method\n for the Memcached::PartialRead\n should survive sigle read failure\n should reraise error given repeated errors\n for the Memcached::UnknownReadFailure\n should survive sigle read failure\n should reraise error given repeated errors\n for the Memcached::ATimeoutOccurred\n should survive sigle read failure\n should reraise error given repeated errors\nThe extension to URI to encode before parsing\n should encode URIs before parsing them\n should not double encode %s\nThe DJ extension to enforce handler priority uniqueness\n enqueing performable methods on an AR object\n should not inhibit delayed job creation\n should not allow two identical jobs to be created\n should allow a second job to be creaed if the first is already locked\nThe DJ extension to email us errors\n should send an email normally\n should not send an email for ActiveRecord::RecordNotFound of recent job\n should send an email for ActiveRecord::RecordNotFound of old job\nPosterous::GContacts\nFound Contact: lboltzmann@live.com<br/>\nFound Contact: post@lpauling.posterous.com<br/>\nFound Contact: rfeynman@live.com<br/>\nFound Contact: lpauling@live.com<br/>\n should parse an incoming GData Contacts XML stream and assign emails, names, and user rankings\nPosterous::LiveServices\n should parse an incoming LiveServices XML stream and get a list of categories, IDs and assign scores\nFound Contact: rfeynman@live.com<br/>\nFound Contact: lpauling69@gmail.com<br/>\nFound Contact: lboltzmann@live.com<br/>\n should parse an incoming LiveServices XML stream and assign emails, names, and user rankings\nPosterous::YMail\nFound email lboltzmann@live.com<br/>\nFound email vincentbchu@gmail.com<br/>\nFound email rfeynman@live.com<br/>\nFound email lpauling69@gmail.com<br/>\nFound email lpauling@live.com<br/>\n should parse an incoming Yahoo Mail JSON response and assign emails, names, and user rankings\nAutopostController\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should create a form-based autopost site - for group profile? false\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should create a form-based autopost site - for group profile? true\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\nuser = 533328 siteurl = http://lpauling.wordpress.com\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should allow you to edit the autopost site\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should allow you to delete a site\n should create a twitter oauth autopost site - for group profile? false\n should create a twitter oauth autopost site - for group profile? true\n should create a linkedin autopost site - for group profile? false\n should create a linkedin autopost site - for group profile? true\n Facebook adding/editing\n should create a facebook autopost site\n should allow you to update your Facebook settings\n Adding/Editing Picasa\n should create a picasa site - for group profile? true\n should create a picasa site - for group profile? false\n should allow you to edit your picasa site\n Adding/Editing YouTube\n should create a youtube site - for group profile? false\n should create a youtube site - for group profile? true\n should allow you to edit your youtube site\n Adding Blogger\n should create a blogger site - for group profile? false\n should create a blogger site - for group profile? true\nPosterous::LogHelper\n should create an IO object using rotatelogs w/o rails root arg\n should create an IO object using rotatelogs w/ rails root arg\nReaderController\n with a user logged in\n showing index\n should leave @posts empty without subscriptions\n for a user with notifications\n show set @posts from notifications\n should not show erroneous notifications for sites the user is not subscribed to\n should page notifications\n should suggest > 5 sites for someone without many subscriptions\n should suggest 5 sites for users with more than 5 subscriptions\n returning rss\n should not choke an an undecryptable user id\nPosterous::S3Helper\n with nonblocking set to true\n should return right away from lenghty store call\n should return right away from lenghty delete call\n should not effect nonblocking by using dont_block\n with nonblocking set to false\n should execute block given to dont_block\n should set nonblocking = true inside dont_block\n should still set nonblocking back to false in case of error\nUserSettingsController\n Setting a user setting\n should set a user's preference for bookmarklet_nag\n should set a user's preference for email_comment\n should set a user's preference for fb_comment\n should set a user's preference for profile_nag\n should set a user's preference for twitter_comment\n should return an error if you try to set an unknown setting\n Unsetting a user setting\n should un-set a user's preference for bookmarklet_nag\n should un-set a user's preference for email_comment\n should un-set a user's preference for fb_comment\n should un-set a user's preference for profile_nag\n should un-set a user's preference for twitter_comment\n should return an error if you try to unset an unknown setting\n Setting of user milestones\n should allow you to set a milestone to completed - confirm_emails\n should allow you to set a milestone to completed - update_profile\n should allow you to set a milestone to completed - add_subscriptions\n should allow you to set a milestone to completed - invite_subscribers\n should allow you to set a milestone to completed - add_autoposts\n should allow you to set a milestone to completed - try_bookmarklet\n should allow you to set a milestone to completed - purchase_domain\n should return an error if you try and set an unknown milestone\nAnalyticsController\n Rendering an image for analytics\n should render the spacer gif file\n should ping redis if it gets a user_id\n should not throw an exception if the user_id is missing\nGetfileController\n should redirect to s3\nSharedExtTwitter\n should overload the facebook_user_id as a field to store twitter uids\n when adding a twitter external site to a group profile\n should merge unclaimed ExtTwitterBasic with new ExtTwitterBasic\n should merge unclaimed ExtTwitterBasic with new ExtTwitterOauth\n should merge unclaimed ExtTwitterOauth with new ExtTwitterBasic\n should merge unclaimed ExtTwitterOauth with new ExtTwitterOauth\n should move to the unclaimed twitter autopost to the appropriate site\n when adding a twitter external site to a user\n with an existing site based twitter external site of type ExtTwitterBasic\n it should merge the site when adding a ExtTwitterBasic\n it should merge the site when adding a ExtTwitterOauth\n with an existing site based twitter external site of type ExtTwitterOauth\n it should merge the site when adding a ExtTwitterBasic\n it should merge the site when adding a ExtTwitterOauth\n with an existing site based ext site other than twitter with the same username\n should not merge in the other site\n should not merge in the other site\nExtFacebook\n should detect posts with external_urls in the image parts\nPosterous::RedisAnalytics\n Methods related to putting information into analytics server\n should set and return its Redis and Redis::Namespace for inspection\n should nuke its own namespace\n should return a list of valid user types\n should return a list of valid actions\n should never raise an error when ping is called directly\n should raise error if invalid user type is pinged\n should raise error if invalid action type is pinged\n should raise error if all fields are not there in ping\n should be indifferent to symbolized keys/values\n should increment count when pinged\n should also increment counts when perform is called (for resque)\n should record the time / date when the user was first entered into redis\n Methods for generating time series\n should take the floor of timestamps to the previous midnight\n should generate time series for specific users\n should generate time series for aggregate counts\n Methods for querying the analytics server and pulling information\n should return all information about a particular user\n should return a list of all users, sorted by action with optional limit on number returned\n should return a list of total number of users in system\n should return a list of all userids in system\n should return the total number of actions performed\n should return timeseries data for a particular user\n should return timeseries data aggregated over all users\nTagPages\n should find posts on site\n should find posts on explore\nPosterous::UserAgentHelper\n for browser user agents\n should consider 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProductsP; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 2.0.50727; .NET CLR' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)' a likely_browser\n should consider 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10' a likely_browser\n should consider 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)' a likely_browser\n should consider 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0' a likely_browser\n should consider 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.260.0 Safari/532.5' a likely_browser\n should consider 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ru) Opera 8.50' a likely_browser\n should consider 'Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.2 (like Gecko)' a likely_browser\n should consider 'BlackBerry9630/4.7.1.61 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105' a likely_browser\n should consider 'Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7C145' a likely_browser\n should consider 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092814 Iceweasel/3.0.3 (Debian-3.0.3-3)' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.15) Gecko/2009110401 Firefox/3.0.15 Flock/2.5.5' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3' a likely_browser\n for bot user agents\n should not consider 'Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 16 subscribers; feed-id=17722974057407159439)' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' a likely_browser\n should not consider 'Googlebot-Image/1.0' a likely_browser\n should not consider 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)' a likely_browser\n should not consider '-' a likely_browser\n should not consider 'Yahoo Pipes 1.0' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)' a likely_browser\n should not consider 'Bloglines/3.1 (http://www.bloglines.com; 14 subscribers)' a likely_browser\n should not consider 'AppEngine-Google; (+http://code.google.com/appengine; appid: pubsubhubbub)' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; redditbot/1.0; +http://www.reddit.com/feedback)' a likely_browser\n should not consider 'FeedDigest/1.0 (http://www.FeedDigest.com)' a likely_browser\n should not consider 'brainbot/1.0 (digitalbrain@brainstreammedia @digitalbrain)' a likely_browser\n should not consider 'digsby-asynchttp/0.1' a likely_browser\n should not consider 'WordPress/2.8.6; http://www.digitaltroubador.com' a likely_browser\n should not consider 'Mozilla/5.0 NewsFox/1.0.5' a likely_browser\n should not consider 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)' a likely_browser\n should not consider 'Mozilla/4.0 (compatible; MSIE 5.0; PiplBot; http://pipl.com/bot/)' a likely_browser\n should not consider 'YahooFeedSeeker/2.0 (compatible; Mozilla 4.0; MSIE 5.5; http://publisher.yahoo.com/rssguide)' a likely_browser\n should not consider 'TweetMemeBot (Feed Parser; Allow like Gecko)' a likely_browser\n should not consider 'Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)' a likely_browser\n should not consider 'Technoratibot/8.1' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0; +http://fulltext.sblog.cz/screenshot/)' a likely_browser\n should not consider 'iTunes/9.0.2 (Macintosh; Intel Mac OS X 10.6.2) AppleWebKit/531.21.8' a likely_browser\n should not consider 'facebookplatform/1.0 (+http://developers.facebook.com)' a likely_browser\n should not consider 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en/docs/about/webmasters.shtml)' a likely_browser\nEmailSubscriptionsController\n Managing invited subscriptions by a posterous user\n should redirect user to mainsite url if a user or subscription is not found\n should report success when a user reports an invited subscription as spam with properly formatted request\n should unsubscribe a user who reports an invited subscription as spam\n should mail spam alert and up the abuse count\n Managing email subscriptions by an anonymous user\n should redirect you if you do not have a secret string or it cannot find your email\n must find the appropriate email given a secret string\n must allow the email to edit its mail_setting (by AJAX)\n must allow the email to unsubscribe from an subscription (by AJAX)\n must allow the email to report spam (by AJAX)\n must allow the email to totally stop all emails (by AJAX)\n must allow the email to edit its mail_setting\n must allow the email to unsubscribe from an subscription\n must allow the email to report spam\n Signing up for an email subscription by an anonymous user\n should successfully add an anonymous email subscriber if recaptcha passed\n should email the anonymous email upon subscribe\n should not allow you to subscribe to a private site unless you have access to it\n should not allow you to add an anonymous email subscriber if recaptcha failed\n should not allow you to add an anonymous email subscriber if the email is improperly formatted\n should record the IP address of an anonymous email subscriber\n should direct a logged-out user to login if his email is linked to a Posterous user\n Inviting email subscribers by a logged in user\n should redirect your on GET\n should add a new subscription for emails associated with posterous users\n should add a new email subscription for anonymous emails\n should reject previously subscribed emails\n should create a new Contact for the user if the email is new\n should reject poorly formatted emails\n should call MailRobot to send out the invites\n should not allow you to subscribe people to a site you do not own\nMovePosts\n should move posts from anon site to user based site\n moving an email to a user\n should move posts from that emails site over\n should set forwarding site of email site\n should move subscribers over\n should move over contributor posts w/o affecting contributors site\nMapsController\n should should raise record not found w/ no post id\n should set max_zoom from lowest gmap zoom of locations\n should show a map for a post with locations\n should show a blank page for a post w/o locations\n should show a blank page for a post from a site with dont_show_locations\nPosterous::MediaIdentifier\n idenfifing files by content type\n should identify type given an appropriate content type\n should identify type given an appropriate content type\n should identify type given an appropriate content type\n should identify type given an appropriate content type\n identifing files by extension\n should identify files of extension pdf as file\n should identify files of extension ps as file\n should identify files of extension doc as file\n should identify files of extension docx as file\n should identify files of extension ppt as file\n should identify files of extension pps as file\n should identify files of extension pptx as file\n should identify files of extension xls as file\n should identify files of extension xlsx as file\n should identify files of extension odt as file\n should identify files of extension sxw as file\n should identify files of extension odp as file\n should identify files of extension sxi as file\n should identify files of extension ods as file\n should identify files of extension sxc as file\n should identify files of extension rtf as file\n should identify files of extension xml as file\n should identify files of extension swf as file\n should identify files of extension jpg as image\n should identify files of extension jpeg as image\n should identify files of extension bmp as image\n should identify files of extension tiff as image\n should identify files of extension gif as image\n should identify files of extension tiff as image\n should identify files of extension mp3 as audio\n should identify files of extension m4a as audio\n should identify files of extension wma as audio\n should identify files of extension aif as audio\n should identify files of extension aiff as audio\n should identify files of extension avi as video\n should identify files of extension mpg as video\n should identify files of extension mov as video\n should identify files of extension wmv as video\n should identify files of extension m4v as video\n should identify files of extension mp4 as video\n should identify files of extension 3gp as video\n should identify files of extension avi as video\n should identify files of extension flv as video\n should identify files of extension ogg as video\n should identify files of extension asf as video\n identifing files by raw file\n of type file\n should identify fw4.pdf given no content type or extension\n should identify fw4.pdf given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n should identify test.doc given no content type or extension\n should identify test.doc given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n should identify null.xls given no content type or extension\n should identify null.xls given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n should identify rotate.swf given no content type or extension\n should identify rotate.swf given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n of type image\n should identify taco_truck_400_300.jpg given no content type or extension\n should identify taco_truck_400_300.jpg given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n of type audio\n should identify bldymary.mp3 given no content type or extension\n should identify bldymary.mp3 given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n of type video\n should identify orson_welles_paul_masson.avi given no content type or extension\n should identify orson_welles_paul_masson.avi given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n given a file with an original filename w/o an extension\n should update inferred_filename an extension based on content type\n given a file with no original filename and a base_uri method\n should update inferred filename based on base_uri\n given a non image audio or video file ipaper doesn't suppport\n should return nothing\n with an empty file\n should return nothing\n creating media parts\n should wrap a single file in an array with empty ignored array\n should leave an arrays alone\n should pull string integer keys out of hashed\n should update content types from hashes based on integer keys\n should update extensions from hashes based on integer keys\n should update extensions from hashes based on integer keys after original_filename called\n should wrap string in ActionController::UploadedStringIO\n should get rid of blank files\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should ignore invalid image files with correct extensions and content types\n should put ignored files in the second array\n should turn orphaned_part_ref strings into media parts\nMediaDownloader\n downloading\n should download a normal file\n should follow redirects\n should follow redirects\n should catch bad uris\n should catch download errors\n downloading on a post body\n should convert <br>\n <a class=\"moz-txt-link-freetext\"\n href=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\"><img src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" class=\"posterous_download_image\" /></a> to (?-mix:<br \\/>\\n \\[\\[posterous-content:[A-Za-z0-9]+\\]\\])\n should convert <a class=\"moz-txt-link-freetext\"\n href=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\">test<img src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" class=\"posterous_download_image\" /></a> to (?-mix:<a href=\"http:\\/\\/thereifixedit.com\\/wp-content\\/uploads\\/2009\\/07\\/tifi-hottub.jpg\" class=\"moz-txt-link-freetext\">test\\[\\[posterous-content:[A-Za-z0-9]+\\]\\]<\\/a>)\n should convert <img src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" class=\"posterous_download_image\" /> to (?-mix:\\[\\[posterous-content:[A-Za-z0-9]+\\]\\])\n should convert <img class=\"posterous_download_image\" src=\"http://farm4.static.flickr.com/3177/2348758535_ce40b94e01_o.png\" alt=\")\" /> to (?-mix:\\[\\[posterous-content:[A-Za-z0-9]+\\]\\])\n should convert <img class=\"posterous_download_image\" src=\"http://feeds.wordpress.com/1.0/categories/nakanohajime.wordpress.com/99/\" border=\"0\" alt=\"\" /> to no change\n should convert <img class=\"posterous_download_image\" src=\"http://stats.wordpress.com/b.gif?host=nakanohajime.wordpress.com%20&lt;/body&gt;&lt;/html&gt;\" border=\"0\" alt=\"\" /> to no change\n should fix munged wordpress urls\n should not fuck with other query strings\n should skip images with no posterous_download_image class\n should skip long urls\n should skip images with no posterous_download_image class\n convert images to img src\n should convert http://foo.com/a.gif to <img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" />\n should convert <a href=\"http://foo.com/a.gif\">http://foo.com/a.gif</a> to <img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" />\n should convert <a href=\"http://foo.com/a.gif\"> http://foo.com/a.gif </a> to <img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" />\n should convert <p><a href=\"http://foo.com/a.gif\">http://foo.com/a.gif</a></p> to <p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert <p>http://foo.com/a.gif</p> to <p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert \n<p> http://foo.com/a.gif </p>\n to \n<p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert \n<p>\nhttp://foo.com/a.gif\n</p>\n to \n<p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert <br>\n <a class=\"moz-txt-link-freetext\"\n href=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\">http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg</a> to <br />\n <img class=\"posterous_download_image\" src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" border=\"0\" />\n should convert a lone image br tags tag to the img src with space and previous / later text blocks\n should not convert a lone image br tags tag to the img src with space\n should not touch items in attributes\n should not touch items in the middle of text blocks\n matching images with IMAGE_URL_REGEX\n should match normal image urls\n should match urls with extra space\n should match image urls with a query string\n should not match non image urls\n should not match non image urls ending in image extension\n\n1)\n'Expanders should expand dailyshow' FAILED\nexpected \"<object resource=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" rel=\\\"media:video\\\" type=\\\"application/x-shockwave-flash\\\" xmlns:dc=\\\"http://purl.org/dc/terms/\\\" height=\\\"299\\\" xmlns:media=\\\"http://search.yahoo.com/searchmonkey/media/\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"500\\\">\\n <param name=\\\"movie\\\" value=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" />\\n <param name=\\\"wmode\\\" value=\\\"opaque\\\" />\\n <param name=\\\"bgcolor\\\" value=\\\"#000000\\\" />\\n <param name=\\\"seamlesstabbing\\\" value=\\\"true\\\" />\\n <param name=\\\"swliveconnect\\\" value=\\\"true\\\" />\\n <param name=\\\"allowscriptaccess\\\" value=\\\"always\\\" />\\n <param name=\\\"allownetworking\\\" value=\\\"all\\\" />\\n <param name=\\\"allowfullscreen\\\" value=\\\"true\\\" />\\n <param name=\\\"flashvars\\\" value=\\\"autoPlay=false&amp;configParams=site%3Dthedailyshow.com&nextvideo=off&endCapAutoPlay=false\\\" />\\n \\n <!--[if !IE]>-->\\n <object data=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" resource=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" rel=\\\"media:video\\\" id=\\\"video_player\\\" type=\\\"application/x-shockwave-flash\\\" xmlns:dc=\\\"http://purl.org/dc/terms/\\\" height=\\\"299\\\" xmlns:media=\\\"http://search.yahoo.com/searchmonkey/media/\\\" width=\\\"500\\\">\\n <param name=\\\"movie\\\" value=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" />\\n <param name=\\\"wmode\\\" value=\\\"opaque\\\" />\\n <param name=\\\"bgcolor\\\" value=\\\"#000000\\\" />\\n <param name=\\\"seamlesstabbing\\\" value=\\\"true\\\" />\\n <param name=\\\"swliveconnect\\\" value=\\\"true\\\" />\\n <param name=\\\"allowscriptaccess\\\" value=\\\"always\\\" />\\n <param name=\\\"allownetworking\\\" value=\\\"all\\\" />\\n <param name=\\\"allowfullscreen\\\" value=\\\"true\\\" />\\n <param name=\\\"flashvars\\\" value=\\\"autoPlay=false&amp;configParams=site%3Dthedailyshow.com&nextvideo=off&endCapAutoPlay=false\\\" />\\n <!--<![endif]--> \\n <div style=\\\"width:640px; height:383px; overflow:hidden; background-color:#000000; text-align:center; vertical-align:middle; display:table-cell;\\\">\\n <p>To view this movie you need the <a href=\\\"http://www.adobe.com/go/getflashplayer\\\">Adobe Flash Player</a> plugin. You also need JavaScript enabled in your browser.</p>\\n </div>\\n <a href=\\\"http://thedailyshow.mtvnimages.com/images/shows/tds/videos/season_14/14101/ds_14101_01_v6.jpg\\\" rel=\\\"media:thumbnail\\\"></a>\\n <a href=\\\"http://www.viacom.com/termsofuse/pages/searchterms.aspx\\\" rel=\\\"dc:license\\\"></a>\\n <span property=\\\"media:title\\\" content=\\\"Henry Louis-Gate\\\"></span>\\n <span property=\\\"dc:description\\\" content=\\\"Henry Louis-Gate sullies a racial tension-free six months in America.\\\"></span>\\n <span property=\\\"media:width\\\" content=\\\"640\\\"></span>\\n <span property=\\\"media:height\\\" content=\\\"383\\\"></span>\\n <span property=\\\"media:type\\\" content=\\\"application/x-shockwave-flash\\\"></span>\\n <span property=\\\"media:duration\\\" content=\\\"326\\\"></span>\\n <span property=\\\"dc:identifier\\\" content=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\"></span>\\n <span property=\\\"dc:date\\\" content=\\\"2009-07-28\\\"></span> \\n <!--[if !IE]>-->\\n </object>\\n <!--<![endif]-->\\n </object>\" to match /embed/\n./spec/lib/expanders_spec.rb:15:\n\n2)\n'Expanders test individual expanders should expand Posterous::Expanders::Ted for http://www.ted.com/talks/natasha_tsakos_multimedia_theatrical_adventure.html' FAILED\nexpected not nil, got nil\n./spec/lib/expanders_spec.rb:110:\n\n3)\n'Expanders test individual expanders should expand Posterous::Expanders::Dailyshow for http://www.thedailyshow.com/watch/tue-july-28-2009/henry-louis-gate' FAILED\nexpected not nil, got nil\n./spec/lib/expanders_spec.rb:110:\n\n4)\n'Expanders test individual expanders should expand Posterous::Expanders::Twitpic for http://twitpic.com/4zys9' FAILED\nexpected not nil, got nil\n./spec/lib/expanders_spec.rb:110:\n\n5)\nNoMethodError in 'Post facebook rich media attachments Generating Facebook Media Attachments should try and detect flash vars from arbitrary embeds'\nYou have a nil object when you didn't expect it!\nYou might have expected an instance of ActiveRecord::Base.\nThe error occurred while evaluating nil.[]\n./spec/models/post_spec.rb:1137:\n\n6)\n'LinksController when authorized#update should update the link's url' FAILED\nexpected: /cnn/,\n got: \"{\\\"html\\\":\\\" \\\",\\\"id\\\":143236}\" (using =~)\n./spec/controllers/links_controller_spec.rb:35:\n\nFinished in 2283.648692 seconds\n\n2249 examples, 6 failures\nrake aborted!\nCommand /usr/local/bin/ruby -I\"lib\" -S rcov --exclude \"spec/*,gems/*\" --rails -o \"coverage\" \"/usr/local/lib/ruby/gems/1.8/gems/rspec-1.3.0/bin/spec\" -- \"spec/lib/media_downloader_spec.rb\" \"spec/lib/posterous/highlighter_spec.rb\" \"spec/lib/posterous/service_detector_spec.rb\" \"spec/lib/resource_rate_limiter_spec.rb\" \"spec/lib/media_identifier_spec.rb\" \"spec/lib/move_posts_spec.rb\" \"spec/lib/user_agent_helper_spec.rb\" \"spec/lib/tag_pages_spec.rb\" \"spec/lib/freud_spec.rb\" \"spec/lib/redis_analytics_spec.rb\" \"spec/lib/autopost_services/ext_facebook_spec.rb\" \"spec/lib/autopost_services/ext_twitter_oauth_spec.rb\" \"spec/lib/autopost_services/ext_twitter_basic_spec.rb\" \"spec/lib/autopost_services/shared_ext_twitter_spec.rb\" \"spec/lib/autopost_services/ext_meta_weblog_spec.rb\" \"spec/lib/theming_spec.rb\" \"spec/lib/url_helper_spec.rb\" \"spec/lib/belongs_to_content_part_spec.rb\" \"spec/lib/s3_helper_spec.rb\" \"spec/lib/log_helper_spec.rb\" \"spec/lib/notification_sender_spec.rb\" \"spec/lib/expanders_spec.rb\" \"spec/lib/contacts_import_spec.rb\" \"spec/lib/sanitizer_spec.rb\" \"spec/lib/expanders/google_maps_spec.rb\" \"spec/lib/expanders/gist_spec.rb\" \"spec/lib/smart_serializable_spec.rb\" \"spec/lib/extensions/delayed_job/email_errors_spec.rb\" \"spec/lib/extensions/delayed_job/handler_priority_uniqueness_spec.rb\" \"spec/lib/extensions/uri_encode_before_parse_spec.rb\" \"spec/lib/extensions/memcached_retry_read_errors_spec.rb\" \"spec/lib/extensions/merge_find_options_with_scope_spec.rb\" \"spec/lib/xmlrpc_ping_spec.rb\" \"spec/lib/friend_finder_spec.rb\" \"spec/lib/uniq_by_attr_spec.rb\" \"spec/models/feed_import_spec.rb\" \"spec/models/post_finders_spec.rb\" \"spec/models/contact_spec.rb\" \"spec/models/site_theme_spec.rb\" \"spec/models/user_profile_pic_spec.rb\" \"spec/models/link_spec.rb\" \"spec/models/mail_settings_spec.rb\" \"spec/models/file_part_spec.rb\" \"spec/models/external_site_spec.rb\" \"spec/models/video_part_spec.rb\" \"spec/models/blog_import_spec.rb\" \"spec/models/xanga_import_spec.rb\" \"spec/models/subscription_spec.rb\" \"spec/models/user_spec.rb\" \"spec/models/mail_robot_spec.rb\" \"spec/models/posterous_feature_spec.rb\" \"spec/models/theme_spec.rb\" \"spec/models/email_spec.rb\" \"spec/models/site_extra_spec.rb\" \"spec/models/file_ref_spec.rb\" \"spec/models/email_subscription_spec.rb\" \"spec/models/blogger_import_spec.rb\" \"spec/models/site_spec.rb\" \"spec/models/post_serialized_content_part_spec.rb\" \"spec/models/image_spec.rb\" \"spec/models/ning_import_spec.rb\" \"spec/models/post_spec.rb\" \"spec/models/tweet_photo_import_spec.rb\" \"spec/models/word_press_import_spec.rb\" \"spec/models/active_rain_import_spec.rb\" \"spec/models/tumblr_import_spec.rb\" \"spec/models/content_part_spec.rb\" \"spec/models/post_quick_spec.rb\" \"spec/models/audio_part_spec.rb\" \"spec/models/square_space_import_spec.rb\" \"spec/models/image_part_spec.rb\" \"spec/models/user_profile_spec.rb\" \"spec/models/page_spec.rb\" \"spec/models/location_spec.rb\" \"spec/models/comment_spec.rb\" \"spec/models/credit_card_spec.rb\" \"spec/models/domain_spec.rb\" \"spec/mongo_models/resource_viewing_spec.rb\" \"spec/integration/hostname_redirect_spec.rb\" \"spec/integration/sso_spec.rb\" \"spec/integration/cookie_domain_spec.rb\" \"spec/integration/recover_corrupted_session_spec.rb\" \"spec/controllers/domains_controller_spec.rb\" \"spec/controllers/coke_controller_spec.rb\" \"spec/controllers/admin_controller_spec.rb\" \"spec/controllers/http_check_controller_spec.rb\" \"spec/controllers/sso_controller_spec.rb\" \"spec/controllers/post_registration_controller_spec.rb\" \"spec/controllers/people_controller_spec.rb\" \"spec/controllers/bookmarklet_controller_spec.rb\" \"spec/controllers/phone_controller_spec.rb\" \"spec/controllers/share_controller_spec.rb\" \"spec/controllers/oauth_controller_spec.rb\" \"spec/controllers/uploads_controller_spec.rb\" \"spec/controllers/main_controller_spec.rb\" \"spec/controllers/routing_spec.rb\" \"spec/controllers/site_controller_spec.rb\" \"spec/controllers/autopost_controller_spec.rb\" \"spec/controllers/switch_controller_spec.rb\" \"spec/controllers/reader_controller_spec.rb\" \"spec/controllers/manage_controller_spec.rb\" \"spec/controllers/user_settings_controller_spec.rb\" \"spec/controllers/analytics_controller_spec.rb\" \"spec/controllers/getfile_controller_spec.rb\" \"spec/controllers/pages_controller_spec.rb\" \"spec/controllers/postly_controller_spec.rb\" \"spec/controllers/posts_controller_spec.rb\" \"spec/controllers/moderate_controller_spec.rb\" \"spec/controllers/api2_controller_spec.rb\" \"spec/controllers/email_subscriptions_controller_spec.rb\" \"spec/controllers/links_controller_spec.rb\" \"spec/controllers/maps_controller_spec.rb\" \"spec/controllers/api_controller_spec.rb\" \"spec/helpers/pages_helper_spec.rb\" --options \"/home/posterous/posterous/spec/spec.opts\" failed\n\n(See full trace by running task with --trace)", "MESSAGE"=>"now setting user properly on import creation in manager"}
irb(main):022:0> OLD_ENV = Hash.new(ENV)
=> {}
irb(main):023:0> OLD_ENV
=> {}
irb(main):024:0> OLD_ENV = ENV.clone
(irb):24: warning: already initialized constant OLD_ENV
=> {"SHELL"=>"/bin/bash", "TERM"=>"screen", "SSH_CLIENT"=>"24.5.83.171 51266 22", "SSH_TTY"=>"/dev/pts/7", "USER"=>"posterous", "LS_COLORS"=>"no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:", "SSH_AUTH_SOCK"=>"/tmp/ssh-MmBlFZ7352/agent.7352", "TERMCAP"=>"SC|screen|VT 100/ANSI X3.64 virtual terminal:\\\n\t:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:\\\n\t:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:\\\n\t:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:\\\n\t:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:\\\n\t:li#44:co#155:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:\\\n\t:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:\\\n\t:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:\\\n\t:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:\\\n\t:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:\\\n\t:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mr=\\E[7m:me=\\E[m:ms:\\\n\t:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:\\\n\t:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:\\\n\t:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\\\n\t:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:k5=\\E[15~:\\\n\t:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:k9=\\E[20~:k;=\\E[21~:\\\n\t:F1=\\E[23~:F2=\\E[24~:kb=\177:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:\\\n\t:@7=\\E[4~:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:\\\n\t:kd=\\EOB:kr=\\EOC:kl=\\EOD:km:", "PATH"=>"/home/posterous/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games", "MAIL"=>"/var/mail/posterous", "STY"=>"7790.pts-7.internal1", "PWD"=>"/home/posterous/posterous/.git/hooks", "EDITOR"=>"vi", "HISTCONTROL"=>"ignoreboth", "HOME"=>"/home/posterous", "SHLVL"=>"2", "RAILS_ENV"=>"production", "LOGNAME"=>"posterous", "WINDOW"=>"0", "SSH_CONNECTION"=>"24.5.83.171 51266 67.207.129.58 22", "LESSOPEN"=>"| /usr/bin/lesspipe %s", "INTERNAL_IP"=>"172.19.1.207", "LESSCLOSE"=>"/usr/bin/lesspipe %s %s", "_"=>"/usr/local/bin/irb", "LINES"=>"44", "COLUMNS"=>"155", "SHA"=>"66394662fc140f38bf5e5737f7522ae67a36dc76", "AUTHOR"=>" Christopher Burnett <signalstatic@gmail.com>", "OUTPUT"=>"rm -r coverage\n(in /home/posterous/posterous)\n/home/posterous/posterous/lib/extensions/hpricot/hpricot.rb:190: warning: already initialized constant ElementContent\nExpanders\n should expand youtube\n should expand dailyshow (FAILED - 1)\n should expand teachertube.com\n should handle bad strings ok\n should expand vimeo via oembed\n should expand animoto via oembed\n should expand generic images\n should not expand generic images for non-bookmarklet\n should expand a youtube link inside a post\n should expand a youtube link inside a post but remove link\n should not expand a generic link inside a post, but should autolink\n should get contents of a good url\n should not fail or return exception for 404 url\n expand tests\n should expand even if there are nbsp's'\n test individual expanders\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/v/B-Ka8DnUVEQ?fu003dvideos&appu003dyoutube_gdata\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/watch#!v=P4eT-G-T_qE&feature=related\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/watch%3Fv%3DhVeSPyAp8aU\n should expand Posterous::Expanders::Youtube for http://www.youtube.com/watch?v=hVeSPyAp8aU\n should expand Posterous::Expanders::Flickr for http://www.flickr.com/photos/garrytan/sets/72157622786190208/\n should expand Posterous::Expanders::Flickr for http://www.flickr.com/photos/garrytan/tags/nyc/\n should expand Posterous::Expanders::Blip for http://blip.tv/file/2441904/\n should expand Posterous::Expanders::AcademicEarth for http://academicearth.org/lectures/electric-chargres-polarization-and-electric-force\n should expand Posterous::Expanders::FunnyOrDie for http://www.funnyordie.com/videos/f5d71fd02f/big-ups-doin-it-exclusive-music-video\n should expand Posterous::Expanders::Break for http://www.break.com/break-originals/elevator-show/elevator---human-testing.html\n should expand Posterous::Expanders::Vimeo for http://vimeo.com/12835319\n should expand Posterous::Expanders::Ted for http://www.ted.com/talks/natasha_tsakos_multimedia_theatrical_adventure.html (FAILED - 2)\n should expand Posterous::Expanders::Ted for http://www.ted.com/talks/stefan_sagmeister_the_power_of_time_off.html\n should expand Posterous::Expanders::Ted for http://www.ted.com/talks/karen_armstrong_makes_her_ted_prize_wish_the_charter_for_compassion.html\n should expand Posterous::Expanders::Scribd for http://www.scribd.com/doc/17927204/Cash-for-Clunkers-House-Legislation\n should expand Posterous::Expanders::Docstoc for http://www.docstoc.com/docs/9408639/Get-a-Low-Cost-Dental-Insurance\n should expand Posterous::Expanders::Slideshare for http://www.slideshare.net/MediaSauce/business-lessons-from-10-internet-success-stories\n should expand Posterous::Expanders::Onion for http://www.theonion.com/content/video/congresswoman_says_botched\n should expand Posterous::Expanders::Onion for http://www.theonion.com/video/congresswoman-says-botched-plastic-surgery-most-im,14355/\n should expand Posterous::Expanders::Dailyshow for http://www.thedailyshow.com/watch/tue-july-28-2009/henry-louis-gate (FAILED - 3)\n should expand Posterous::Expanders::Issuu for http://issuu.com/blackrockcollective/docs/issue1\n should expand Posterous::Expanders::Issuu for http://issuu.com/titlemagazine/docs/issue3?documentId=090728202426-c17cf66c618d4c7bbd879fa0cd6b2498\n should expand Posterous::Expanders::Ning for http://hvwpsi09.ning.com/video/reflection-2009-revqt2\n should expand Posterous::Expanders::Ning for http://hvwpsi09.ning.com/photo/picnik-collage?context=latest\n should expand Posterous::Expanders::Twitvid for http://www.twitvid.com/8E351\n should expand Posterous::Expanders::Twitpic for http://twitpic.com/4zys9 (FAILED - 4)\n should expand Posterous::Expanders::Yfrog for http://img43.yfrog.com/i/srs.mp4/\nhttp://desmond.yfrog.com/Himg405/scaled.php?tn=0&server=405&filename=fvg.jpg&xsize=640&ysize=640\n should expand Posterous::Expanders::Yfrog for http://img405.yfrog.com/i/fvg.jpg/\n should expand Posterous::Expanders::Oembed for http://www.dailymotion.com/us/creative/video/xa33u4_how-can-podcasts-benefit-musiciansy_school\n should expand Posterous::Expanders::Viddler for http://www.viddler.com/explore/thehockeyzen/videos/53/\n should expand Posterous::Expanders::Viddler for http://www.viddler.com/explore/failblog/videos/275/\n should expand Posterous::Expanders::GoogleVideo for http://video.google.com/videoplay?docid=1831463738168502680&hl=en\n should expand Posterous::Expanders::Tudou for http://www.tudou.com/l/BgSGRETVF0g\n should expand Posterous::Expanders::Tudou for http://www.tudou.com/v/adAbak6TiLg/v.swf\n should expand Posterous::Expanders::SchoolTube for http://www.schooltube.com/video/cba6e6dc2a85f6c5a231/2010-CoSN-Conference-Montage\n should expand Posterous::Expanders::Mpora for http://video.mpora.com/watch/Myc1v5l1x/\nSwitchController\n #index\n when not logged in\n should render the switcher form\n should assign a switcher\n when logged in\n should render the switcher form without the email\n should assign a switcher\n #discover\n with invaild params\n should render the form again\n should set the flash[:error] for email\n should set the flash[:error] for site_url\n should set the flash[:error] for service type\n with valid params\n should render switch/import\n when email belongs to an existing user and not logged in\n should render switch/login\n when user is logged in\n should render switch/login\n should set switcher in the session\n when site_url is not a valid service\n should render switch/error\n should set the flash[:error] for bad service type\n when service requires auth\n should redirect to more_info\n should set the switcher in the session\n switcher should be valid\n #verify_twitter_auth\n should respond with 200 if there is a valid twitter account in session\n should respond with status 400 if there isn't a valid twitter acocunt in session\n #tweet\n should try and tweet something if POSTed\nVideoPart\n in general\n should return video as content_part_type\n should return orphaned_part_type\n being created\n should require a uploaded_file\n successfully\n should save its uploaded_file to s3\n should create FileRef\n should enqueue processing\n an instance\n should return file if only thing set for all_files\n should return other files if set\n enqueuing processing\n should create a transcode dj when enqueuing processing\n should not create a dj if the related conent part has no post\n should create a transcode dj with a related page\nTheme\n should find the global themes and users themes and put all the globals first\n an instance\n should strip out any xml declarations from the raw theme on save\nLink\n #create\n when invalid\n should not be vaild without a title\n should not be vaild without a url\n when valid\n should be vaild\n should have a site\n should have display_order\n should create a category...\n ...and assign it as the parent\n when creating a new category\n should not have any errors\n shouldn't create a parent category\n #move_to_position\n should move link1 to 2\n should move link2 to 0\n should move link3 to 1\nXangaImport\n a squarespace blog\n #site_doc\n should not be nil\n #api_url\n should find an id\n #valid?\n should be valid\n #save and #import!\n{\"permalink\"=>\"http://christwoism.xanga.com/729355780/this-is-a-title/\", \"title\"=>\"this is a title\", \"userid\"=>\"37006297\", \"postid\"=>\"729355780\", \"wp_slug\"=>\"\", \"categories\"=>[], \"description\"=>\"<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>\"}\n2010-06-28\n{\"permalink\"=>\"http://christwoism.xanga.com/724487358/item/\", \"title\"=>\"\", \"userid\"=>\"37006297\", \"postid\"=>\"724487358\", \"wp_slug\"=>\"\", \"categories\"=>[], \"description\"=>\"Hi everyone! I'm just getting started on Xanga... Drop me a comment if you've got some ideas on what to do first - or just to say, \\\"Hi!\\\" <IMG height=15 src=\\\"http://www.xanga.com/Images/smiley1.gif\\\" width=15>\"}\n2010-03-30\n should have 1 posts\nTheming\n should expand complex block structures into the correct block objects\n should output ListSidebar only on list actions\n should output ShowSidebar only on show actions\n should work with lowercase blocks\n should properly replace colors\n should add a more block to the posts block\n should properly handle page blocks\n should properly handle link blocks\n should automatically add a search page to the top of the posts block if the theme doesn't have one\n should resolve ids\n helpers\n should add if does not exist\n should add parent tag if does not exist\n should not change the item if the item already exists\n sanitization\n should allow acceptable styles in style tags: font-family: Arial, Helvetica, sans-serif;\n should allow acceptable styles in style tags: font-family: 'Arial', 'Helvetica', sans-serif;\n should allow acceptable styles in style tags: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style tags: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style tags: border-top: 1px solid #eee;\n should allow acceptable styles in style tags: border: 1px solid #eee;\n should allow acceptable styles in style tags: padding: 1px;\n should allow acceptable styles in style tags: margin-bottom: 1px;\n should allow acceptable styles in style attributes: font-family: Arial, Helvetica, sans-serif;\n should allow acceptable styles in style attributes: font-family: 'Arial', 'Helvetica', sans-serif;\n should allow acceptable styles in style attributes: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style attributes: font-family: \"Arial\", \"Helvetica\", sans-serif;\n should allow acceptable styles in style attributes: border-top: 1px solid #eee;\n should allow acceptable styles in style attributes: border: 1px solid #eee;\n should allow acceptable styles in style attributes: padding: 1px;\n should allow acceptable styles in style attributes: margin-bottom: 1px;\n should kill bad html: <div onclick=\"alert('\n should kill bad html: <script type=\"text/ja\n should kill bad html: <!DOCTYPE html PUBLIC\n should kill bad html: \t<link rel=\"st\n allowing tags\n should allow p\n should allow div\n should allow b\n should allow em\n should allow html\n should allow body\n allowing attributes\n should allow type\n should allow xmlns:fb\n should allow xmlns\n should allow http-equiv\n should allow content\n should allow id\n should allow type\n should allow name\n should allow value\n should allow style\n should allow rel\n should allow valign\n should allow allowfullscreen\n should allow type\n should allow allowscriptaccess\n should allow flashvars\n should allow classid\n should allow data\n should allow codebase\n should allow wmode\n should allow pluginspage\n should allow quality\n should allow target\n should allow frameborder\n should allow marginwidth\n should allow marginheight\n should allow action\n should allow method\n should allow media\n should allow rowspan\n should allow colspan\n should allow cellspacing\n should allow cellpadding\n should allow debug\n should allow layout\n should allow show_faces\n should allow colorscheme\n should allow shape\n should allow coords\n should allow alt\n should allow usemap\n should allow charset\n should allow lang\n should allow datetime\n should allow pubdate\n should allow property\n allowing specific html\n should allow specific html like: <table><tr><td cellspacing=\"5\" cellpadding=\"10\">hello world</td></tr></table>\n should allow specific html like: <meta property=\"fb:admins\" content=\"12345\" />\nApiController\n #locations\n should be 200\n should be json\n handling files via POST uploadAndPost\n should reject the post if the twitter auth is not correct\n with valid twitter credentials\n should return twitpic 'created response' if the correct twitter auth and text is passed in\n should set the via_type of the post to via_twitter_api\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should return an error of type 1003 'Invalid media type' and send email if two invalid photos were sent\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-1.jpg' @ jpeg.c/EmitMessage/233.\n should return no errors and discard one image and send email if one broken and one correct image was sent.\n handling files via POST upload\n should reject the post if the twitter auth is not correct\n with valid twitter credentials\n should return twitpic 'created response' if the correct twitter auth and text is passed in\n should set the via_type of the post to via_twitter_api\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\n should set the via_text to the passed in source field\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should return an error of type 1003 'Invalid media type' and send email if two invalid photos were sent\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-1.jpg' @ jpeg.c/EmitMessage/233.\n should return no errors and discard one image and send email if one broken and one correct image was sent.\n newpost\n with valid http auth\n should create a new post\n should set the via_type of the new post to via_api\n should set source field to via_text when creating post\n should accept ping.fm posts normally\n should reject banned users\n should reject banned sites\n should reject unconfirmed users\n should not accept ping.fm posts in PANIC_MODE\n should limit rate limit users\n newcomment\n with a user logged in\n should allow comment creation\n should return error if given bad post id\n should return an error if comments are turned off for site\n readposts\n should return an error w/o auth or site id\n with valid http auth\n should return an error without a bad site_id\n should list 10 posts by default\n should list at most num_posts\n should list less than num_posts if there are fewer\n getpost\n error conditions for getpost\n should return with \"Invalid url\" 2001 error\n should return a post sucessfully with post_id param\n gettags\n without a user logged in\n should return and error for private sites\n should be success for a public site\n with a user logged in\n should return error w/ erroneous site id\n should show tags for another user's public site\n should return error for another user's private site\n should lookup site via hostname\n should lookup site via id\n handling requests from http and https\n Handling SSL actions\n should be agnostic to http or https for uploading - testing: uploadAndPost, http\n should be agnostic to http or https for uploading - testing: uploadAndPost, https\n should be agnostic to http or https for uploading - testing: upload, http\n should be agnostic to http or https for uploading - testing: upload, https\n should be agnostic to protocol for readposts - testing: http\n should be agnostic to protocol for readposts - testing: https\nPost\n should be valid\n should succeed when saved by a user who owns the site\n should asynchronously be able to call create_notifications_for_post\n should asynchronously be able to call remove_notifications_for_post\n should create notifications for subscriptions when a new post is added\n should create multiple notifications \n should remove notifications when a post is destroyed\n should remove notifications when a post is marked private\n should update notifications when a post is updated\n Generated strings\n should generate removestring\n should generate privatestring\n should generate commentstring\n Postprocessing itself\n should always check to see if it needs processing after each save\n should queue a delayed job if the post is unprocessed\n should not queue a delayed job if the post is processed\n the actual act of postprocessing\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_external_urls?\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_video?\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_audio?\n should schedule itself for future postprocessing if it has unprocessed media parts - has_unprocessed_image?\n Conditions for skipping autoposts\n should not queue autoposts if it is private\n should not queue autoposts if it belongs to a private site\n should not queue autoposts if it belongs to a banned site\n should not queue autoposts if it belongs to a banned user\n should not queue autoposts if it belongs to a banned email\n should not queue autoposts if the site isn't confirmed\n should not queue autoposts if the destination of the post is a moderated group blog\n Conditions for queueing autoposts\n by a user\n should queue all autoposts when incoming username is post\n should queue autoposts when there is a bookmarklet style incoming_username\n by a group profile\n should queue autoposts when there is a group profile\n should avoid duplicates\n by a post with no associated user (e.g., by twitter-only site)\n should queue autoposts\n Conditions for doing an XMLRPC Ping\n should do an xmlrpc ping if it passes muster\n scheduling itself for future posting\n should set a future display date from a subject line option after_save\n should remove the future posting subject line elements\n should remove the future posting subject line elements when scheduling from string\n should set itself to private\n should add a delayed_flag into the incoming_username of a post\n should have a method for actually publishing in the future\n should not publish itself if the display_date is very different publish call is made\n should publish a post if its scheduled time is in the past\n should not create multiple sets of subscriptions on publishing\n should save a new delayed_job that will handle publish the post at the future date\n should default to 1 week from now for display date if it doesn't understand the lag string\n for the delay string publish: midnight tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: noon today\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 5:32 am today\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 3pm tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow midnight\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: today at 5:32 pm\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 5:32 am\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on 3/12/2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on 3/12/2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 5 minutes\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 5 minutes\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 5:45pm\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 5:45pm\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on March 12, 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: today at noon\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: March 12, 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: \"in 10 hours\"\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 2:35 am\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow at noon\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: April 08, 2010 at 6:12 AM\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: on March 12 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: March 12 2020\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: one hour\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: April 08, 2010 at 07:38 PM\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: tomorrow at 2:12 AM\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: 2 days\n should understand it in the subject line\n should it when updating by string\n for the delay string delay: 1 day\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: noon tomorrow\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: in 10 hours\n should understand it in the subject line\n should it when updating by string\n for the delay string publish: \"on 3/12/2020\"\n should understand it in the subject line\n should it when updating by string\n via type\n should have contstants\n should have predicates and allow setting via symbol\n ping!\n should set via_type to via_email\n should queue postprocess job\n should queue location job and postprocess job for post with images parts with lat set\n being validated\n should require a site\n being created\n should update posts_count of site\n replacing emailed #more tag\n should replace #more with a comment\n should replace <br>#more<br> with a comment\n should replace <br/>#more<br/> with a comment\n should replace #more<br/> with a comment\n should replace <div>#more</div> with a comment\n should replace <span>#more</span> with a comment\n should replace #more with a comment\n should replace #moresomething with a comment\n should replace div#more with a comment\n adding and extracting tags\n should add tags from string\n should not add tags already on the post with add_tags\n should not create new Tag objs for existing ones add_tags\n should extract tags\n should add from proto multiselect\n should properly avoid dupes\n having external image urls\n should create content parts when i create a new post with an external url\n should create content parts when i edit an existing post with an external url\n should use the same content part on subsequent process_body calls\n should use the same content part multiple times for the same external image\n creating a url slug\n should create a url slug for an nil title\n should create a url slug for an empty title\n should should not create dupe slugs for the same title\n should contintue to increment from dupe titles\n should add random chars to common url slugs\n should transliterate foreign chars in slug\n should remove untitled from slug\n should remove (()) clauses from slug\n should turn ampersand into and in slug\n should get rid of not word stuff\n should turn whitespace into -\n should reduce multiple - down to 1\n should make everything lowercase\n should get rid of whitespace at start end end\n should limit to 45 chars\n being saved\n should create locations for image parts with lat/lng\n being destroyed\n should update posts counts for site\n creating a location summary\n should use Location#summary\n should and separate multiple loc summaries\n should not inlcude dupe summaries\n should comma/and separate multiple loc summaries\n should comma/and separate multiple loc summaries\n should consolidate state name for cities from same state\n should consolidate country names for cities from same country\n locations association\n should extend uniq_by_attr\n dejavascriptifying nojs items\n should dejavascriptify github\n creating html\n cached for facebook\n should remove object, embed and param tags\n should get rid of iframes\n for notifications\n should remove object, embed and param tags\n should get rid of iframes\n having media added\n should add new content parts to body smoothly without removing old ones\n should create an image ContentPart given files\n should create a single image ContentPart if given multiple files\n should create an image content part given and ImagePart\n with an existing image content part\n should add new images to the existing content part with add_media_from_files!\n with an existing file content part\n should add the new posterous content id after the existing pci\n returning valid comments\n should return comments\n should not return unallowed comments\n should not return comments with banned users\n should not return comments with banned users if you are logged in\n caching comments_count and looking up number_of_comments\n should update the comments_count on related post\n should not count unallowed comments in comments_count\n should not count comments w/ banned users in comments_count\n should set comments_count correctly for an arbitrarily large # of comments\n facebook rich media attachments\n should extract plaintext\n Generating Facebook Media Attachments\n should detect embedded flash video - YouTube\n should detect embedded flash video - Vimeo\n should try and detect flash vars from arbitrary embeds (FAILED - 5)\nManageController\n with a user logged in\n #index\n should render :index\n should assign the users sites\n should assign imports\n should assign :stale_imports\n #subscribers\n should render :subscribers\n should assign subscribers\n should be the correct site\n a missing site or bad site\n should redirect to manage#index\n should set the flash\n #settings\n should render :settings\n with a phone number set\n should return the currently set user\n #site\n should render :site\n should assign posts\n should assign hostname\n should be the correct site\n should create two link categories: Navigation and Sites I Like\n as a contributor\n should have access to the site\n unauthorized access\n should not be able to access site\n should set the flash\n should not be able to access subscribers\n should set the flash\nPage\n #create\n when invalid\n should not be vaild without a title\n should not be vaild without a body\n when valid\n should be vaild\n should have a site\n should have display_order\n should belong to a link\n sub pages\n should contain the sub page\n should have the correct parent page\n url slugs\n should have url slugs\n #move_to_position\n should move page1 to 2\n should move page2 to 0\n should move page3 to 1\nPostsController\n Handling Subscriptions\n Following Users\n should subscribe you to all of the user's active sites (excluding private ones) when following a user\n Removing Subscribers\n Should not allow you to remove a subscription if you're not logged in\n Should allow you to remove a subscription that you own\n should allow you to remove a subscription to your own site\n should not allow you to remove a subscription you don't own\n on the site's domain\n without anyone logged in\n should raise bad page error for bad page\n should assign post to posts for list without page\n should assign post to posts for list with page\n should assign empty posts for list with page 2\n should update the cache\n showing a private post\n should not show a private post without the privatestring\n should show a private post given privatestring\n showing a list page\n should show a list page\n should not show a list page for a banned site\n should not show a list page for a site owned by a banned user\n showing a normal post\n should show the post given a url_slug as id\n should show the post even if the site theme is invalid\n should redirect a search to list\n should show a 404 for missing page\n should show a 404 for page on a site owned by a banned user\n should show a 404 for page on a banned site\n when viewing from a mobile browser\n should show the mobile version of the list page\n should show the mobile version of the show page\n should show next and previous link if viewing a middle post\n should show next link but not the previous link if viewing last post\n should show previous link but not next link if viewing first post\n should not show the mobile version of the site if user has chosen not to\n 404 request\n should show a 404 for a missing blog\n should show a 404 for a missing blog on mobile\n should show a 404 for a missing blog on iphone\n pinging a comment\n should allow a comment from a user\n should allow a comment from a contributor\n should moderate a comment from a non user non contributor\n for a site that does not allow comments\n should not allow a comment\n for a site that allows logged in users to comment\n should not allow a comment\n for a site that allows logged in users to comment (moderation)\n should allow a comment by the site owner\n should moderate a comment\n for a site that allows anyone to comment\n should allow an anon comment\n should not create a comment if bot field is filled in\n submitting an akismet spam comment\n should not create a comment if akismet returns spam\n should not incrment post comment count when receiving spam comment\n with a site owning user\n should show unmoderated comments\n with a (non site owning) user logged in\n should create a comment with ajaxcomment\n should create a comment with privateajaxcomment\n should return json for ajaxcomment using xhr\n should not show unmoderated comments\n for a mobile user agent\n should not blow up on show page\n on a forwarding site's domain\n should forward slug for public post\n should forward to private path of private post\n on posterous.com\n without anyone logged in\n should redirect new\n should redirect create\n be able to edit a post while not logged in (legacy editpost)\n edit post body\n fail to edit post body on wrong removestring\n should update a post body\n should fail update a post body on invalid removestring\n should update a display date with pretty date\n should not change the site id if the user passes something in\n be able to edit a post while not logged in (new, using auth param on edit/update action)\n edit post body\n fail to edit post body on wrong removestring\n should update a post body\n should delete a post\n should fail to delete a post with wrong removestring\n should fail update a post body on invalid removestring\n should update a display date with pretty date\n should not change the site id if the user passes something in\n with a user logged in\n Creating a new post\n should create a new post\n should set via_type of new posts to via_web\n should download images to avoid hotlinking\n should create a new post and autopost\n should create a new post and autopost with specific selections\n should create a new post and not autopost if there is no autopost specified\n should redirect create given another user's site\n Updating a post\n should update a post\n should update a post if you are a contributor and you created the post\n should not update a post if you are a contributor and you did not create the post\n<p><html><body>You are being <a href=\"http://hostname1442.posterous.com/private/nInqhyrgwF\">redirected</a>.</body></html> <p>Post was successfully updated.\n should update a post using the auth string while logged in without messing with owner or the site\n should allow you to reschedule a delayed post\n should allow you to publish a post immediately\n should assign a post to a different site\n should not update a post you don't own\n should update a post w/o an explicit site id\n should update a post w/ nonsense for site id\n Destroying a post\n should delete a post\n should delete a post by another user when i am site owner\n should not delete a post by another user when i am just a site contributor\n should not delete a post you don't own\n Autoposting a post\nYou have a nil object when you didn't expect it!\nYou might have expected an instance of Array.\nThe error occurred while evaluating nil.index\n should allow you to autopost to a site\n dealing with submitted content parts\n should add content_parts when creating\n should update content parts of a post\n /textmarks\n should create a post give a phone number\n should set via_type to via_sms\nComment\n should mark a public comment public\n should mark an unallowed comment not public\n should mark a comment to a private site private\n should mark a comment to a private post private\n should return cleanUrl even if url is nil\n dealing with active state\n should be active normally\n should not be active if unpinged\n should not be active if user is banned\n should update active\n the valid named scope\n should include normal comments\n should include normal comments w/o users\n should not include banned user comments\n should not include comments from banned users\n being created\n should fix broken post comments_count\n should not increment post comment count for unpinged posts\n should not increment post comment count for unallowed posts\n should update post comment count on save\n should set public\n being updated\n should correctly update the comments count of post already in memory\n should update active\n being destroyed\n should update post comment count on save\n Moderation, whitelist, and blacklisting\n POSTEROUS USER\n Moderation on\n should moderate an anonymous comment\n should moderate a comment by another user\n should allow a comment by an owner of the site\n should whitelist a user comment\n should handle a blacklisted user\n moderation off\n should post a comment\n should allow a comment by an owner of the site\n should do nothing on a whitelisted user comment\n should moderate a user comment if blacklisted\n FACEBOOK USER\n moderation on\n should moderate a comment\n should whitelist a user comment\n should handle a blacklisted user\n moderation off\n should post a comment\n should allow a comment by an owner of the site\n should do nothing on a whitelisted user comment\n should moderate a user comment if blacklisted\n TWITTER USER\n moderation on\n should moderate a comment\n should whitelist a user comment\n should handle a blacklisted user\n moderation off\n should post a comment\n should allow a comment by an owner of the site\n should do nothing on a whitelisted user comment\n should moderate a user comment if blacklisted\n VIA EMAIL\n basic ping_email functionality\n should set a site on ping\n should not barf on email being nil\n should not set to allowed if previous post by same email is not allowed\n should set allowed on subsequent emails only if one of the previous emails was allowed\n moderation on\n POSTEROUS USER\n should post an authorized user comment\n should moderate a non-authorized user comment\n should destroy a banned user comment\n should auto-approve a whitelisted user comment\n TWITTER USER\n should moderate a non-authorized user comment\n should destroy a banned user comment\n should auto-approve a whitelisted user comment\n FACEBOOK USER\n should moderate a non-authorized user comment\n should destroy a banned user comment\n should auto-approve a whitelisted user comment\n EMAIL USER\n should post an user comment of someone who is just an email contributor\n should moderate a random persons email\n moderation off\n POSTEROUS USER\n should post an authorized user comment\n should post a non-authorized user comment\n should delete a banned user comment\n should post a whitelisted user comment\n TWITTER USER\n should post a non-authorized user comment\n should delete a banned user comment\n should post a whitelisted user comment\n FACEBOOK USER\n should post a non-authorized user comment\n should delete a banned user comment\n should post a whitelisted user comment\n EMAIL USER\n should post an user comment of someone who is just an email contributor\n should moderate a random persons email\n Denormalization of site on comment\n should move all comments to another site on changing site id\n should do nothing if post is changed but site id is not changed\nNingImport\n #new\n should gen the blog url\n should gen the blog url\n #create\n #import\nopening page: http://cuwebd.ning.com/profiles/blog/list\ncollection size: 20\n****************************************************************************************************\n should have 20 posts\nPosterous::ServiceDetector\n #new\n should set the doc\n #detect_by_url\n should detect blogger\n #detect_by_generator\n should detect blogger\n #generator\n should detect blogger\n #to_klass\n should return BloggerImport\nImagePart\n in general\n should return image as content_part_type\n should return orphaned_part_type\n being validated\n should require a uploaded_file\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\n should not be valid with a bad image file\n with an external url\n should be valid with the external url, display external url for image part prior to processing\n should download external url on process\n should handle urls with weird extensions\nidentify: no decode delegate for this image format `/tmp/stream7930-1' @ constitute.c/ReadImage/531.\n should handle obviously wrong things by setting error status\n should handle totally invalid urls ok\n being created\n should put given uploaded_file on s3\n should create a corresponding full file and file ref and set dimensions\n should pull latitude and longitude off jpg image if present\n should also get geocords off jpeg images\n should process right away if process_after_create == true\n being processed\n w/ a jpg larger than 500 but smaller than 1000\n synchronously\n should update processed_at\n should update the size and dimensions of it's full file\n should create new Images and FileRefs for each FORMAT\n asynchronously\n should update processed_at\n should update the size and dimensions of it's full file\n should create new Images and FileRefs for each FORMAT\n with a jpg larger than 1000\n should create new Images and FileRefs for each FORMAT\n should destroy all images on destroy\n with a portrait photo more than 500px wide\n should create a 500 image that is 500 wide\n should have correct thumb\n with a landscape image with orientation data\n should orient the photo correctly\n should resize down to a width of 500\n should have correct thumb\n with a portrait image with (bad) orientation data\n should not auto orient\n should have correct thumb\n with a jpg smaller than the 500 format\n should create a scaled500 image that is not scaled and no scale1000 image\n should have correct thumb\n with animated gif\n should create scaled500 and thumb as a gif\n should use the full FileRef for the scaled500 FileRef\n should have correct thumb\n with a png\n should create scaled500 and thumb as a png\n should not flatten a png\n should have correct thumb\n with a tiff file larger than 500 but less than 1000\n should convert the tif to a jpg\n should have correct thumb\n with a PSD\n should convert the psd to a jpg\n should have correct thumb\n rotating an image\n should return a new image_part given integer rotation\n should return a new image_part given string rotation\n should double rotate an image that we autoorient\n instance\n it should set the post of associated location when added to content part\n should create a location when being saved with lat/lng and no location\n should not create a location if one exists when being saved w/ lat/lng\n should return all files\n should smart serialize\n should create a content_part dj when enqueuing processing\n calculating geo coords\n should not error with invalid coords\n should ignore invalid coords in seconds\n should return nil coord w/ error in degrees or minutes\nContentPart\n Belonging to Post\n being validated\n should set a value for posterous_content_id\n should set its site from its post\n should set its user from its post\n should set its email from its post\n Belonging to Page\n being validated\n should set a value for posterous_content_id\n should set its site from its page\n should set its user from its page\n should set its email from its page\n being saved\n should not stomp exisint posterous_content_id\n an instance\n should smart serialize\n should have predicates based on content type\n should have associates for each type\n should return label based on content_type\n being processed after create\n should process image_parts\n should enqueue transcoding for unprocessed audio parts\n should enqueue transcoding for unprocessed video parts\n with multiple images\n should create a zip file if it has multiple images\n should create a new zip if more files are added\n should not create a new zip if no images need processing\n should upate the body_html of it's post\n being created from media parts\n should group image parts\n should raise and error if media_part already has a content_id\n being created from files\n should not fail if give nothing\n should create a Delayed::Job\n with image file(s)\n should create a ContentPart with an ImagePart give an image file with create_from_files\n should remove spaces from filenames when creating s3_keys\n should create a single content part from multiple image files\n should fall back on file extension given general MIME type\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\n should not create any ContentParts with a bad image file\n should handle an image string as an uploade_file\n should use ImageMagick identify on jpg file w/ no discernable MIME type or extension\n should use ImageMagick identify on png file w/ no discernable MIME type or extension\n should not choke on no image file without content type or extension\n should use ImageMagick and not barf on upload w/o original_filename\n with audio file(s)\n should create an AudioPart and FileRef\n should create a new AudioPart for every file\n with video file(s)\n should create an VideoPart and FileRef\n should create a new VideoPart for every file\n with ipaper supported files\n should create a FilePart and FileRef\n should create a new VideoPart for every file\n with an unsupported file\n should not create any ContentParts\n being enqueued\n should create a delayed job\n should create a blog_import_content_part delayed job if given a post w/ a blog_import\n should create a blog_import_content_part delayed job if given a post w/ a blog_import hostname\n creating from an external url\n should create an image content part for an external url, and subsequent calls should return same cp\n should create an image content part for an external url with an external_link, and subsequent calls should return same cp\nAudioPart\n in general\n should return image as content_part_type\n should return orphaned_part_type\n creating flash embed\n should not munge M\303\263veis\n should not munge \347\256\200\344\275\223\345\255\227\n should do best to convert to UTF 8 if given latin\n being created\n should require a uploaded_file\n successfully\n should save its uploaded_file to s3\n should create FileRef\n an instance\n should return file for all_files w/o mp3\n should return file and mp3 for all files if both exist\n enqueuing processing\n should create a transcode dj when enqueuing processing\n should not create a dj if the related conent part has no site\nUser\n should have many logins\n should change mail to Email with human_attribute_name and leave other stuff alone\n being validated\n on create\n should require password to be set\n should require sitename to be set\n should require mail to be set\n should require a password of at least 5 characters\n should a allow a valid password\n should require a sitename at least 2 characters long\n should require a sitename that is not taken (ignoring case)\n should require a sitename that doesn not start with comment-\n should allow a sitename with comment- in the middle\n should require a sitename that begins and ends with a letter or number\n should require a sitename with only letters numbers and dashes\n should lowercase and clean spaces from sitename\n should allow valid sitenames\n should require mail longer than 4 characters\n should require a correctly formatted mail\n should allow a validly formatted mail\n should require a mail that is not taken by an email with a user (ignoring case)\n should allow a mail that is taken by an email w/o a user\n should lowercase and clean spaces from mail\n on update\n should not require a password\n should not require a sitename\n should not require a mail\n should require nickname\n should require valid new password when changing password\n should require correct old password when changing password\n should be valid w/ new password and correct old_password\n an instance\n should default num_sites_allowed to 3 but allow override\n should return owned_sites\nYou have a nil object when you didn't expect it!\nYou might have expected an instance of Array.\nThe error occurred while evaluating nil.index\n should return html for get_external_site_icons\n should return it's encrypted id\n claiming twitter comments\n should move comment to user and nil out commenter_auth email and url\n should not move comment with name but no oauth user\n being banned or unbanned\n should update the comments_count of posts it has commented on\n should update active of comments\n encrypting ids\n should encrypt them\n should decrypt them\n Computing User Milestones\n Stuff related to sending emails to try and get them to come back\n should find all users who haven't had any activity for specified amount of time\n Stuff related to the display for milestones for the frontend\n should have all of the appropriate method definitions for each milestone\n should return a hash with a description and a URL for how to complete a milestone\n should compute how many milestones a user has completed\n should tell you what action to take when next milestone is confirm_emails\n should tell you what action to take when next milestone is update_profile\n should tell you what action to take when next milestone is add_subscriptions\n should tell you what action to take when next milestone is invite_subscribers\n should tell you what action to take when next milestone is add_autoposts\n should tell you what action to take when next milestone is try_bookmarklet\n should tell you what action to take when next milestone is purchase_domain\n should return a nil next action if all milestones have been completed\n should skip milestones even if they aren't satisfied as long as the milestones flag has been set\nFeedImport\n a wordpress blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\n a vox blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\n a LJ blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\n a Blogger blog\n #import!\n should be an array\n should have the correct total\n should have correct import count\nBlogImport\n STI\n Subclass\n #create\n should be a MetaWeblogImport\n #metaweblog_endpoint\n should get metweblog endpoint\n should raise ArgumentError when site_url is nil\n #import!\n should return posts\n #merge!\n should have a merged_site\n should have 1 post in imported site\n should have 0 posts in the new site\n on #merge!\n should move posts to the new site\n #add_dowloand_class\n should add the dl class to images\n #import!\n should not throw NotImplemented when called from subclass\nActiveRainImport\n #new\n should gen the blog url\n #create\n #import\nopening page: http://activerain.com/blogs/elizabethweintraub\ncollection size: 10\n****************************************************************************************************\n should have 10 posts\nBloggerImport\n a blogger blog\n #import!\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=1\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=101\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=201\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=301\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=401\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=501\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=601\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=701\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=801\nhttp://christwoism.blogspot.com/feeds/posts/default?max-results=100&start-index=901\n should have 4 posts\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nWordPressImport\n a wordpress blog\n #create\n should set export_data\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\n #import!\n should parse export data to a doc\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\nwarning: peer certificate won't be verified in this SSL session\n should have 21 posts\nTweetPhoto\n a tweetphoto blog\n #create\n[\n [ 0] {\n \"Message\" => \"Life is precious.\",\n \"Name\" => \"x2_1be7eb6\",\n \"Views\" => 10103,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:50:07Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261494\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7eb6\",\n \"Id\" => 29261494,\n \"UploadDate\" => 1277563807,\n \"TinyAlias\" => \"29261494\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7eb6\",\n \"GdAlias\" => \"29261494\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7eb6\",\n \"CommentCount\" => 151,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7eb6\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 39\n },\n [ 1] {\n \"Message\" => \"And son... \",\n \"Name\" => \"x2_1be7e24\",\n \"Views\" => 14724,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:49:08Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261348\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7e24\",\n \"Id\" => 29261348,\n \"UploadDate\" => 1277563748,\n \"TinyAlias\" => \"29261348\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7e24\",\n \"GdAlias\" => \"29261348\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7e24\",\n \"CommentCount\" => 36,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7e24\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n },\n [ 2] {\n \"Message\" => \"Dad...\",\n \"Name\" => \"x2_1be7dd8\",\n \"Views\" => 13949,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:48:38Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261272\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7dd8\",\n \"Id\" => 29261272,\n \"UploadDate\" => 1277563718,\n \"TinyAlias\" => \"29261272\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7dd8\",\n \"GdAlias\" => \"29261272\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7dd8\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7dd8\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n },\n [ 3] {\n \"Message\" => \"Love is... \",\n \"Name\" => \"x2_1be7d73\",\n \"Views\" => 9744,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-26T14:47:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/29261171\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1be7d73\",\n \"Id\" => 29261171,\n \"UploadDate\" => 1277563675,\n \"TinyAlias\" => \"29261171\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1be7d73\",\n \"GdAlias\" => \"29261171\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1be7d73\",\n \"CommentCount\" => 101,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1be7d73\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 40\n },\n [ 4] {\n \"Message\" => \"Road trip time for DDub & EDub! Both with our respective gadgets- Uber & Gam Boy DS!!!!!! \",\n \"Name\" => \"x2_1b77d3e\",\n \"Views\" => 10782,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-24T04:07:01Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28802366\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b77d3e\",\n \"Id\" => 28802366,\n \"UploadDate\" => 1277352421,\n \"TinyAlias\" => \"28802366\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b77d3e\",\n \"GdAlias\" => \"28802366\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b77d3e\",\n \"CommentCount\" => 136,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b77d3e\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 33\n },\n [ 5] {\n \"Message\" => \"Do not be alarmed... That was not an earthquake... That was just me dropping the barritone in The Back Rub studio! ;)\",\n \"Name\" => \"x2_1b65d98\",\n \"Views\" => 12001,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-23T18:55:46Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28728728\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b65d98\",\n \"Id\" => 28728728,\n \"UploadDate\" => 1277319346,\n \"TinyAlias\" => \"28728728\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b65d98\",\n \"GdAlias\" => \"28728728\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b65d98\",\n \"CommentCount\" => 158,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b65d98\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 36\n },\n [ 6] {\n \"Message\" => \"How can you not love Jessica Simpson.... \",\n \"Name\" => \"x2_1b6579a\",\n \"Views\" => 10699,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-23T18:44:12Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28727194\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b6579a\",\n \"Id\" => 28727194,\n \"UploadDate\" => 1277318652,\n \"TinyAlias\" => \"28727194\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b6579a\",\n \"GdAlias\" => \"28727194\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b6579a\",\n \"CommentCount\" => 93,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b6579a\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 18\n },\n [ 7] {\n \"Message\" => \"So much for vacation! It was fun for a day! Photo shoot time. \",\n \"Name\" => \"x2_1b43522\",\n \"Views\" => 11845,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-22T21:22:12Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28587298\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b43522\",\n \"Id\" => 28587298,\n \"UploadDate\" => 1277241732,\n \"TinyAlias\" => \"28587298\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b43522\",\n \"GdAlias\" => \"28587298\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b43522\",\n \"CommentCount\" => 245,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b43522\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 63\n },\n [ 8] {\n \"Message\" => \"Today... Trust that all is how it is meant to be & that all will be as it should. Acceptance, trust & love = POWER!\",\n \"Name\" => \"x2_1b3c087\",\n \"Views\" => 9534,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-22T17:22:22Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28557447\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b3c087\",\n \"Id\" => 28557447,\n \"UploadDate\" => 1277227342,\n \"TinyAlias\" => \"28557447\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b3c087\",\n \"GdAlias\" => \"28557447\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b3c087\",\n \"CommentCount\" => 45,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b3c087\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 18\n },\n [ 9] {\n \"Message\" => \"NKOTB & BSB tonight on ET... If you missed the show Saturday.... Don't miss ET tonight!\",\n \"Name\" => \"x2_1b13055\",\n \"Views\" => 7521,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-21T15:19:02Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28389461\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b13055\",\n \"Id\" => 28389461,\n \"UploadDate\" => 1277133542,\n \"TinyAlias\" => \"28389461\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b13055\",\n \"GdAlias\" => \"28389461\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b13055\",\n \"CommentCount\" => 47,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b13055\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 27\n },\n [10] {\n \"Message\" => \"If you weren't there... Watch tonight on Entertainment Tonight! NKOTB/BSB on ET! \",\n \"Name\" => \"x2_1b12c21\",\n \"Views\" => 11093,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-21T15:08:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28388385\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b12c21\",\n \"Id\" => 28388385,\n \"UploadDate\" => 1277132914,\n \"TinyAlias\" => \"28388385\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b12c21\",\n \"GdAlias\" => \"28388385\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b12c21\",\n \"CommentCount\" => 45,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b12c21\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 19\n },\n [11] {\n \"Message\" => \"While you Laker fans celebrate... \",\n \"Name\" => \"x2_1b127c2\",\n \"Views\" => 7438,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-21T14:55:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/28387266\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1b127c2\",\n \"Id\" => 28387266,\n \"UploadDate\" => 1277132155,\n \"TinyAlias\" => \"28387266\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1b127c2\",\n \"GdAlias\" => \"28387266\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1b127c2\",\n \"CommentCount\" => 106,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1b127c2\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 36\n },\n [12] {\n \"Message\" => \"NKOTB! RADIO CITY! ;)\",\n \"Name\" => \"x2_1a961e0\",\n \"Views\" => 11100,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T20:47:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27877856\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a961e0\",\n \"Id\" => 27877856,\n \"UploadDate\" => 1276894050,\n \"TinyAlias\" => \"27877856\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a961e0\",\n \"GdAlias\" => \"27877856\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a961e0\",\n \"CommentCount\" => 50,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a961e0\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 21\n },\n [13] {\n \"Message\" => \"Want you all here tonight... \",\n \"Name\" => \"x2_1a9229d\",\n \"Views\" => 10964,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T18:51:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27861661\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a9229d\",\n \"Id\" => 27861661,\n \"UploadDate\" => 1276887094,\n \"TinyAlias\" => \"27861661\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a9229d\",\n \"GdAlias\" => \"27861661\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a9229d\",\n \"CommentCount\" => 127,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a9229d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 25\n },\n [14] {\n \"Message\" => \"If I weren't there lat night... I would think this weren't a real pic... I would think it was CGI!!!!! \",\n \"Name\" => \"x2_1a902c3\",\n \"Views\" => 10820,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T17:57:48Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27853507\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a902c3\",\n \"Id\" => 27853507,\n \"UploadDate\" => 1276883868,\n \"TinyAlias\" => \"27853507\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a902c3\",\n \"GdAlias\" => \"27853507\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a902c3\",\n \"CommentCount\" => 51,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a902c3\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 14\n },\n [15] {\n \"Message\" => \"I mean seriously... Does it get any better? So blessed am I my soldiers! Thank you for sharing this journey!\",\n \"Name\" => \"x2_1a8eb4e\",\n \"Views\" => 9774,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T17:16:53Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27847502\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a8eb4e\",\n \"Id\" => 27847502,\n \"UploadDate\" => 1276881413,\n \"TinyAlias\" => \"27847502\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a8eb4e\",\n \"GdAlias\" => \"27847502\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a8eb4e\",\n \"CommentCount\" => 75,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a8eb4e\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 27\n },\n [16] {\n \"Message\" => \"How can you not love the people of this city...? The courage! The sacrifice! \",\n \"Name\" => \"x2_1a7ebaa\",\n \"Views\" => 8682,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-18T06:52:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27782058\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a7ebaa\",\n \"Id\" => 27782058,\n \"UploadDate\" => 1276843937,\n \"TinyAlias\" => \"27782058\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a7ebaa\",\n \"GdAlias\" => \"27782058\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a7ebaa\",\n \"CommentCount\" => 46,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a7ebaa\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 19\n },\n [17] {\n \"Message\" => \"Pride! \",\n \"Name\" => \"x2_1a168de\",\n \"Views\" => 11301,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-15T16:14:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27355358\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a168de\",\n \"Id\" => 27355358,\n \"UploadDate\" => 1276618446,\n \"TinyAlias\" => \"27355358\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a168de\",\n \"GdAlias\" => \"27355358\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a168de\",\n \"CommentCount\" => 92,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a168de\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 38\n },\n [18] {\n \"Message\" => \"Join us... \",\n \"Name\" => \"x2_1a09b3c\",\n \"Views\" => 10183,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-15T05:38:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27302716\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1a09b3c\",\n \"Id\" => 27302716,\n \"UploadDate\" => 1276580317,\n \"TinyAlias\" => \"27302716\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1a09b3c\",\n \"GdAlias\" => \"27302716\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1a09b3c\",\n \"CommentCount\" => 110,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1a09b3c\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 17\n },\n [19] {\n \"Message\" => \"Actually... This might be pretty damn great too!!!!!!!!!!!! New AVATARS anyone??????????? Let's REP THIS!!!!!!!!!!!\",\n \"Name\" => \"x2_19e6f04\",\n \"Views\" => 15385,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T05:02:11Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27160324\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6f04\",\n \"Id\" => 27160324,\n \"UploadDate\" => 1276491731,\n \"TinyAlias\" => \"27160324\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6f04\",\n \"GdAlias\" => \"27160324\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6f04\",\n \"CommentCount\" => 74,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6f04\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 29\n },\n [20] {\n \"Message\" => \"What could be better than that? \",\n \"Name\" => \"x2_19e6cdc\",\n \"Views\" => 17058,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:56:39Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159772\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6cdc\",\n \"Id\" => 27159772,\n \"UploadDate\" => 1276491399,\n \"TinyAlias\" => \"27159772\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6cdc\",\n \"GdAlias\" => \"27159772\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6cdc\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6cdc\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 23\n },\n [21] {\n \"Message\" => \"And we got family! \",\n \"Name\" => \"x2_19e6c52\",\n \"Views\" => 16386,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:55:12Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159634\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6c52\",\n \"Id\" => 27159634,\n \"UploadDate\" => 1276491312,\n \"TinyAlias\" => \"27159634\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6c52\",\n \"GdAlias\" => \"27159634\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6c52\",\n \"CommentCount\" => 43,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6c52\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 32\n },\n [22] {\n \"Message\" => \"But we got Soldiers... \",\n \"Name\" => \"x2_19e6bf7\",\n \"Views\" => 16027,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:54:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159543\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6bf7\",\n \"Id\" => 27159543,\n \"UploadDate\" => 1276491246,\n \"TinyAlias\" => \"27159543\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6bf7\",\n \"GdAlias\" => \"27159543\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6bf7\",\n \"CommentCount\" => 44,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6bf7\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 30\n },\n [23] {\n \"Message\" => \"We aint got no Grammy's... \",\n \"Name\" => \"x2_19e6b13\",\n \"Views\" => 14835,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:51:43Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159315\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6b13\",\n \"Id\" => 27159315,\n \"UploadDate\" => 1276491103,\n \"TinyAlias\" => \"27159315\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6b13\",\n \"GdAlias\" => \"27159315\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6b13\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6b13\",\n \"UnLikedVotes\" => 6,\n \"LikedVotes\" => 17\n },\n [24] {\n \"Message\" => \"We aint got no Oscars... \",\n \"Name\" => \"x2_19e6aa4\",\n \"Views\" => 12038,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T04:50:25Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27159204\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19e6aa4\",\n \"Id\" => 27159204,\n \"UploadDate\" => 1276491025,\n \"TinyAlias\" => \"27159204\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19e6aa4\",\n \"GdAlias\" => \"27159204\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19e6aa4\",\n \"CommentCount\" => 47,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19e6aa4\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 25\n },\n [25] {\n \"Message\" => \"I'm not alone tonight.... We had to bring in the good luck charm!!!!!!!!\",\n \"Name\" => \"x2_19df1bc\",\n \"Views\" => 14305,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T00:32:32Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27128252\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19df1bc\",\n \"Id\" => 27128252,\n \"UploadDate\" => 1276475552,\n \"TinyAlias\" => \"27128252\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19df1bc\",\n \"GdAlias\" => \"27128252\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19df1bc\",\n \"CommentCount\" => 137,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19df1bc\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 38\n },\n [26] {\n \"Message\" => \"LET'S GO CELTICS!\",\n \"Name\" => \"x2_19de535\",\n \"Views\" => 12191,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-14T00:08:48Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27125045\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19de535\",\n \"Id\" => 27125045,\n \"UploadDate\" => 1276474128,\n \"TinyAlias\" => \"27125045\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19de535\",\n \"GdAlias\" => \"27125045\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19de535\",\n \"CommentCount\" => 109,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19de535\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 52\n },\n [27] {\n \"Message\" => \"Today... We show love to our city! Our town! Our home! The place that taught us to walk, fall, talk and soar! Yup\",\n \"Name\" => \"x2_19cb230\",\n \"Views\" => 11024,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-13T14:53:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/27046448\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19cb230\",\n \"Id\" => 27046448,\n \"UploadDate\" => 1276440810,\n \"TinyAlias\" => \"27046448\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19cb230\",\n \"GdAlias\" => \"27046448\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19cb230\",\n \"CommentCount\" => 176,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19cb230\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 52\n },\n [28] {\n \"Message\" => \"Thanks BluePhoenix!!!!!!!! Love you!\",\n \"Name\" => \"x2_19b0671\",\n \"Views\" => 12875,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-12T23:13:53Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26936945\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19b0671\",\n \"Id\" => 26936945,\n \"UploadDate\" => 1276384433,\n \"TinyAlias\" => \"26936945\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19b0671\",\n \"GdAlias\" => \"26936945\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19b0671\",\n \"CommentCount\" => 20,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19b0671\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 9\n },\n [29] {\n \"Message\" => \"Love it!\",\n \"Name\" => \"x2_19afd10\",\n \"Views\" => 10314,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-12T22:59:23Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26934544\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19afd10\",\n \"Id\" => 26934544,\n \"UploadDate\" => 1276383563,\n \"TinyAlias\" => \"26934544\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19afd10\",\n \"GdAlias\" => \"26934544\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19afd10\",\n \"CommentCount\" => 63,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19afd10\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 12\n },\n [30] {\n \"Message\" => \"Spent a few moments with a LEGEND!!!! Team Jordan indeed! \",\n \"Name\" => \"x2_198fde6\",\n \"Views\" => 13268,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-12T06:40:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26803686\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_198fde6\",\n \"Id\" => 26803686,\n \"UploadDate\" => 1276324814,\n \"TinyAlias\" => \"26803686\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_198fde6\",\n \"GdAlias\" => \"26803686\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_198fde6\",\n \"CommentCount\" => 226,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_198fde6\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 72\n },\n [31] {\n \"Message\" => \"High *er* Rollers last night! Good times! \",\n \"Name\" => \"x2_1979c02\",\n \"Views\" => 14075,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-11T19:59:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26713090\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1979c02\",\n \"Id\" => 26713090,\n \"UploadDate\" => 1276286344,\n \"TinyAlias\" => \"26713090\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1979c02\",\n \"GdAlias\" => \"26713090\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1979c02\",\n \"CommentCount\" => 234,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1979c02\",\n \"UnLikedVotes\" => 3,\n \"LikedVotes\" => 58\n },\n [32] {\n \"Message\" => \"Anybody wanna get up in my snuggie with me...?\",\n \"Name\" => \"x2_195ed12\",\n \"Views\" => 13959,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-11T03:57:46Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26602770\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_195ed12\",\n \"Id\" => 26602770,\n \"UploadDate\" => 1276228666,\n \"TinyAlias\" => \"26602770\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_195ed12\",\n \"GdAlias\" => \"26602770\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_195ed12\",\n \"CommentCount\" => 245,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_195ed12\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 78\n },\n [33] {\n \"Message\" => \"Ignore the crazy eye and focus on the hat... Congrats to The Blackhawks!!!!! CHI-TOWN!!!!!!!!!!!!!!!!!!!!\",\n \"Name\" => \"x2_19387c3\",\n \"Views\" => 14449,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-10T04:27:41Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26445763\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_19387c3\",\n \"Id\" => 26445763,\n \"UploadDate\" => 1276144061,\n \"TinyAlias\" => \"26445763\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_19387c3\",\n \"GdAlias\" => \"26445763\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_19387c3\",\n \"CommentCount\" => 111,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_19387c3\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 45\n },\n [34] {\n \"Message\" => \"Great sign! Great girls! Great moment! Great memory! Yup!\",\n \"Name\" => \"x2_1934dad\",\n \"Views\" => 10261,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-10T02:26:13Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26430893\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1934dad\",\n \"Id\" => 26430893,\n \"UploadDate\" => 1276136773,\n \"TinyAlias\" => \"26430893\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1934dad\",\n \"GdAlias\" => \"26430893\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1934dad\",\n \"CommentCount\" => 30,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1934dad\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 11\n },\n [35] {\n \"Message\" => \"Bumped into one of my favorite follows... @anettskee after the game! She was in town to see BSB and found an NKOTB!\",\n \"Name\" => \"x2_1919b08\",\n \"Views\" => 10323,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-09T06:22:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26319624\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1919b08\",\n \"Id\" => 26319624,\n \"UploadDate\" => 1276064575,\n \"TinyAlias\" => \"26319624\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1919b08\",\n \"GdAlias\" => \"26319624\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1919b08\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1919b08\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 9\n },\n [36] {\n \"Message\" => \"BOSTON! Its almost time... \",\n \"Name\" => \"x2_190ea66\",\n \"Views\" => 11680,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-08T23:42:24Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26274406\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_190ea66\",\n \"Id\" => 26274406,\n \"UploadDate\" => 1276040544,\n \"TinyAlias\" => \"26274406\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_190ea66\",\n \"GdAlias\" => \"26274406\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_190ea66\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_190ea66\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 15\n },\n [37] {\n \"Message\" => \"If you don't know what \\\"Alma Nove\\\" stands for... This should help! (Bottom right corner is my 1/9th of the team). \",\n \"Name\" => \"x2_190d461\",\n \"Views\" => 10837,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-08T22:58:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26268769\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_190d461\",\n \"Id\" => 26268769,\n \"UploadDate\" => 1276037894,\n \"TinyAlias\" => \"26268769\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_190d461\",\n \"GdAlias\" => \"26268769\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_190d461\",\n \"CommentCount\" => 108,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_190d461\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 31\n },\n [38] {\n \"Message\" => \"If you go through MA and you haven't been to Alma Nove yet... WOW! Nothing for nothing... My brother is the truth! \",\n \"Name\" => \"x2_190d18f\",\n \"Views\" => 8160,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-08T22:52:52Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26268047\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_190d18f\",\n \"Id\" => 26268047,\n \"UploadDate\" => 1276037572,\n \"TinyAlias\" => \"26268047\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_190d18f\",\n \"GdAlias\" => \"26268047\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_190d18f\",\n \"CommentCount\" => 43,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_190d18f\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 15\n },\n [39] {\n \"Message\" => \"All tied up @snoopdogg... BACK TO BOSTON!!!!!!\",\n \"Name\" => \"x2_18d0fba\",\n \"Views\" => 8711,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-07T02:56:01Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/26021818\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18d0fba\",\n \"Id\" => 26021818,\n \"UploadDate\" => 1275879361,\n \"TinyAlias\" => \"26021818\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18d0fba\",\n \"GdAlias\" => \"26021818\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18d0fba\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18d0fba\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 33\n },\n [40] {\n \"Message\" => \"Its true... KG did lose a step... FOR ONE GAME!!! TONIGHT The Big Ticket hits back! Get in their A** tonight KG! \",\n \"Name\" => \"x2_18ca8b9\",\n \"Views\" => 8454,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-06T23:41:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25995449\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18ca8b9\",\n \"Id\" => 25995449,\n \"UploadDate\" => 1275867664,\n \"TinyAlias\" => \"25995449\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18ca8b9\",\n \"GdAlias\" => \"25995449\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18ca8b9\",\n \"CommentCount\" => 16,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18ca8b9\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 8\n },\n [41] {\n \"Message\" => \"Humbling.\",\n \"Name\" => \"x2_189c263\",\n \"Views\" => 10976,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-05T23:54:40Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25805411\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_189c263\",\n \"Id\" => 25805411,\n \"UploadDate\" => 1275782080,\n \"TinyAlias\" => \"25805411\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_189c263\",\n \"GdAlias\" => \"25805411\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_189c263\",\n \"CommentCount\" => 58,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_189c263\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 14\n },\n [42] {\n \"Message\" => \"If you want it....\",\n \"Name\" => \"x2_188f6a2\",\n \"Views\" => 11262,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-05T18:50:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25753250\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_188f6a2\",\n \"Id\" => 25753250,\n \"UploadDate\" => 1275763806,\n \"TinyAlias\" => \"25753250\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_188f6a2\",\n \"GdAlias\" => \"25753250\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_188f6a2\",\n \"CommentCount\" => 80,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_188f6a2\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 28\n },\n [43] {\n \"Message\" => \"Me in 10 days!\",\n \"Name\" => \"x2_185c212\",\n \"Views\" => 15120,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T17:07:24Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25543186\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_185c212\",\n \"Id\" => 25543186,\n \"UploadDate\" => 1275671244,\n \"TinyAlias\" => \"25543186\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_185c212\",\n \"GdAlias\" => \"25543186\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_185c212\",\n \"CommentCount\" => 38,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_185c212\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 14\n },\n [44] {\n \"Message\" => \"Me tonight... \",\n \"Name\" => \"x2_185c15b\",\n \"Views\" => 14151,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T17:06:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25543003\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_185c15b\",\n \"Id\" => 25543003,\n \"UploadDate\" => 1275671174,\n \"TinyAlias\" => \"25543003\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_185c15b\",\n \"GdAlias\" => \"25543003\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_185c15b\",\n \"CommentCount\" => 97,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_185c15b\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 46\n },\n [45] {\n \"Message\" => \"Me last night... \",\n \"Name\" => \"x2_185c115\",\n \"Views\" => 10976,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T17:05:43Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25542933\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_185c115\",\n \"Id\" => 25542933,\n \"UploadDate\" => 1275671143,\n \"TinyAlias\" => \"25542933\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_185c115\",\n \"GdAlias\" => \"25542933\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_185c115\",\n \"CommentCount\" => 55,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_185c115\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 9\n },\n [46] {\n \"Message\" => \"Difference between LA and Boston... 10 empty seats at jump ball. Pathetic. \",\n \"Name\" => \"x2_18433ef\",\n \"Views\" => 12114,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T01:08:51Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25441263\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18433ef\",\n \"Id\" => 25441263,\n \"UploadDate\" => 1275613731,\n \"TinyAlias\" => \"25441263\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18433ef\",\n \"GdAlias\" => \"25441263\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18433ef\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18433ef\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 12\n },\n [47] {\n \"Message\" => \"This guy is all mixed up!\",\n \"Name\" => \"x2_18410d1\",\n \"Views\" => 12688,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T00:06:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25432273\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_18410d1\",\n \"Id\" => 25432273,\n \"UploadDate\" => 1275609997,\n \"TinyAlias\" => \"25432273\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_18410d1\",\n \"GdAlias\" => \"25432273\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_18410d1\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_18410d1\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 21\n },\n [48] {\n \"Message\" => \"MIXTAPE COVER!\",\n \"Name\" => \"x2_1840d5a\",\n \"Views\" => 9567,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-04T00:00:21Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25431386\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1840d5a\",\n \"Id\" => 25431386,\n \"UploadDate\" => 1275609621,\n \"TinyAlias\" => \"25431386\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1840d5a\",\n \"GdAlias\" => \"25431386\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1840d5a\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1840d5a\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 20\n },\n [49] {\n \"Message\" => \"And this...\",\n \"Name\" => \"x2_183546f\",\n \"Views\" => 10470,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-03T18:00:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25384047\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_183546f\",\n \"Id\" => 25384047,\n \"UploadDate\" => 1275588017,\n \"TinyAlias\" => \"25384047\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_183546f\",\n \"GdAlias\" => \"25384047\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_183546f\",\n \"CommentCount\" => 34,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_183546f\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n }\n]\n[\n [ 0] {\n \"Message\" => \"Thinking this may go down again!!!!\",\n \"Name\" => \"x2_1835195\",\n \"Views\" => 8444,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-03T17:54:55Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25383317\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1835195\",\n \"Id\" => 25383317,\n \"UploadDate\" => 1275587695,\n \"TinyAlias\" => \"25383317\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1835195\",\n \"GdAlias\" => \"25383317\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1835195\",\n \"CommentCount\" => 37,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1835195\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 27\n },\n [ 1] {\n \"Message\" => \"My man @snoopdogg may need to start rocking this type of gear in a week or so! GO CELTS!!!! \",\n \"Name\" => \"x2_1816d07\",\n \"Views\" => 7931,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-02T22:21:51Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25259271\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1816d07\",\n \"Id\" => 25259271,\n \"UploadDate\" => 1275517311,\n \"TinyAlias\" => \"25259271\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1816d07\",\n \"GdAlias\" => \"25259271\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1816d07\",\n \"CommentCount\" => 25,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1816d07\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 16\n },\n [ 2] {\n \"Message\" => \"Driving listening to my man @roscoeumalion The Laker Anthem! Proud of you my dude! Though its Celtics in 6!!!!! \",\n \"Name\" => \"x2_17f2b71\",\n \"Views\" => 8465,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-06-01T22:34:59Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/25111409\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17f2b71\",\n \"Id\" => 25111409,\n \"UploadDate\" => 1275431699,\n \"TinyAlias\" => \"25111409\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17f2b71\",\n \"GdAlias\" => \"25111409\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17f2b71\",\n \"CommentCount\" => 75,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17f2b71\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 35\n },\n [ 3] {\n \"Message\" => \"DDUB and DDUBL.O.D. 34 years in the books! \",\n \"Name\" => \"x2_17ce8e2\",\n \"Views\" => 10224,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-31T21:52:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24963298\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17ce8e2\",\n \"Id\" => 24963298,\n \"UploadDate\" => 1275342767,\n \"TinyAlias\" => \"24963298\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17ce8e2\",\n \"GdAlias\" => \"24963298\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17ce8e2\",\n \"CommentCount\" => 86,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17ce8e2\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 50\n },\n [ 4] {\n \"Message\" => \"Left MIXX now at MUR\342\200\242MUR with the LEGEND @questlove in the booth!!!! No stopping us tonight!!!!! \",\n \"Name\" => \"x2_178b616\",\n \"Views\" => 12054,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-30T07:18:18Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24688150\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_178b616\",\n \"Id\" => 24688150,\n \"UploadDate\" => 1275203898,\n \"TinyAlias\" => \"24688150\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_178b616\",\n \"GdAlias\" => \"24688150\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_178b616\",\n \"CommentCount\" => 35,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_178b616\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 20\n },\n [ 5] {\n \"Message\" => \"Good Times.... \",\n \"Name\" => \"x2_1779b6a\",\n \"Views\" => 11923,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T23:23:10Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24615786\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1779b6a\",\n \"Id\" => 24615786,\n \"UploadDate\" => 1275175390,\n \"TinyAlias\" => \"24615786\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1779b6a\",\n \"GdAlias\" => \"24615786\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1779b6a\",\n \"CommentCount\" => 39,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1779b6a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 36\n },\n [ 6] {\n \"Message\" => \"To The Philipines!!!!!!\",\n \"Name\" => \"x2_17766f1\",\n \"Views\" => 11232,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T22:03:24Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24602353\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17766f1\",\n \"Id\" => 24602353,\n \"UploadDate\" => 1275170604,\n \"TinyAlias\" => \"24602353\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17766f1\",\n \"GdAlias\" => \"24602353\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17766f1\",\n \"CommentCount\" => 25,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17766f1\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 7\n },\n [ 7] {\n \"Message\" => \"From the Bean...\",\n \"Name\" => \"x2_1776016\",\n \"Views\" => 9502,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T21:53:41Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24600598\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1776016\",\n \"Id\" => 24600598,\n \"UploadDate\" => 1275170021,\n \"TinyAlias\" => \"24600598\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1776016\",\n \"GdAlias\" => \"24600598\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1776016\",\n \"CommentCount\" => 21,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1776016\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 10\n },\n [ 8] {\n \"Message\" => \"This is how it goes down in The Bean!!!!!! \",\n \"Name\" => \"x2_176fd4a\",\n \"Views\" => 9212,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T19:24:06Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24575306\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_176fd4a\",\n \"Id\" => 24575306,\n \"UploadDate\" => 1275161046,\n \"TinyAlias\" => \"24575306\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_176fd4a\",\n \"GdAlias\" => \"24575306\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_176fd4a\",\n \"CommentCount\" => 25,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_176fd4a\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 11\n },\n [ 9] {\n \"Message\" => \"MIXX was CRAZY last night at BORGATA! Tonight its FREE with an NKOTB Ticket! GET HERE! Let's smash this tonight! \",\n \"Name\" => \"x2_17668d5\",\n \"Views\" => 7973,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-29T15:37:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/24537301\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_17668d5\",\n \"Id\" => 24537301,\n \"UploadDate\" => 1275147454,\n \"TinyAlias\" => \"24537301\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_17668d5\",\n \"GdAlias\" => \"24537301\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_17668d5\",\n \"CommentCount\" => 20,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_17668d5\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 4\n },\n [10] {\n \"Message\" => \"Of the many Foxwood fans... These ones asked me to tweet their photo! Almost forgot!!! \",\n \"Name\" => \"x2_16e032c\",\n \"Views\" => 8547,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-26T03:59:57Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23986988\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16e032c\",\n \"Id\" => 23986988,\n \"UploadDate\" => 1274846397,\n \"TinyAlias\" => \"23986988\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16e032c\",\n \"GdAlias\" => \"23986988\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16e032c\",\n \"CommentCount\" => 42,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16e032c\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 12\n },\n [11] {\n \"Message\" => \"Wahlberg LOVIN' at the game! ;)\",\n \"Name\" => \"x2_16bea61\",\n \"Views\" => 15261,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-25T02:05:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23849569\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16bea61\",\n \"Id\" => 23849569,\n \"UploadDate\" => 1274753134,\n \"TinyAlias\" => \"23849569\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16bea61\",\n \"GdAlias\" => \"23849569\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16bea61\",\n \"CommentCount\" => 240,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16bea61\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 70\n },\n [12] {\n \"Message\" => \"Straight THUGGING at the game! ;)\",\n \"Name\" => \"x2_16be941\",\n \"Views\" => 14184,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-25T02:02:35Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23849281\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16be941\",\n \"Id\" => 23849281,\n \"UploadDate\" => 1274752955,\n \"TinyAlias\" => \"23849281\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16be941\",\n \"GdAlias\" => \"23849281\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16be941\",\n \"CommentCount\" => 86,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16be941\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 33\n },\n [13] {\n \"Message\" => \"With my older brother Chef Paul at the site of his new restaurant... ALMA NOVE! In HINGHAM MA! Opens in one WEEK!\",\n \"Name\" => \"x2_16b47b5\",\n \"Views\" => 11578,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-24T19:12:49Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23807925\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16b47b5\",\n \"Id\" => 23807925,\n \"UploadDate\" => 1274728369,\n \"TinyAlias\" => \"23807925\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16b47b5\",\n \"GdAlias\" => \"23807925\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16b47b5\",\n \"CommentCount\" => 207,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16b47b5\",\n \"UnLikedVotes\" => 3,\n \"LikedVotes\" => 51\n },\n [14] {\n \"Message\" => \"Anybody interested...?\",\n \"Name\" => \"x2_166f02d\",\n \"Views\" => 17671,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-22T20:28:42Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23523373\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_166f02d\",\n \"Id\" => 23523373,\n \"UploadDate\" => 1274560122,\n \"TinyAlias\" => \"23523373\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_166f02d\",\n \"GdAlias\" => \"23523373\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_166f02d\",\n \"CommentCount\" => 225,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_166f02d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 37\n },\n [15] {\n \"Message\" => \"The Legend returned last night! \",\n \"Name\" => \"x2_16690c3\",\n \"Views\" => 13460,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-22T17:47:43Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23498947\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_16690c3\",\n \"Id\" => 23498947,\n \"UploadDate\" => 1274550463,\n \"TinyAlias\" => \"23498947\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_16690c3\",\n \"GdAlias\" => \"23498947\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_16690c3\",\n \"CommentCount\" => 171,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_16690c3\",\n \"UnLikedVotes\" => 3,\n \"LikedVotes\" => 53\n },\n [16] {\n \"Message\" => \"Ladies... Don't lose your minds... Today is just one of those days... Me & a LEGEND!\",\n \"Name\" => \"x2_160f3a1\",\n \"Views\" => 13611,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-19T23:49:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/23131041\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_160f3a1\",\n \"Id\" => 23131041,\n \"UploadDate\" => 1274312987,\n \"TinyAlias\" => \"23131041\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_160f3a1\",\n \"GdAlias\" => \"23131041\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_160f3a1\",\n \"CommentCount\" => 265,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_160f3a1\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 79\n },\n [17] {\n \"Message\" => \"My arms are open... SOMEBODY TWUG ME!\",\n \"Name\" => \"x2_15e0c1d\",\n \"Views\" => 12416,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-18T14:27:29Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22940701\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_15e0c1d\",\n \"Id\" => 22940701,\n \"UploadDate\" => 1274192849,\n \"TinyAlias\" => \"22940701\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_15e0c1d\",\n \"GdAlias\" => \"22940701\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_15e0c1d\",\n \"CommentCount\" => 173,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_15e0c1d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 29\n },\n [18] {\n \"Message\" => \"View from my bed... *sings* Shoes on the bed, Shoes on the bed!\",\n \"Name\" => \"x2_155f1d8\",\n \"Views\" => 19588,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T20:16:25Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22409688\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_155f1d8\",\n \"Id\" => 22409688,\n \"UploadDate\" => 1273868185,\n \"TinyAlias\" => \"22409688\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_155f1d8\",\n \"GdAlias\" => \"22409688\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_155f1d8\",\n \"CommentCount\" => 284,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_155f1d8\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 40\n },\n [19] {\n \"Message\" => \"View from my balcony... Jealous? \",\n \"Name\" => \"x2_155ee9f\",\n \"Views\" => 17974,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T20:10:01Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22408863\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_155ee9f\",\n \"Id\" => 22408863,\n \"UploadDate\" => 1273867801,\n \"TinyAlias\" => \"22408863\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_155ee9f\",\n \"GdAlias\" => \"22408863\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_155ee9f\",\n \"CommentCount\" => 223,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_155ee9f\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 38\n },\n [20] {\n \"Message\" => \"Okay... I'll say more!!!!!!!!\",\n \"Name\" => \"x2_15493ab\",\n \"Views\" => 17781,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T03:20:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22320043\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_15493ab\",\n \"Id\" => 22320043,\n \"UploadDate\" => 1273807204,\n \"TinyAlias\" => \"22320043\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_15493ab\",\n \"GdAlias\" => \"22320043\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_15493ab\",\n \"CommentCount\" => 69,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_15493ab\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 20\n },\n [21] {\n \"Message\" => \"NUFF SAID!!!!!!!!\",\n \"Name\" => \"x2_1549351\",\n \"Views\" => 13534,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-14T03:19:05Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22319953\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1549351\",\n \"Id\" => 22319953,\n \"UploadDate\" => 1273807145,\n \"TinyAlias\" => \"22319953\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1549351\",\n \"GdAlias\" => \"22319953\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1549351\",\n \"CommentCount\" => 39,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1549351\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 12\n },\n [22] {\n \"Message\" => \"Ohhhhh South Beach!\",\n \"Name\" => \"x2_1540551\",\n \"Views\" => 11968,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T21:49:38Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22283601\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1540551\",\n \"Id\" => 22283601,\n \"UploadDate\" => 1273787378,\n \"TinyAlias\" => \"22283601\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1540551\",\n \"GdAlias\" => \"22283601\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1540551\",\n \"CommentCount\" => 76,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1540551\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 12\n },\n [23] {\n \"Message\" => \"In case there is any confusion about where the remaining pieces of my heart will be tonight.... GO CELTICS!\",\n \"Name\" => \"x2_153c7cf\",\n \"Views\" => 12481,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T19:25:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22267855\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_153c7cf\",\n \"Id\" => 22267855,\n \"UploadDate\" => 1273778714,\n \"TinyAlias\" => \"22267855\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_153c7cf\",\n \"GdAlias\" => \"22267855\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_153c7cf\",\n \"CommentCount\" => 94,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_153c7cf\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 37\n },\n [24] {\n \"Message\" => \"Empty... \",\n \"Name\" => \"x2_153c33a\",\n \"Views\" => 9193,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T19:13:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22266682\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_153c33a\",\n \"Id\" => 22266682,\n \"UploadDate\" => 1273778010,\n \"TinyAlias\" => \"22266682\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_153c33a\",\n \"GdAlias\" => \"22266682\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_153c33a\",\n \"CommentCount\" => 53,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_153c33a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 4\n },\n [25] {\n \"Message\" => \"Momma and baby soldiers too!!!!!!!!!!!!!!!!! Woooooo!!!!!!!\",\n \"Name\" => \"x2_152b49f\",\n \"Views\" => 11148,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:58:35Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22197407\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152b49f\",\n \"Id\" => 22197407,\n \"UploadDate\" => 1273726715,\n \"TinyAlias\" => \"22197407\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152b49f\",\n \"GdAlias\" => \"22197407\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152b49f\",\n \"CommentCount\" => 48,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152b49f\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 13\n },\n [26] {\n \"Message\" => \"How cool... The only thing good about security... SOLDIERS!\",\n \"Name\" => \"x2_152b244\",\n \"Views\" => 10638,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:51:30Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22196804\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152b244\",\n \"Id\" => 22196804,\n \"UploadDate\" => 1273726290,\n \"TinyAlias\" => \"22196804\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152b244\",\n \"GdAlias\" => \"22196804\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152b244\",\n \"CommentCount\" => 27,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152b244\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 12\n },\n [27] {\n \"Message\" => \"More soldiers on board!!!!!!!!!!! Maybe we will just start the party right now!!!!!!!!!!!\",\n \"Name\" => \"x2_152afd3\",\n \"Views\" => 9979,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:44:26Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22196179\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152afd3\",\n \"Id\" => 22196179,\n \"UploadDate\" => 1273725866,\n \"TinyAlias\" => \"22196179\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152afd3\",\n \"GdAlias\" => \"22196179\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152afd3\",\n \"CommentCount\" => 35,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152afd3\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 12\n },\n [28] {\n \"Message\" => \"DWAir is now boarding and I am not alone! Soldiers!!!!!!!!!\",\n \"Name\" => \"x2_152aae6\",\n \"Views\" => 7919,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-13T04:30:54Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/22194918\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_152aae6\",\n \"Id\" => 22194918,\n \"UploadDate\" => 1273725054,\n \"TinyAlias\" => \"22194918\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_152aae6\",\n \"GdAlias\" => \"22194918\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_152aae6\",\n \"CommentCount\" => 57,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_152aae6\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 11\n },\n [29] {\n \"Message\" => \"How cool is this pic?!?! Rather... How cool is this chick?!?!?! Awesome! \",\n \"Name\" => \"x2_14ea2d3\",\n \"Views\" => 12761,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T23:55:25Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21930707\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14ea2d3\",\n \"Id\" => 21930707,\n \"UploadDate\" => 1273535725,\n \"TinyAlias\" => \"21930707\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14ea2d3\",\n \"GdAlias\" => \"21930707\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14ea2d3\",\n \"CommentCount\" => 82,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14ea2d3\",\n \"UnLikedVotes\" => 8,\n \"LikedVotes\" => 22\n },\n [30] {\n \"Message\" => \"ATTENTION! VERY IMPORTANT!! There has been a Tony Spallelli sighting!!!!!!!! He has come out of hiding! \",\n \"Name\" => \"x2_14ea062\",\n \"Views\" => 15633,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T23:48:50Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21930082\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14ea062\",\n \"Id\" => 21930082,\n \"UploadDate\" => 1273535330,\n \"TinyAlias\" => \"21930082\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14ea062\",\n \"GdAlias\" => \"21930082\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14ea062\",\n \"CommentCount\" => 171,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14ea062\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 34\n },\n [31] {\n \"Message\" => \"E Dubs grades of some of our performances from rehearsal... \",\n \"Name\" => \"x2_14e79ad\",\n \"Views\" => 11595,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T22:00:59Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21920173\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14e79ad\",\n \"Id\" => 21920173,\n \"UploadDate\" => 1273528859,\n \"TinyAlias\" => \"21920173\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14e79ad\",\n \"GdAlias\" => \"21920173\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14e79ad\",\n \"CommentCount\" => 188,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14e79ad\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 28\n },\n [32] {\n \"Message\" => \"Mental shot! \",\n \"Name\" => \"x2_14e1083\",\n \"Views\" => 11294,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-10T17:05:58Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21893251\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14e1083\",\n \"Id\" => 21893251,\n \"UploadDate\" => 1273511158,\n \"TinyAlias\" => \"21893251\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14e1083\",\n \"GdAlias\" => \"21893251\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14e1083\",\n \"CommentCount\" => 76,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14e1083\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 39\n },\n [33] {\n \"Message\" => \"@palmslasvegas\",\n \"Name\" => \"x2_149e534\",\n \"Views\" => 9345,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-08T22:05:56Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21620020\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_149e534\",\n \"Id\" => 21620020,\n \"UploadDate\" => 1273356356,\n \"TinyAlias\" => \"21620020\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_149e534\",\n \"GdAlias\" => \"21620020\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_149e534\",\n \"CommentCount\" => 77,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_149e534\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 54\n },\n [34] {\n \"Message\" => \"Come play!\",\n \"Name\" => \"x2_145df0d\",\n \"Views\" => 12324,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-07T01:51:08Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21356301\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_145df0d\",\n \"Id\" => 21356301,\n \"UploadDate\" => 1273197068,\n \"TinyAlias\" => \"21356301\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_145df0d\",\n \"GdAlias\" => \"21356301\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_145df0d\",\n \"CommentCount\" => 143,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_145df0d\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 22\n },\n [35] {\n \"Message\" => \"Jon Knight on stage. Waist down \",\n \"Name\" => \"x2_1459ac5\",\n \"Views\" => 13246,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T23:04:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21338821\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1459ac5\",\n \"Id\" => 21338821,\n \"UploadDate\" => 1273187087,\n \"TinyAlias\" => \"21338821\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1459ac5\",\n \"GdAlias\" => \"21338821\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1459ac5\",\n \"CommentCount\" => 115,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1459ac5\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 21\n },\n [36] {\n \"Message\" => \"The party is growing... @djcheapshot & @stageleft19 have joined the backstage work force!! BTW- still no new cholos!\",\n \"Name\" => \"x2_145232f\",\n \"Views\" => 12561,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T18:02:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21308207\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_145232f\",\n \"Id\" => 21308207,\n \"UploadDate\" => 1273168937,\n \"TinyAlias\" => \"21308207\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_145232f\",\n \"GdAlias\" => \"21308207\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_145232f\",\n \"CommentCount\" => 58,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_145232f\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 16\n },\n [37] {\n \"Message\" => \"Room service just showed up BACKSTAGE! Yum! Breakfast! Though Krunchy needs some cholo socks! \",\n \"Name\" => \"x2_1451e12\",\n \"Views\" => 10509,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T17:49:13Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21306898\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1451e12\",\n \"Id\" => 21306898,\n \"UploadDate\" => 1273168153,\n \"TinyAlias\" => \"21306898\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1451e12\",\n \"GdAlias\" => \"21306898\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1451e12\",\n \"CommentCount\" => 72,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1451e12\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 14\n },\n [38] {\n \"Message\" => \"Me and @krunchtastic, backstage, hard at work already! \",\n \"Name\" => \"x2_1451c53\",\n \"Views\" => 8449,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T17:45:04Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21306451\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1451c53\",\n \"Id\" => 21306451,\n \"UploadDate\" => 1273167904,\n \"TinyAlias\" => \"21306451\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1451c53\",\n \"GdAlias\" => \"21306451\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1451c53\",\n \"CommentCount\" => 71,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1451c53\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 17\n },\n [39] {\n \"Message\" => \"Its about to go down! GET HERE!\",\n \"Name\" => \"x2_14473f0\",\n \"Views\" => 6928,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-06T08:13:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/21263344\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_14473f0\",\n \"Id\" => 21263344,\n \"UploadDate\" => 1273133617,\n \"TinyAlias\" => \"21263344\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_14473f0\",\n \"GdAlias\" => \"21263344\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_14473f0\",\n \"CommentCount\" => 73,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_14473f0\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 9\n },\n [40] {\n \"Message\" => \"The Cholo Socks have returned for a limited spring engagement! \",\n \"Name\" => \"x2_13e26e3\",\n \"Views\" => 11525,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-02T21:15:37Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20850403\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13e26e3\",\n \"Id\" => 20850403,\n \"UploadDate\" => 1272834937,\n \"TinyAlias\" => \"20850403\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13e26e3\",\n \"GdAlias\" => \"20850403\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13e26e3\",\n \"CommentCount\" => 142,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13e26e3\",\n \"UnLikedVotes\" => 2,\n \"LikedVotes\" => 24\n },\n [41] {\n \"Message\" => \"THEY'RE BAAAAAAAACkK!!!! \",\n \"Name\" => \"x2_13e0c73\",\n \"Views\" => 11073,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-02T20:20:14Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20843635\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13e0c73\",\n \"Id\" => 20843635,\n \"UploadDate\" => 1272831614,\n \"TinyAlias\" => \"20843635\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13e0c73\",\n \"GdAlias\" => \"20843635\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13e0c73\",\n \"CommentCount\" => 171,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13e0c73\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 23\n },\n [42] {\n \"Message\" => \"Crunchy and I... Working it out!! \",\n \"Name\" => \"x2_13cd27a\",\n \"Views\" => 10008,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-02T05:35:17Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20763258\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13cd27a\",\n \"Id\" => 20763258,\n \"UploadDate\" => 1272778517,\n \"TinyAlias\" => \"20763258\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13cd27a\",\n \"GdAlias\" => \"20763258\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13cd27a\",\n \"CommentCount\" => 80,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13cd27a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 26\n },\n [43] {\n \"Message\" => \"Its a beautiful day.... Time to take it on! Back to work!\",\n \"Name\" => \"x2_13b5126\",\n \"Views\" => 9504,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-05-01T17:15:34Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20664614\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13b5126\",\n \"Id\" => 20664614,\n \"UploadDate\" => 1272734134,\n \"TinyAlias\" => \"20664614\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13b5126\",\n \"GdAlias\" => \"20664614\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13b5126\",\n \"CommentCount\" => 182,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13b5126\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 64\n },\n [44] {\n \"Message\" => \"Love is... Mi familia aka a warm blanket! \",\n \"Name\" => \"x2_13334fd\",\n \"Views\" => 12419,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-27T15:29:47Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/20133117\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13334fd\",\n \"Id\" => 20133117,\n \"UploadDate\" => 1272382187,\n \"TinyAlias\" => \"20133117\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13334fd\",\n \"GdAlias\" => \"20133117\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13334fd\",\n \"CommentCount\" => 316,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13334fd\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 74\n },\n [45] {\n \"Message\" => \"Its fun being the special guest instead of the star! Good Luck Jimmy & the Filipino Kid Roscoe Umali! 2010 its on! \",\n \"Name\" => \"x2_13073b3\",\n \"Views\" => 14278,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-26T00:05:29Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19952563\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_13073b3\",\n \"Id\" => 19952563,\n \"UploadDate\" => 1272240329,\n \"TinyAlias\" => \"19952563\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_13073b3\",\n \"GdAlias\" => \"19952563\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_13073b3\",\n \"CommentCount\" => 79,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_13073b3\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 24\n },\n [46] {\n \"Message\" => \"While I may have gotten a touch of sun in Barbados.... That is not my hand. That would belong to the 617 Legend!\",\n \"Name\" => \"x2_1300e5d\",\n \"Views\" => 11053,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-25T20:23:49Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19926621\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_1300e5d\",\n \"Id\" => 19926621,\n \"UploadDate\" => 1272227029,\n \"TinyAlias\" => \"19926621\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_1300e5d\",\n \"GdAlias\" => \"19926621\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_1300e5d\",\n \"CommentCount\" => 58,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_1300e5d\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 5\n },\n [47] {\n \"Message\" => \"DDub and \\\"The Commision\\\" are airborne! Miami first! \",\n \"Name\" => \"x2_12d57b1\",\n \"Views\" => 11786,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-24T18:08:44Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19748785\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_12d57b1\",\n \"Id\" => 19748785,\n \"UploadDate\" => 1272132524,\n \"TinyAlias\" => \"19748785\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_12d57b1\",\n \"GdAlias\" => \"19748785\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_12d57b1\",\n \"CommentCount\" => 68,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_12d57b1\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 26\n },\n [48] {\n \"Message\" => \"My row on the plane... Featuring JM, JK, and JRK! Anybody wanna borrow my seat for a bit???? ;)\",\n \"Name\" => \"x2_126ffc7\",\n \"Views\" => 18137,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-21T15:26:05Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19333063\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_126ffc7\",\n \"Id\" => 19333063,\n \"UploadDate\" => 1271863565,\n \"TinyAlias\" => \"19333063\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_126ffc7\",\n \"GdAlias\" => \"19333063\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_126ffc7\",\n \"CommentCount\" => 507,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_126ffc7\",\n \"UnLikedVotes\" => 1,\n \"LikedVotes\" => 90\n },\n [49] {\n \"Message\" => \"Life's simple pleasures... I am standing in a long ass airport security line! I love it! \",\n \"Name\" => \"x2_126f49a\",\n \"Views\" => 16595,\n \"Location\" => {\n \"Longitude\" => 0,\n \"Latitude\" => 0\n },\n \"UploadDateString\" => \"2010-04-21T14:57:10Z\",\n \"DetailsUrl\" => \"http://tweetphotoapi.com/api/tpapi.svc/photos/19330202\",\n \"ThumbnailUrl\" => \"http://cdn.cloudfiles.mosso.com/c54112/x2_126f49a\",\n \"Id\" => 19330202,\n \"UploadDate\" => 1271861830,\n \"TinyAlias\" => \"19330202\",\n \"UserId\" => 1188896,\n \"LargeImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54092/x2_126f49a\",\n \"GdAlias\" => \"19330202\",\n \"MediumImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c54102/x2_126f49a\",\n \"CommentCount\" => 194,\n \"BigImageUrl\" => \"http://cdn.cloudfiles.mosso.com/c61132/x2_126f49a\",\n \"UnLikedVotes\" => 0,\n \"LikedVotes\" => 44\n }\n]\n should get 50 photos\nThe Post class finding posts\n find_posts_for_site_list_action\n with normal params (neither tag nor search)\n should use correct per_page\n should use correct viewing user\n should page\n paginate_for_site\n should not include unpinged posts\n should not include unallowed posts\n should not include unconfirmed posts\n should page through posts\n should not lookup total entries for rss\n should normally include site, locations and poststags\n should include site, content_parts and user for rss\n with a nil viewing_user\n should not include private posts\n when paging should not include private posts in total entries\n with a viewing_user that does not own the site\n should not include private posts\n when paging should not include private posts in total entries\n with a viewing_user that owns the site\n should include private posts\n should include private posts in total entries count\n find_ids_first_for_offset\n with a limit offset\n should return identical results as find for {:offset=>25, :limit=>5}\n should return identical results as find for {:offset=>25, :limit=>5, :order=>\"display_date DESC\"}\n should return identical results as find for {:offset=>25, :limit=>5, :conditions=>\"id > 10\", :order=>\"id\"}\n should return identical results as find for {:offset=>25, :limit=>5, :conditions=>{:is_private=>true}}\n should return identical results as find for {:offset=>25, :limit=>5, :conditions=>{:is_private=>false}, :order=>\"display_date DESC\"}\n should return identical results as find for {:offset=>25, :include=>:user, :limit=>5, :conditions=>{:is_private=>false}, :order=>\"display_date DESC\"}\n without a limit offset\n should return identical results as find for {}\n should return identical results as find for {:order=>\"display_date DESC\"}\n should return identical results as find for {:order=>\"id\", :conditions=>\"id > 10\"}\n should return identical results as find for {:conditions=>{:is_private=>true}}\n should return identical results as find for {:order=>\"display_date DESC\", :conditions=>{:is_private=>false}}\n should return identical results as find for {:include=>:user, :order=>\"display_date DESC\", :conditions=>{:is_private=>false}}\n find_tagged_posts_for_site_by_page\n should return empty array for tag that doesn't exist\n should return empty array for a nonsense tag\n paginating\n should not include private posts w/o user\n should not include private posts given other user\n should include private posts given owning user\n paginate_favorite_links_for\n should find all favorites for same session user\n should find public favorites other session user\n should find public favorites no session user\nPosterous::ResourceRateLimiter\n Account Registration Limiting by IP address\n should return false after 10 registration attempts\n Specific example for API rate limiting\n should return false after DEFAULT_LIMIT posts on the same day\n should allow posts on next day after reaching limit\n should not let one users limit effect anothers\n should allow override of DEFAULT_LIMIT with number in user capabilities\n should allow all posts if memcached fails\nPosterous::Highlighter\n when supplied markdown\n #new\n should set the @body\n should detect the is_markdown?\n should set the @document\n #parse_code_block\n should strip out the code and language\n #highlight_code_block\n should highlight by language\n when supplied html\n #new\n should set the @body\n should detect the is_markdown?\n should set the @document\n #process_body!\n should process all code blocks\n when supplied plain markdown and forced\n #new\n should set the @body\n should detect the is_markdown?\n should set the @document\n #process_body!\n should process all code blocks\nSanitizer\n should alter or fix: <<<bad html to &lt;&lt;&lt;bad html\n should alter or fix: <<<bad html> to \n should alter or fix: <link rel='foo'/> to \n should alter or fix: I <3 you to I &lt;3 you\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <p id=\"foo\">bar</p> to <p>bar</p>\n should alter or fix: I\302\222ve never seen such to I've never seen such \n should alter or fix: <div style=\"position: to foo\n should alter or fix: <div style=\"z-index: to foo\n should alter or fix: <div style=\"backgroun to <div style=\"backgroun\n should alter or fix: <blockquote>foo</bloc to <blockquote class=\"po\n should alter or fix: <blockquote>foo foo f to <blockquote class=\"po\n should alter or fix: <span style=\"font-siz to <div style=\"font-size\n should alter or fix: <span style=\"font-siz to <span style=\"font-siz\n should alter or fix: <div apple-content-ed to <div style=\"font-fami\n should alter or fix: &lt;a href=\"foo\"&gt;T to <a href=\"foo\">Test</a\n should alter or fix: &lt;a href=\"<a href=\" to <a href=\"http://foo.c\n should alter or fix: &lt;a href=&quot;<a h to <a href=\"http://poste\n should alter or fix: &lt;a href=&quot;<a h to <a href=\"http://www.t\n should alter or fix: Hello world<br/><br/> to Hello world<p />secon\n should alter or fix: Hello world<br/><br/> to Hello world<p /><br /\n should alter or fix: <p>a</p><p>b</p><br/> to <p>a</p><p>b</p><p />\n should alter or fix: Things that are reall to Things that are reall\n should alter or fix: a<div><br></div>text< to a<p />text<p>a</p>\n should alter or fix: a<DIV><BR></DIV>text< to a<p />text<p>a</p>\n should alter or fix: a \n<div>\n <br> \n</div to a \n<p /> \ntext<p>a</p\n should alter or fix: a<div><br><br></div>t to a<p />text<p>a</p>\n should alter or fix: a<div><br>test</div>t to a<div><br />test</div\n should alter or fix: a<div>test<br>test</d to a<div>test<br />test<\n should alter or fix: a<div>&nbsp;</div>tex to a<p />text<p>a</p>\n should alter or fix: a \n<div>\n &nbsp; \n</d to a \n<p /> \ntext<p>a</p\n should alter or fix: a<div>&nbsp;&nbsp;</d to a<p />text<p>a</p>\n should alter or fix: a<div>&nbsp;test</div to a<div>&nbsp;test</div\n should alter or fix: a<div>test&nbsp;test< to a<div>test&nbsp;test<\n should alter or fix: <p>&nbsp;</p>foo<p>&n to <p>&nbsp;</p>foo<p>&n\n should alter or fix: <br/>foo<br/>test to foo<br />test\n should alter or fix: <p><br/></p>foo<p><br to foo\n should alter or fix: <p><br/></p>foo<p><br to foo<p><br /></p>bar\n should alter or fix: <br/> to \n should alter or fix: <p/> to \n should alter or fix: <span/> to \n should alter or fix: <span></span> to \n should alter or fix: <p><br><span></span>< to \n should alter or fix: A<p><br><span></span> to A<p><br /><span></spa\n should alter or fix: \n\n<div><br/> </div>fo to foo\n should alter or fix: foo\n\n<div><br/> </div to foo\n should alter or fix: <div>foo</div><div></ to <div>foo</div><p /><d\n should alter or fix: \r\n\r\n<p></p>\r\n\r\n<div c to \r\n<p>&nbsp;[[posterou\n should alter or fix: \r\n\r\n<p></p>\r\n\r\n<p></p to \r\n<p>&nbsp;[[posterou\n should alter or fix: <div class=\"Section1\" to \r\n<p>&nbsp;[[posterou\n should alter or fix: <div class=\"Section1\" to \r\n<p>&nbsp;[[posterou\n should alter or fix: <div class=\"Section1\" to \r\n<p>foo</p>\r\n\r\n should alter or fix: <div>foo</div> to foo\n should alter or fix: \n<div>foo</div>\n to \nfoo\n should alter or fix: \n<div>foo</div><div>b to <div>foo</div><div>ba\n should alter or fix: <br><br><br><br>foo to foo\n should alter or fix: foo<br><br><br><br> to foo\n should alter or fix: foo<br><br><br><br>ba to foo<p /><p />bar\n should alter or fix: <div>foo</div><div>ba to <div>foo</div><div>ba\n should alter or fix: <div class=\"posterous to <div class=\"posterous\n should alter or fix: <object width=\"640\" h to <object height=\"394\" \n should alter or fix: http://www.youtube.co to <object height=\"417\" \n should alter or fix: <table width='600'><t to <table><tr><td>foo</t\n should alter or fix: <table width='50%'><t to <table><tr><td>foo</t\n should alter or fix: <a href=\"http://www.y to <object height=\"417\" \n should alter or fix: <p>http://www.youtube to <p><object height=\"41\n should alter or fix: <p>I don't EXPAND you to <p>I don't EXPAND you\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <a href=\"javascript:a to <a>test</a>\n should alter or fix: <script>alert('bad'); to \n should alter or fix: <SCRIPT SRC=http://ha to \n should alter or fix: <IMG SRC=\"javascript: to <img />\n should alter or fix: <IMG\nSRC\n=\n\"\nj\na\nv\na\n to <img />\n should alter or fix: <p>foo</p></div> to <p>foo</p>\n should alter or fix: <p>foo</div> to <p>foo</p>\n should alter or fix: <p>foo</div></p> to <p>foo</p>\n should alter or fix: foo</p> to foo\n should alter or fix: <p><span><p><span>foo to <p><span><p><span>foo\n should alter or fix: <p>foo to <p>foo</p>\n should alter or fix: <b>foo to <b>foo</b>\n should alter or fix: <a href=\"http://foo.c to <a href=\"http://foo.c\n should alter or fix: <img src=\"http://foo. to <img src=\"http://foo.\n should alter or fix: <p style='font-family to <p style=\"font-family\n should alter or fix: <p style='font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"\">foo</p>\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"font-family to <p style=\"font-family\n should alter or fix: <p style=\"\">foo</p> to <p style=\"\">foo</p>\n should alter or fix: \n <iframe wi to <iframe src=\"http://m\n should alter or fix: \n <object widt to <object height=\"394\" \n should alter or fix: \n <object width= to <object height=\"300\" \n should alter or fix: <!DOCTYPE HTML PUBLIC to A<p />B<p />C\n should alter or fix: blargh<div><span clas to blargh<p />foo\n should alter or fix: blargh<div><span clas to blargh<p />foo\n should alter or fix: <p>blargh</p><div><sp to <p>blargh</p><p />foo\n should alter or fix: <p>blargh</p><div><sp to <p>blargh</p><p />foo\n should alter or fix: <META HTTP-EQUIV=\"Con to \n should alter or fix: <!--[if !mso]>\n to \n should alter or fix: <link rel=File-List h to \n should alter or fix: <script language=\"jav to <script language=\"jav\n should alter or fix: <link href=\"/styleshe to <link href=\"/styleshe\n should alter or fix: <script src=\"http://g to <script src=\"http://g\n should be special case for bad word 12\n should properly remove enclosing items for <div><div><div>foo</d\n should properly remove enclosing items for <div><div style=\"\"><d\n should properly remove enclosing items for <div><div class=\"foo\"\n should properly remove enclosing items for <div><div><p style=\"f\n should properly remove enclosing items for <div><div><div style=\n should properly remove enclosing items for foo<p />bar\n should preprocess correctly for <span><div>foo</div><\n should preprocess correctly for <div><span><div>foo</\n should preprocess correctly for <div><span><div><span\n should sanitize css correctly for margin-right: 0px; ma\n should sanitize css correctly for margin-right: 0px; ma\n should sanitize css correctly for margin-top: 0px !impo\n Absolutizing Links\n should absolutize <a href=\"#bar\">bar</a> \n should absolutize <a href=\"/bar\">bar</a> \n should absolutize <a href=\"/bar/baf\">bar</a> \n should absolutize <a href=\"bar/baf\">bar</a> \n should absolutize <a href=\"?foo=bar\">bar</a> \n should absolutize <a href=\"/bar/baf/#boo\">bar</a> \n should absolutize <img src=\"../baf/#boo\">bar \n Autolinking\n should autolink http://foo.com\n should autolink http://bugs.mysql.com/bug.php?id=20773&dfjzidfioszjoijoejoifjaweoia=weijfz8jf8jjr893jfzjd8jf98e=ze8f38jf83w\n should autolink http://www.youtube.com/watch?v=irSklXqsXBo#t=0m_-40s\n These things should pass through untouched\n should not touch: Some text\n should not touch: [code]\nfoo\n[/code]\n should not touch: [code]\nhttp://foo.com\n should not touch: A <a href=\"http://foo\n should not touch: <table><tr><td>Hello<\n should not touch: <b>foo</b>\n should not touch: <img src='http://foo.\n should not touch: <div align='right'>fo\n should not touch: <a href='http://foo.c\n should not touch: <hr/>\n should not touch: <em>foo</em>\n should not touch: <map name=\"follow_us_\n should not touch: <a href=\"http://pixel\n should not touch: <a href=\"mailto:bar@f\n should not touch: <a href=\"itpc://garry\n should not touch: <blockquote class=\"po\n should not touch: <blockquote class=\"po\n should not touch: <img src=\"http://foo.\n should not touch: <blockquote class=\"po\n should not touch: <blockquote class=\"po\n should not touch: \"<object><param name=\n should not touch: <a href=\"http://media\n should not touch: \n <div class\n should not touch: <object width=\"450\" h\n should not touch: \n <form acti\n should not touch: <object classid=\"clsi\n should not touch: <div style=\"font-size\n should not touch: <center>centered text\n should not touch: <embed src=\"http://ww\n Kill bad tags and contents\n should kill tag and contents: head\n should kill tag and contents: applet\n should kill tag and contents: style\n should kill tag and contents: frame\n should kill tag and contents: frameset\n should kill tag and contents: ilayer\n should kill tag and contents: layer\n should kill tag and contents: bgsound\n should kill tag and contents: title\n should kill tag and contents: xml\n HTML comment handling\n should get rid of HTML comments like <!-- Hello -->\n should get rid of HTML comments like <! -- Hello -->\n should get rid of HTML comments like < !-- Hello -->\n should get rid of random closed comment\n should allow more comments\n Segment whitelist/blacklist\n should whitelist scripts\n should dewhitelist a script\n should whitelist a medium difficulty example\n should whitelist/dewhitelist an extreme example\nNotification\n should call comments delegate from async method call\n should send a notifiable for a comment to a user\n should send multiple notifiables for a comment to a multi-user site with 5 contributors\n should send notifiable to previous commenter\n should properly call mail robot from send_notifiable_for_user\n should send notifiable to previous commenter for anonymous commenters\n should get delayed notifications for comments\n should call favorites delegate from async method call\n should send a notifiable for a favorite to a user\n should properly call mail robot from send_notifiable_for_user for a favorite\n should get delayed notifications for favorites\n should call subscription delegate from async method call\n should send a notifiable for a subscription to a user\n should properly call mail robot from send_notifiable_for_user for a subscription\n should get delayed notifications for subscription\n post moderation\n should call moderate_post delegate from async method call\n should send a notifiable for a moderate_post to a user\n should properly call mail robot from send_notifiable_for_user for a moderate_post\n should get delayed notifications for moderate_post\n comment moderation\n should call moderate_comment delegate from async method call\n should send a notifiable for a moderate_post to a user\n should properly call mail robot from send_notifiable_for_user for a moderate_post\n should get delayed notifications for moderate_post\n new post notifications for contributors\n should send a new post notification for a site with contributors\n should not send a post notification for a site with contributors\nModerateController\n Comment moderation\n with a user logged in\n should list comments to be moderated\n should list comments to be moderated via ajax\n should return 20 comments and no more link\n should show more if there are more than 20 comments\n should paginate via date\n should approve a comment\n should whitelist a commenter\n should ban a commenter\n should reject all comments\n should approve all comments\n should list comment permissions\n should remove ban for commenter\n should remove whitelist for commenter\n with an unauthorized user logged in\n should not approve a comment\n should not whitelist a commenter\n should not ban a commenter\n should not reject all comments\n should not approve all comments\n should not list comment permissions\n should not remove ban for commenter\n should not remove whitelist for commenter\nLocation\n should return gmap_zoom based on precision\n should create a geolookup delayed job on create\n should not create a delayed job on save\n being validated\n should require a lat\n should require a lng\n looking up geo data\n should store address data and save with lookup!\n generating formatted lat/lng\n should display 12.23,12.55 as 12\302\26013'N, 12\302\26033'E\n should display -12.23,-12.55 as 12\302\26013'S, 12\302\26033'W\n should display -88.435,70.99 as 88\302\26026'S, 70\302\26059'E\n generating a summary\n should include city and state when available for US\n should include country name outside of the use\n should indicate state w/o city in US\n should include state and country for country outside US\n should include country if only given country\n should indicate latitude and longitude w/o other data\nPagesController\n when authorized\n #edit\n should have a site\n should be success\n when unauthorized\n #edit\n should not be able to access edit\n should set the flash on edit\n #update\n should not be able to access update\n should set the flash on update\n #create\n should not be able to access create\n should set the flash on create\n #new\n should not be able to access new\n should set the flash on new\n #destroy\n should not be able to access destroy\n should set the flash on destroy\nSite\n an instance\n should set and get dont_show_locations with show_locations\n should set and get dont_show_locations via show_locations with string\n Creating a new site for new user (e.g., from register action)\n should create a new site from a new user\n being validated\n should require a hostname\n should not allow hostnames with underscores\n should not allow hostnames that start or end w/ hyphens\n should not be valid with new underscored hostname\n should be valid w/ existing hostnames w/ underscores\n should require a unique hostname\n should require a unique hostname ingnoring case\nfalse\n should require a unique virtual host ignoring case\n should validate virtual host is valid domain\n should not be valid unless both FB API/Secret keys are either blank or non-blank for custom domains\n should not allow virtual hosts that contain posterous.com\n should not allow abc.posterous.com\n should not allow posterous.com\n should allow allaboutposterous.com\n comment permission\n should have constants\n should have predicates and allow setting via symbol\n ratings and flagging\n should have contstants for rating\n should have predicates and allow setting via symbol\n should change rating and update with flag_as_general_audience!\n should change rating and update with flag_as_pg13!\n should change rating and update with flag_as_adult!\n feedburner\n should require a valid feedburner_id\n should strip http part off feedburner URL\n should convert feedburner_id to alt_feed_url on save\n should not populate alt_feed_url w/o feedburner_id\n should return feedburner id based on alt_feed_url\n should return updated feedburner id even if alt_feed_url exists\n should return nil feedburner_id\n should allow nilling out of alt_feed_url via blank feedburner_id\n should not destroy non feedburner alt_feed_url if feedburner_id set to blank\n should not error setting feedburner_id to nil w/o alt_feed_url\n site notifications\n should remove notifications when a site is banned\n should recreate notifications when a site is unbanned\n should remove notifications when a site is destroyed\n showable flag\n should be showable if nil user\n should not be showable if unconfirmed email\n should not be showable if site is banned\n should be showable again if site is banned and unbanned\n should be showable for default user\n should be showable if email becomes confirmed\n generating full hostname\n should use posterous subdomain for nil or empty virtual_host\n should use virtual_host if it exists\n finding subscribers\n should order by subscription id\n should paginate subscribers\n should not include unshowable users\n should not include adult\n should not count total given flag\n getting retrieved for twitter credentials\n should raise error given bad creds\n should create a new extenal site and site given valid creds\n should lookup existing site and external site w/ valid creds\n should resolve to the group site for twitter site w/ a group site\n creating a site for a twitter external site\n should create a new site with the username in the hostname and sharing enabled\nApi2Controller\n upload endpoint\n should reject GET requests\n should be agnostic to http or https for uploading - testing: http\n should be agnostic to http or https for uploading - testing: https\n Verifying OAuth Headers\n Verifying X_AUTH_SERVICE_PROVIDER header\n should verify the presence of an X_AUTH_SERVICE_PROVIDER header\n should verify that the X_AUTH_SERVICE_PROVIDER points to twitter\n Verifying X_VERIFY_CREDENTIALS_AUTHORIZATION header\n should complain if the credentials header is completely missing\n should complain vigorously if any of the credential params are missing - oauth_consumer_key\n should complain vigorously if any of the credential params are missing - oauth_signature_method\n should complain vigorously if any of the credential params are missing - oauth_token\n should complain vigorously if any of the credential params are missing - oauth_timestamp\n should complain vigorously if any of the credential params are missing - oauth_nonce\n should complain vigorously if any of the credential params are missing - oauth_version\n should complain vigorously if any of the credential params are missing - oauth_signature\n Uploading after passing twitter verification\n should return twitpic 'created response' if the correct twitter auth and text is passed in\n should set the via_type of the post to via_twitter_api\n should set the via_text to the passed in source field\nidentify: Not a JPEG file: starts with 0x00 0x00 `/tmp/broken.image7930-0.jpg' @ jpeg.c/EmitMessage/233.\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should return an error of type 1003 'Invalid media type' and send email if two invalid photos were sent\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-1.jpg' @ jpeg.c/EmitMessage/233.\n should return no errors and discard one image and send email if one broken and one correct image was sent.\nExtTwitterBasic\n should allow you to query by twitter_id\n finding or being created from twitter\n should not create a new external site given invalid twitter creds\n with valid twitter creds\n should find an existing site given twitter valid creds\n should create a new external site given valid twitter creds\n With Twitter OAuth Echo\n should find an existing site given an existing twitter name\n should create a new external site from a username\nRouting\n for posterous.com and www.posterous.com\n (posterous.com)\n should route / to {:controller=>\"main\", :action=>\"index\"}\n should route /confirmemail/adfssdaf to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"adfssdaf\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /loginstring/adfssdaf to {:controller=>\"main\", :action=>\"loginstring\", :hash=>\"adfssdaf\"}\n should route /getfile/files.posterous.com/abcdef/abc.jpg to {:controller=>\"getfile\", :action=>\"index\", :key=>\"abcdef/abc.jpg\", :bucket=>\"files.posterous.com\"}\n should route /privacy to {:controller=>\"main\", :action=>\"privacy\"}\n should route /tos to {:controller=>\"main\", :action=>\"tos\"}\n should route /about to {:controller=>\"main\", :action=>\"about\"}\n should route /faq to {:controller=>\"main\", :action=>\"faq\"}\n should route /facebook_tab to {:controller=>\"posts\", :action=>\"list\"}\n should route /post/textmarks to {:controller=>\"posts\", :action=>\"textmarks\"}\n should route /admin to {:controller=>\"admin\", :action=>\"index\"}\n should route /admin/posts to {:controller=>\"admin\", :action=>\"posts\"}\n should route /admin/debug/posts/1234 to {:controller=>\"admin\", :class=>\"posts\", :action=>\"debug_obj\", :id=>\"1234\"}\n should route /explore to {:controller=>\"explore\", :action=>\"index\"}\n should route /explore/tag/abc to {:controller=>\"explore\", :tag=>\"abc\", :action=>\"index\"}\n should route /share to {:controller=>\"share\", :action=>\"index\"}\n should route /autopost to {:controller=>\"autopost\", :action=>\"index\"}\n should route /autopost/editexternal to {:controller=>\"autopost\", :action=>\"editexternal\"}\n should route /autopost/editexternal/5 to {:controller=>\"autopost\", :action=>\"editexternal\", :id=>\"5\"}\n should route /reader to {:controller=>\"reader\", :action=>\"index\"}\n should route /reader/rss/4 to {:controller=>\"reader\", :action=>\"rss\", :id=>\"4\"}\n should route /people/edit/abc123 to {:controller=>\"people\", :action=>\"edit\", :id=>\"abc123\"}\n should route /people/subscriptions/abc123 to {:controller=>\"people\", :action=>\"subscriptions\", :id=>\"abc123\"}\n should route /people/abc123 to {:controller=>\"people\", :action=>\"index\", :id=>\"abc123\"}\n should route /confirmemail/abcd to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"abcd\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /editpost/abcded to {:controller=>\"posts\", :action=>\"editpost\", :hash=>\"abcded\"}\n should route /removepost/abcded to {:controller=>\"posts\", :action=>\"removepost\", :hash=>\"abcded\"}\n should route /remove/abcded to {:controller=>\"posts\", :action=>\"remove\", :hash=>\"abcded\"}\n should route /confirmpost/abcded to {:controller=>\"posts\", :action=>\"confirmpost\", :hash=>\"abcded\"}\n should route /pingcomment/abcd/123 to {:controller=>\"posts\", :commentid=>\"123\", :action=>\"pingcomment\", :hash=>\"abcd\"}\n should route /pingpost/abcd to {:controller=>\"posts\", :action=>\"pingpost\", :hash=>\"abcd\"}\n should route /picposterous to {:controller=>\"mobile\", :action=>\"picposterous\"}\n should route /api/upload to {:controller=>\"api\", :action=>\"upload\"}\n should route /api2/upload to {:controller=>\"api2\", :action=>\"upload\"}\n should route /api2/upload.json to {:controller=>\"api2\", :format=>\"json\", :action=>\"upload\"}\n should route /api2/upload.xml to {:controller=>\"api2\", :format=>\"xml\", :action=>\"upload\"}\n should route /sso/check.js to {:controller=>\"sso\", :format=>\"js\", :action=>\"check\"}\n should route /some-generic-sitename to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"list_redirect\"}\n should route /some-generic-sitename/rss to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/rss.xml to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/some-generic-slug to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"show_redirect\", :id=>\"some-generic-slug\"}\n should route /analytics/image/newsletter.gif?user_id=1234 to {:event=>\"newsletter\", :controller=>\"analytics\", :user_id=>\"1234\", :action=>\"image\"}\n (www.posterous.com)\n should route / to {:controller=>\"main\", :action=>\"index\"}\n should route /confirmemail/adfssdaf to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"adfssdaf\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /loginstring/adfssdaf to {:controller=>\"main\", :action=>\"loginstring\", :hash=>\"adfssdaf\"}\n should route /getfile/files.posterous.com/abcdef/abc.jpg to {:controller=>\"getfile\", :action=>\"index\", :key=>\"abcdef/abc.jpg\", :bucket=>\"files.posterous.com\"}\n should route /privacy to {:controller=>\"main\", :action=>\"privacy\"}\n should route /tos to {:controller=>\"main\", :action=>\"tos\"}\n should route /about to {:controller=>\"main\", :action=>\"about\"}\n should route /faq to {:controller=>\"main\", :action=>\"faq\"}\n should route /facebook_tab to {:controller=>\"posts\", :action=>\"list\"}\n should route /post/textmarks to {:controller=>\"posts\", :action=>\"textmarks\"}\n should route /admin to {:controller=>\"admin\", :action=>\"index\"}\n should route /admin/posts to {:controller=>\"admin\", :action=>\"posts\"}\n should route /admin/debug/posts/1234 to {:controller=>\"admin\", :class=>\"posts\", :action=>\"debug_obj\", :id=>\"1234\"}\n should route /explore to {:controller=>\"explore\", :action=>\"index\"}\n should route /explore/tag/abc to {:controller=>\"explore\", :tag=>\"abc\", :action=>\"index\"}\n should route /share to {:controller=>\"share\", :action=>\"index\"}\n should route /autopost to {:controller=>\"autopost\", :action=>\"index\"}\n should route /autopost/editexternal to {:controller=>\"autopost\", :action=>\"editexternal\"}\n should route /autopost/editexternal/5 to {:controller=>\"autopost\", :action=>\"editexternal\", :id=>\"5\"}\n should route /reader to {:controller=>\"reader\", :action=>\"index\"}\n should route /reader/rss/4 to {:controller=>\"reader\", :action=>\"rss\", :id=>\"4\"}\n should route /people/edit/abc123 to {:controller=>\"people\", :action=>\"edit\", :id=>\"abc123\"}\n should route /people/subscriptions/abc123 to {:controller=>\"people\", :action=>\"subscriptions\", :id=>\"abc123\"}\n should route /people/abc123 to {:controller=>\"people\", :action=>\"index\", :id=>\"abc123\"}\n should route /confirmemail/abcd to {:controller=>\"main\", :action=>\"confirmemail\", :hash=>\"abcd\"}\n should route /email_subscriptions/hash/blahblah to {:controller=>\"email_subscriptions\", :action=>\"index\", :hash=>\"blahblah\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /editpost/abcded to {:controller=>\"posts\", :action=>\"editpost\", :hash=>\"abcded\"}\n should route /removepost/abcded to {:controller=>\"posts\", :action=>\"removepost\", :hash=>\"abcded\"}\n should route /remove/abcded to {:controller=>\"posts\", :action=>\"remove\", :hash=>\"abcded\"}\n should route /confirmpost/abcded to {:controller=>\"posts\", :action=>\"confirmpost\", :hash=>\"abcded\"}\n should route /pingcomment/abcd/123 to {:controller=>\"posts\", :commentid=>\"123\", :action=>\"pingcomment\", :hash=>\"abcd\"}\n should route /pingpost/abcd to {:controller=>\"posts\", :action=>\"pingpost\", :hash=>\"abcd\"}\n should route /picposterous to {:controller=>\"mobile\", :action=>\"picposterous\"}\n should route /api/upload to {:controller=>\"api\", :action=>\"upload\"}\n should route /api2/upload to {:controller=>\"api2\", :action=>\"upload\"}\n should route /api2/upload.json to {:controller=>\"api2\", :format=>\"json\", :action=>\"upload\"}\n should route /api2/upload.xml to {:controller=>\"api2\", :format=>\"xml\", :action=>\"upload\"}\n should route /sso/check.js to {:controller=>\"sso\", :format=>\"js\", :action=>\"check\"}\n should route /some-generic-sitename to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"list_redirect\"}\n should route /some-generic-sitename/rss to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/rss.xml to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"rss_redirect\"}\n should route /some-generic-sitename/some-generic-slug to {:sitename=>\"some-generic-sitename\", :controller=>\"posts\", :action=>\"show_redirect\", :id=>\"some-generic-slug\"}\n should route /analytics/image/newsletter.gif?user_id=1234 to {:event=>\"newsletter\", :controller=>\"analytics\", :user_id=>\"1234\", :action=>\"image\"}\n for posterous.com subdomains and custom domains\n (subdomain)\n should route / to {:controller=>\"posts\", :action=>\"list\"}\n should route /tag/abc to {:controller=>\"posts\", :tag=>\"abc\", :action=>\"list\"}\n should route /search to {:controller=>\"posts\", :action=>\"search\"}\n should route /rss to {:controller=>\"posts\", :action=>\"rss\"}\n should route /rss.xml to {:controller=>\"posts\", :action=>\"rss\"}\n should route /private/abcded/rss to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcded/rss.xml to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcdefg to {:controller=>\"posts\", :action=>\"show\", :private=>\"abcdefg\"}\n should route /url-slug to {:controller=>\"posts\", :action=>\"show\", :id=>\"url-slug\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /email_subscriptions/recaptcha to {:controller=>\"email_subscriptions\", :action=>\"recaptcha\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n (custom domain)\n should route / to {:controller=>\"posts\", :action=>\"list\"}\n should route /tag/abc to {:controller=>\"posts\", :tag=>\"abc\", :action=>\"list\"}\n should route /search to {:controller=>\"posts\", :action=>\"search\"}\n should route /rss to {:controller=>\"posts\", :action=>\"rss\"}\n should route /rss.xml to {:controller=>\"posts\", :action=>\"rss\"}\n should route /private/abcded/rss to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcded/rss.xml to {:controller=>\"posts\", :secret=>\"abcded\", :action=>\"rss\"}\n should route /private/abcdefg to {:controller=>\"posts\", :action=>\"show\", :private=>\"abcdefg\"}\n should route /url-slug to {:controller=>\"posts\", :action=>\"show\", :id=>\"url-slug\"}\n should route /email_subscriptions/invite_email to {:controller=>\"email_subscriptions\", :action=>\"invite_email\"}\n should route /email_subscriptions/recaptcha to {:controller=>\"email_subscriptions\", :action=>\"recaptcha\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n for posterous.com and posterous.com subdomains\n (the subdomain)\n should route /posts/ajaxcomment/url-slug to {:controller=>\"posts\", :action=>\"ajaxcomment\", :url_slug=>\"url-slug\"}\n should route /posts/privateajaxcomment/privatestring to {:controller=>\"posts\", :action=>\"privateajaxcomment\", :privatestring=>\"privatestring\"}\n should route /tag/addtag to {:controller=>\"tag\", :action=>\"addtag\"}\n should route /tag/removetag to {:controller=>\"tag\", :action=>\"removetag\"}\n should route /tag/edittags to {:controller=>\"tag\", :action=>\"edittags\"}\n should route /tag/ to {:controller=>\"tag\", :action=>\"index\"}\n should route /posts/getcomments to {:controller=>\"posts\", :action=>\"getcomments\"}\n should route /autopost/crosspost to {:controller=>\"autopost\", :action=>\"crosspost\"}\n should route /reader/favorite to {:controller=>\"reader\", :action=>\"favorite\"}\n should route /sso/recovery to {:controller=>\"sso\", :action=>\"recovery\"}\n should route /site/private to {:controller=>\"site\", :action=>\"private\"}\n should route /admin/resavepost to {:controller=>\"admin\", :action=>\"resavepost\"}\n should route /main/claim to {:controller=>\"main\", :action=>\"claim\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n (posterous.com)\n should route /posts/ajaxcomment/url-slug to {:controller=>\"posts\", :action=>\"ajaxcomment\", :url_slug=>\"url-slug\"}\n should route /posts/privateajaxcomment/privatestring to {:controller=>\"posts\", :action=>\"privateajaxcomment\", :privatestring=>\"privatestring\"}\n should route /tag/addtag to {:controller=>\"tag\", :action=>\"addtag\"}\n should route /tag/removetag to {:controller=>\"tag\", :action=>\"removetag\"}\n should route /tag/edittags to {:controller=>\"tag\", :action=>\"edittags\"}\n should route /tag/ to {:controller=>\"tag\", :action=>\"index\"}\n should route /posts/getcomments to {:controller=>\"posts\", :action=>\"getcomments\"}\n should route /autopost/crosspost to {:controller=>\"autopost\", :action=>\"crosspost\"}\n should route /reader/favorite to {:controller=>\"reader\", :action=>\"favorite\"}\n should route /sso/recovery to {:controller=>\"sso\", :action=>\"recovery\"}\n should route /site/private to {:controller=>\"site\", :action=>\"private\"}\n should route /admin/resavepost to {:controller=>\"admin\", :action=>\"resavepost\"}\n should route /main/claim to {:controller=>\"main\", :action=>\"claim\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n for postly\n should route / to {:controller=>\"postly\", :action=>\"index\"}\n should route /post to {:controller=>\"postly\", :action=>\"post\"}\n should route /navbar to {:controller=>\"postly\", :action=>\"navbar\"}\n should route /uploads/upload to {:controller=>\"uploads\", :action=>\"upload\"}\n should route /oauth/close_window to {:controller=>\"oauth\", :action=>\"close_window\"}\n should route /something to {:controller=>\"shorturl\", :action=>\"redirect\", :id=>\"something\"}\nSSO handling\n on a virtual host domain that ends in posterous.com\n should redirect a post url for sso\n should redirect / for sso\n should redirect /tag/abcde for sso\n should redirect /sso/init for sso\n should not redirect / for sso with params with params {\"c\":\"1\"}\n should not redirect /tag/abcde for sso with params with params {\"c\":\"1\"}\n should not redirect post requests\n should not redirect bots\n digg or ip checks\n should not redirect digg\n should not redirect anything on digg subnet\n should redirect other ips that are not digg\n going between domains\n without a user logged out and logged in on posterous.com\n should log the user in if they're logged in on posterous.com\n should preserve query params through sso redirect\n should log the user and redirect to given jumpto using /sso/init\n should log the user and redirect to http referer using /sso/init if jumpto is missing\n using /sso/init should end sso on / w/o referer or jumto\n should sync oauth user across sessions\n should sync twitter account accross sessions\n should clear out existing twitter accout on vhost\n should clear out oauth_user on vhost\n with a user logged in and logged out on posterous.com\n should log the user out\n on a virtual host domain\n should redirect a post url for sso\n should redirect / for sso\n should redirect /tag/abcde for sso\n should redirect /sso/init for sso\n should not redirect / for sso with params with params {\"c\":\"1\"}\n should not redirect /tag/abcde for sso with params with params {\"c\":\"1\"}\n should not redirect post requests\n should not redirect bots\n digg or ip checks\n should not redirect digg\n should not redirect anything on digg subnet\n should redirect other ips that are not digg\n going between domains\n without a user logged out and logged in on posterous.com\n should log the user in if they're logged in on posterous.com\n should preserve query params through sso redirect\n should log the user and redirect to given jumpto using /sso/init\n should log the user and redirect to http referer using /sso/init if jumpto is missing\n using /sso/init should end sso on / w/o referer or jumto\n should sync oauth user across sessions\n should sync twitter account accross sessions\n should clear out existing twitter accout on vhost\n should clear out oauth_user on vhost\n with a user logged in and logged out on posterous.com\n should log the user out\n on posterous.com\n should not redirect / for sso with params\n should not redirect /help for sso with params\n on a posterous.com subdomain\n should not redirect a post url for sso with params\n should not redirect / for sso with params\n should not redirect /tag/abcde for sso with params\nSiteController\n Creating and destroying sites\n should show the newsite ajax action\n should return true for available hostname\n should return false for unavailable hostname\n should allow you to create new sites\n should prevent you from creating duplicate sites\n should prevent users from creating sites as other users\n should allow you to delete sites\n should prevent non-owners from deleting sites\n Updating attributes of sites\nTEST\n should let you update feedburner and google analytics\nTEST\n should let you set an fb key\nTEST\n should let you change privacy and password\n should let you change site vars through SiteExtra\n should let you update the typekit id\nTEST\n should let you change commenting, downloading, and posting options\nTEST\n should let you change site name and subhead\nTEST\n should let you change site address\n should prevent you from changing your address to something that's taken\nTEST\n should let you change virtual host\n should notify you of errors if your virtual host is misconfigured\nTEST\n should allow you to set a bogus hostname if you disable verification\n should prevent non-owners/non-contributors from altering a site\n should prevent contributors from altering a site\nTEST\n should prevent you from resetting your site id\nTEST\n should prevent you from setting the primary owner of a site to someone else\n Inviting site contributors by a logged in user\n should not allow you to add contributors to a site you do not own\n should make sure the user is confirmed before allowing him to add contributors\n should create a SitesEmails object if the email is not confirmed\n should create a SitesUsers object if the email is associated with a posterous user\n should create a new Contact for the user if the email is new\n should reject poorly formatted emails\n should not allow you to add duplicate contributors (sitesemails)\nemail2911@designerslash.com (John Doe) <br/>\n should not allow you to add duplicate contributors (sitesusers)\n should place a message in flash[:notice] if the add was successful\n should redirect to mainsite url if the request is GET\n Creating a new site\n should allow you to create a new site\nSiteExtra\n Initializing a new site\n should create a new SiteExtra object and initialize vars to nil\n Getting and setting site vars\n should initialize valid vars to nil\n should throw an error if I reference an invalid var\n should allow me to set a valid var\n should not allow me to set an invalid var\nLinksController\n scraping title\n should return a proper page title\n when authorized\n #update\n should have a site\n should be success\n should update the link's url (FAILED - 6)\n when unauthorized\n #update\n should not be able to access update\n should set the flash on update\n #create\n should not be able to access create\n should set the flash on create\n #destroy\n should not be able to access destroy\n should set the flash on destroy\nPeopleController\n index\n should lookup user via encrypted id\n should lookup user via normal id\nPosterous::UrlHelper\n url_for_user\n should return posterous.com and user's encrypted id\n generating homepage_url_for_site\n should return posterous homepage for nil site\n should use subdomain without virutal_host\n should use virtual host if site has one\n generating an rss URL\n should use alt_feed_url if it exists\n should add /rss.xml to site host for rss_url\n should use secret rss url for private site\n should use secret rss URL for private site with alt_feed_url\nExtTwitterOauth\n should set username and site_url from twitter_acct\n should validate the presence of an oauth user that is authenticated\nGot shorturl http://posterous.com/shorturl/redirect/5JG\n should try three times if it can't post before failing out\n should allow you to query by twitter_id\n Querying Twitter for user info\n should try a few times to fetch account info and fail if it doesn't work\n should properly assign user info\nOauthController\n oauth for posterous main site\n should close window properly\nSubscription\n notifications\n should call generate create notifications for a subscription\n should create notifications for a subscription check for notification\n should create notifications for subscriptions when a subscription is added\n should create new notifiables on new posts\n should back-fill post subscriptions\n should remove notifications when a post has gone private\n should return the right notifications from get_notifications for subscribed posts\n should return the right notifications from get_notifications for subscribed posts for weekly\n should return the right notifications from get_notifications for subscribed posts for none\nTue Jun 29 17:20:41 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:20:41 -0700 2010: Got 1 notifications\nTue Jun 29 17:20:41 -0700 2010: Processing 532766 user, John Doe, 1 notifications\nTue Jun 29 17:20:41 -0700 2010: Cleaning up 1 notifications\nTue Jun 29 17:20:41 -0700 2010: END MAIL JOB\n should create an email for one post daily\nTue Jun 29 17:21:11 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:21:11 -0700 2010: Got 100 notifications\nTue Jun 29 17:21:11 -0700 2010: Processing 532768 user, John Doe, 100 notifications\nTue Jun 29 17:21:11 -0700 2010: Cleaning up 100 notifications\nTue Jun 29 17:21:11 -0700 2010: END MAIL JOB\n should create an email for one hundred posts daily, with the top 20 scores for the batch being sent\n should send an email digesting the top 20\n counter_cache for site\n should increment subscription_count for site if user is showable\n should decrement subscription_count for site if subscription is removed\nResourceViewing\n increment and return view count for a post instance\n increment and return view count for a site instance\n should bulk increment post views by id\nPosterous::Freud\n Validating test setup\n should set site showable state correctly\n should set up site tags correctly\n Downloading and processing site tag data\n should fetch a list of site ids whose tags we are going to use and sort them numerically\n should sort the tags found in the sites alphabetically\n should create a hash that tells where in the array each tag is\n should create tag vectors for each site with the appropriate probabilities\n should record the frequency with which a tag appears in the selected sites\n Basic Redis Setup\n should set and return its own redis namespace\n should nuke its own namespace\n Persisting the clustering results into Redis\ncluster_kmeans! iter = 0, centroid_change = 3.393e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 0.000e+00<br/>\n should remember how many sites, tags, and clusters there are\ncluster_kmeans! iter = 0, centroid_change = 3.789e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 9.932e-02<br/>\ncluster_kmeans! iter = 2, centroid_change = 1.407e-01<br/>\ncluster_kmeans! iter = 3, centroid_change = 0.000e+00<br/>\n should store all tags and sites\ncluster_kmeans! iter = 0, centroid_change = 4.080e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 0.000e+00<br/>\n should store clusters and centroids\ncluster_kmeans! iter = 0, centroid_change = 3.759e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 1.156e-01<br/>\ncluster_kmeans! iter = 2, centroid_change = 0.000e+00<br/>\n should store the frequency with which tags appear in all sites\n Clustering the tag data\n should appropriately calculate covariances\n should appropriately calculate Pearson coefficients\ncluster_kmeans! iter = 0, centroid_change = 3.388e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 0.000e+00<br/>\n should return a list of k clusters when doing k-means clustering\n Making recommendations based on input\ncluster_kmeans! iter = 0, centroid_change = 2.096e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 1.488e-01<br/>\ncluster_kmeans! iter = 2, centroid_change = 1.671e-01<br/>\ncluster_kmeans! iter = 3, centroid_change = 0.000e+00<br/>\n****************************************************************************************************<br/>\nDEBUG INFO<br/>\n@centroids = [<br/>\n 0 : 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00<br/>\n 1 : 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00, 0.00000e+00<br/>\n 2 : 0.00000e+00, 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01<br/>\n]<br/>\n<br/>\n@cluster_0 = [867002]<br/>\n@cluster_1 = [867001]<br/>\n@cluster_2 = [867003]<br/>\n<br/>\n@site_id_867001 = 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00, 0.00000e+00<br/>\n@site_id_867002 = 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01, 0.00000e+00<br/>\n@site_id_867003 = 0.00000e+00, 0.00000e+00, 3.33333e-01, 3.33333e-01, 3.33333e-01<br/>\n****************************************************************************************************<br/><br/>\ncluster_index = 0<br/>\ncluster_index = 2<br/>\n should recommend the appropriate cluster for you (case insensitivity on tag)\ncluster_kmeans! iter = 0, centroid_change = 3.720e-01<br/>\ncluster_kmeans! iter = 1, centroid_change = 8.754e-02<br/>\ncluster_kmeans! iter = 2, centroid_change = 9.965e-02<br/>\ncluster_kmeans! iter = 3, centroid_change = 1.040e-01<br/>\ncluster_kmeans! iter = 4, centroid_change = 7.803e-02<br/>\ncluster_kmeans! iter = 5, centroid_change = 1.319e-01<br/>\ncluster_kmeans! iter = 6, centroid_change = 1.871e-01<br/>\ncluster_kmeans! iter = 7, centroid_change = 9.526e-02<br/>\ncluster_kmeans! iter = 8, centroid_change = 4.112e-02<br/>\ncluster_kmeans! iter = 9, centroid_change = 1.157e-01<br/>\ncluster_kmeans! iter = 10, centroid_change = 1.408e-01<br/>\ncluster_kmeans! iter = 11, centroid_change = 8.158e-02<br/>\ncluster_kmeans! iter = 12, centroid_change = 5.647e-02<br/>\ncluster_kmeans! iter = 13, centroid_change = 8.951e-02<br/>\ncluster_kmeans! iter = 14, centroid_change = 1.156e-01<br/>\ncluster_kmeans! iter = 15, centroid_change = 1.219e-01<br/>\ncluster_kmeans! iter = 16, centroid_change = 0.000e+00<br/>\n should be able to recommend from a previous clustering run\nUserProfile\n Detecting spam bastards on the user profile\n should run queue_detect_spam on after_save\n should queue a resque job if the body is changed\n should not queue a resque job if body isn't changed\n the actual act of detecting spam\n should detect to see if a user_profile is spam, then stick it into redis if it is\n should remove user_profile id from redis if it's not spam\n should have a method for moving user profile ids out of spammy bucket into a banned spammy bucket\n should return a list of spammy user_profile_ids who own the user_profiles\n should return a list of spammy users\n should weed out users that have already been banned\n should have a method for handling a newly-banned user\n should report misclassifications and remove itself from redis\nExternalSite\n Normal user external site scenarios\nGot shorturl http://posterous.com/shorturl/redirect/5JH\n should post to Twitter once when calling post\n should identify whether or not twitter should be autoposted based on the incoming user string\n should externally post to Twitter a normal post to a normal site\n should not externally post to Twitter a private post to a normal site\n should properly post using external_site[...] syntax for incoming user\n should post to both external ids using external_site[] syntax\n should post to both a user's external site and the group profile\n should not post using external_site[...] syntax for an unauthorized site\n should not post using external_site[...] syntax for incoming user for a nonexistent external site\n should dupecheck against site_url and skip the 2nd site\n Normal user external site scenarios for private site\n should not externally post to Twitter a normal post to a private site\n Anonymous user external site scenarios\n should externally post to Twitter a normal post to a normal site\n Showable for user and site\n should mark user and site as showable if external site is added\n Group profile external site scenarios\n should externally post to Twitter both a normal user and a group profile\n should not externally post to Twitter to only a group profile if user doesn't want it autoposted to their own\n returing a related site\n should be nil with no assoc\n should first check user.site\n should then check site\n should then check group_profile.sites.first\n named scopes\n should only include twitter sites with twitter\n Other methods\n should just return nil if facebook_user is called on a non-facebook related site\ntweet = Jolie promenade nantaise cet apr\303\250s-midi. Ciel gris et temps frais. Quand m\303\252me de la lumi\303\250re et de la chaleur. Quelque... http://post.ly/fU1V l1 = 143 l2 = 140<br/>\n should properly handle tweet lengths for posts with foreign characters in the title\nShareController\n without a user logged in\n should redirect create\n with a user logged in\n should create a new post with create\n should set via_type of the new post to via_share\nBookmarkletController\n showing iframe contents\n should indicate loading w/ no params\n should show a create form given a linkto\n should not explode given a linkto with a URI that needs escaping\n Creating a new post via the Bookmarklet\n should create a new post correctly\n should download images to avoid hotlinking\n should set via_type of post to via_bookmarklet\n should appropriately include the autopost sites\n should create a new scheduled post\nSiteTheme\n should check and populate cache on theme lookup\n should not use still cache if theme set\n should not still use cache if theme id set\n should default back to the first theme if the theme is undetected\nSetting the cookie domain\n for a site with a virtual host that ends in posterous.com\n should set it to somethingposterous.com\n for a site with a two level tld virtual host\n should set it to something.co.uk\n for a site with a virtual host\n should set it to something.com\n for a subdomain site\n should set it to .posterous.com\n for posterous.com\n should set it to .posterous.com\nThe Post class finding posts adjusting content parts from serialized version\n should do nothing given nil\n should do nothing for serialized version of current content_part\n should move image_parts from one content part to another\n should enqueue djs for two content parts that swap image parts\n should correctly reorder image parts for given content part\n should orphan unused image parts\n should get rid of missing image content parts\n should get rid of missing non image content parts\n should not allow adding another posts image_part to current content parts image parts\n adding image content parts\n should add content parts given smart serialized content parts\n should add content parts given smart serialized content parts with string keys\n should add content parts given json content parts\n should expand content part already in body_html\n should enqueue content part delayed jobs for images\n adding non image content parts\n should schedule transcode for new video part\n given images parts w/ rotation set\n should rotate images passed in w/ rotation set\n should enque processing on rotation if image was previously processed\nPostlyController\n should return 400 for get request of /post\n redirecting short urls\n should redirect a valid short_url\n should redirect to mainsite_url with no id\n should redirect to mainsite_url for bad id\n with no one logged in\n should show a post to twitter button\n with a posterous user logged in\n should let user post w/o a twitter account\n should allow a post as a contributor\n should set via_type of post to via_postly\n with a twitter basic user logged in\n should add given media to post\n with a twitter user logged in associated to a group profile\n should post to the group autopost site\n with an existing user who has logged in via twitter\n should set incoming username to just twitter id if autopost_control is blank\n with a new oauth user and twitter_acct in the session\n should create an external site and site\n with an oauth user and twitter_acct for an existing site in the session\n should not create an external site, site or oauth_user\nPost\n previous and next posts\n should return the previous post\n should return the next post\n should return nil if there is no next post\n should return nil if there is no previous post\nPostRegistrationController\n should be agnostic to http or https for uploading - testing: render_modal_flow, http\n should return images with proto http if request was http\n should be agnostic to http or https for uploading - testing: render_modal_flow, https\n should return images with proto https if request was https\n Finding Friends\n should return a list of sites that belong to friends (excluding friends with no public sites)\n searching for friends through Facebook\n should return a list of sites that belong to facebook friends\n Searching for friends through Twitter\n should return a list of sites that belong to twitter friends\n should response with an error if the oauth user isn't in session\n Searching for friends through Contacts\n should respond with code 202 (wait) if the email contacts haven't been imported yet\n should response with a list of existing contact friends if the redis import fails for whatever reason\n should return a list of sites that belong to email contacts\nPosterous::FriendFinder\n Basic class initialization\n should assign a facebook_user from the user\n should assign an oauth_user from the user\n should assign twitter credentials from the user\n should assign the contacts from the user\n Finding friends that have hadded you previously to their contacts\n should find friends that have added you previously to their contacts\n Finding friends through previously-imported contacts\n should find friends through contacts\n Finding friends through newly-imported contacts\n should find friends inside newly imported contacts\n Finding friends through Facebook\n should find friends through Facebook\n Finding friends through Twitter\n should find friends through Twitter Oauth\n should find friends through Twitter Basic\n Finding suggested sites using friend's sites\n should return a list of unique sites that my friends own\n should only return 1 site per friend if specified\n should not return any private sites\n should not return sites that the user is already subscribed to (if specified)\n should not return users that the user is already subscribed to (if specified)\nSsoController\n on posterous.com\n should redirect /sso/verify to jumpto on bad token\n should redirect to jumpto given as array\n should redirect /sso/verify to homepage on bad token w/o jumpto\n checking a virtual hosts session\n should not need sync with check for {} and {}\n should not need sync with check for {:user_id=>1} and {:user_id=>1}\n should not need sync with check for {:oauth_user=>#<OauthUser id: nil, user_id: nil, provider_type: nil, token: nil, secret: nil, authenticated: false, expires: 0, created_at: nil, updated_at: nil, external_site_id: nil>} and {:oauth_user=>#<OauthUser id: nil, user_id: nil, provider_type: nil, token: nil, secret: nil, authenticated: false, expires: 0, created_at: nil, updated_at: nil, external_site_id: nil>}\n should not need sync with check for {:twitter_acct=>{\"a\"=>\"b\"}} and {:twitter_acct=>{\"a\"=>\"b\"}}\n should not need sync with check for {:user_id=>1, :nonsense=>\"something irrelevant\"} and {:user_id=>1}\n should not need sync with check for {:user_id=>1} and {:user_id=>1, :nonsense=>\"something irrelevant\"}\n should need sync with check for {} and {:user_id=>1}\n should need sync with check for {:user_id=>1} and {}\n should need sync with check for {:oauth_user=>#<OauthUser id: nil, user_id: nil, provider_type: nil, token: nil, secret: nil, authenticated: false, expires: 0, created_at: nil, updated_at: nil, external_site_id: nil>} and {}\n should need sync with check for {:twitter_acct=>{\"a\"=>\"b\"}} and {:twitter_acct=>{\"a\"=>\"c\"}}\n on a site's virtual domain\n should redirect /sso/recover to jumpto on missing token\n should redirect /sso/recover to jumpto with args on missing token\n should redirect /sso/recover to homepage on missing token w/o jumpto\n should redirect /sso/recover to jumpto on bad token\n should redirect /sso/recover to jumpto with args on bad token\n should redirect /sso/recover to homepage on bad token w/o jumpto\n should not jumpto a forgein domain via recovery\n should still jumpto root for invalid jumpto URI\n should allow jumpto with domain w/ www for same host\n should correctly add c param to URL w/ query string\n should not add c param to URL that has it\n with a user logged in\n should log the user out with logout\n should log the user out and go to jumpto with logut\nPagesHelper\n should be included in the object returned by #helper\nUserProfilePic\n being added to a user profile that has a pic\n should delete old pic and child\nClasses that include BelongsToContentPart\n find_by_orphaned_part_ref\n should find the obj\n should find nothing for a random string\n deleting old orphans\n should not delete new files\n should delete older files\n should actually delete the file refs of the older files\n should delete a lot of older files\n processed?\n should be based on processed_at\n should be true for classes w/o processed_at\nUploadsController\n upload\n should create a media part and save it returning filerefs\n should create multiple media parts given multiple files\n should create multiple media parts given hash of files\n check\n should return false for an image_part that is not yet processed\n should return the smart serliazed image for an already processed image\n should do multiple refs at once\n should ignore bad refs\n should ignore no ref\nFileRef\n being validated\n should require an fileio\n should require an size\n should require an s3_key\n should set url, size and original name from uploaded file\n should use inferred_filename in preference to original_filename\n should create an s3 key given a content_part and a fileio\n should create an s3 key given only a fileio\n should accept a normal IO as fileio if original_name is set\n should create a url passed in bucket\n sanitizing an s3 key\n should get rid of non word chars\n should turn whitespace into _\n should turn accented forgein chars into ascii equiv\n being saved\n should save its file to s3\n an instance\n should smart serialize to url\n being destroyed\n should not actually destroy and set deleted at\n being deleted\n should actually delete the record remove the file\n generating HTML\n using get_html_expanded\n should HTML escape original filename\n using get_html_collapsed\n should HTML escape original filename\nImage\n an instance\n should smart serialize\nPosterous::SmartSerializable\n should serialize all the fields given\n should serialize any field values that respond to smart_serialize\n should smart serialize arrays of values that respond to smart_serialize\n should allow custom extra fields via block\nDomain\n Domains reporting and analytics\n should generate timestamps\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , one_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , two_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , five_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain1 , ten_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , one_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , two_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , five_year)\n should find the number and revenue generated from a specific offer and plan combination - (standard_domain2 , ten_year)\n should genereate a timeseries for number of domains purchased over the past 10 days\n should generate a timeseries for the total revenue generated over the past 10 days\n should generate a figure for week-on-week change in numbers of domains purchased\n should generate a figure for month-on-month change in numbers of domains purchased\n Checking domain domain availability\n should reject blank domains or domains with subdomains\nTesting tld com<br/>\nTesting tld net<br/>\nTesting tld org<br/>\nTesting tld cn<br/>\n should reject domains that aren't .com, .net, or .org\n should not care if a user adds an http or trailing slash or weird capitalization - testing: http://foo.com\n should not care if a user adds an http or trailing slash or weird capitalization - testing: http://foo.com/\n should not care if a user adds an http or trailing slash or weird capitalization - testing: https://foo.com\n should not care if a user adds an http or trailing slash or weird capitalization - testing: foo.com/\n should not care if a user adds an http or trailing slash or weird capitalization - testing: FoO.CoM\n should not care if a user adds an http or trailing slash or weird capitalization - testing: http://FOO.COM\n should not care if a user adds an http or trailing slash or weird capitalization - testing: HTTP://FOO.COM/\n Registering and Purchasing a Domain\n should report that all contact info is present when it actually is present\n should have a method for checking whether or not contact info is missing for name\n should have a method for checking whether or not contact info is missing for address\n should have a method for checking whether or not contact info is missing for city\n should have a method for checking whether or not contact info is missing for state\n should have a method for checking whether or not contact info is missing for zip\n should have a method for checking whether or not contact info is missing for country\n should have a method for checking whether or not contact info is missing for phone\n should insert a domain into DB if everything goes peachy\n should bill the credit card for the right amount with the appropriate information\n should set expiration date, random password, order id, pricing plan, and notes for a valid domain after purchase\nChecking expected field RegistrantCity<br/>\nChecking expected field RegistrantStateProvince<br/>\nChecking expected field RegistrantLastName<br/>\nChecking expected field RegistrantEmailAddress<br/>\nChecking expected field RegistrantCountry<br/>\nChecking expected field RegistrantPostalCode<br/>\nChecking expected field RegistrantPhone<br/>\nChecking expected field RegistrantFirstName<br/>\nChecking expected field RegistrantAddress1<br/>\nChecking expected field TechCity<br/>\nChecking expected field TechStateProvince<br/>\nChecking expected field TechLastName<br/>\nChecking expected field TechEmailAddress<br/>\nChecking expected field TechCountry<br/>\nChecking expected field TechPostalCode<br/>\nChecking expected field TechPhone<br/>\nChecking expected field TechFirstName<br/>\nChecking expected field TechAddress1<br/>\nChecking expected field AdminCity<br/>\nChecking expected field AdminStateProvince<br/>\nChecking expected field AdminLastName<br/>\nChecking expected field AdminEmailAddress<br/>\nChecking expected field AdminCountry<br/>\nChecking expected field AdminPostalCode<br/>\nChecking expected field AdminPhone<br/>\nChecking expected field AdminFirstName<br/>\nChecking expected field AdminAddress1<br/>\nChecking expected field AuxBillingCity<br/>\nChecking expected field AuxBillingStateProvince<br/>\nChecking expected field AuxBillingLastName<br/>\nChecking expected field AuxBillingEmailAddress<br/>\nChecking expected field AuxBillingCountry<br/>\nChecking expected field AuxBillingPostalCode<br/>\nChecking expected field AuxBillingPhone<br/>\nChecking expected field AuxBillingFirstName<br/>\nChecking expected field AuxBillingAddress1<br/>\n should correctly set the other parameters\n should set id theft field if selected during purchase\n should purchase ID theft after domain purchase if requested\n should complain vigorously if an invalid plan parameters are submitted\n should not bill credit card if the domain is unavailable\n should have a method for defaulting the MX records to google\nDomainsController\n should redirect to to secure page if SSL isn't enabled\n should have a method for checking the availability of a domain name via AJAX\n Purchasing a domain\n should allow a user to purchase a domain\n should allow a user to add a purchased domain to a site\n should not allow a user to add a purchased domain to a site he doesn't own\n Linking a purchased domain to a Posterous site\n should allow you to link a site you own to a domain you own\n should not allow you to link a site you don't own\nTumblrImport\n #create with http://chrisburnett.tumblr.com\n should be valid\n should be an array\n should have 19 posts\n should have 1 failure\n should have 19 succeeded\n should have 1 skipped\n should create 19 posts\nDealing with hostnames\n for a site with a virtual host that ends in posterous.com\n should look up correct site given correct hostname without sso\n should redirect the www variant to the normal virtual host\n should redirect the www variant to the normal virtual host without sso\n should redirect subdomain version to custom domain\n that starts with www\n should redirect non www version to www\n for a site with a virtual host\n should look up correct site given correct hostname without sso\n should redirect the www variant to the normal virtual host\n should redirect the www variant to the normal virtual host without sso\n should redirect subdomain version to custom domain\n that starts with www\n should redirect non www version to www\n for a subdomain site\n should look up correct site given correct hostname\n should redirect www version to normal subdomain\nCreditCard\n Basic Validations\n should validate presence of user, first/last names, and credit card number\n should validate the credit card number by seeing if it's of a recognized type\n should save a display number and token if the gateway responds with success\n should make sure the credit card isn't expired\n should destroy old credit cards for a user if a new one is created\nPhoneController\n should create a new site\n /newpost\n should create a post given user token\n should set via_type of post to via_iphone\nMainController\n handling GET /main/login\n should be successful\n should render index template\n should force users to use SSL if logging in\n should display a quantcast tag that is SSL\n should not force SSL for other actions - feedback\n should not force SSL for other actions - register\n should not force SSL for other actions - forgot\n should not force SSL for other actions - logout\n should not force SSL for other actions - privacy\n should not force SSL for other actions - tos\n should not force SSL for other actions - faq\n should not force SSL for other actions - about\n without a user logged in\n should show a form on get to /loginstring\n should update password on post to loginstring\n forgot password\n should show forgot pw page\n should reset my password\n site creation by a new user\n should redirect to manage upon site registration if the user isn't using AJAX to submit form\n Using AJAX to signup\n should create a new site from a user filling out register form\n should allow a user to claim his site from an email that matches the original post email\n should allow a user to claim his site from an email that doesn't match the original post email\n should appropriately handle registration attempt by a banned user\n Handling errors on validations\n should appropriately handle registration attempt for an existing site name\n should appropriately handle registration attempt for an existing email address\n should appropriately handle a registration attempt with a blank hostname\n should appropriately handle a registration attempt with a blank email\n should appropriately handle a registration attempt with a blank password\n adding and removing email addresses\n should be able to add a valid email address\n should be able to add a valid address and reject mass assignment exploit\n should reject bad email address\n should confirm an email\n should set as primary\n should not be able to set as primary if email is not confirmed\n should not be able to set as primary if email is not yours\n should resend confirmation email\n should remove this email if i own it\n should not let me delete my primary email\n should reject email deletion if i do not own it\n adding and removing phone number\n should be able to add a phone number\n changing my notification settings\n should be able to change all my notifications to never\n with a user logged in\n should log the user out with logout\n should log the user out and go to jumpto with logut\n loading a user from the session\n should load user from user obj\n should load user from user_id\n should reload banned user obj and log them out\n should save new session with just user_id\nPosterous::XmlrpcPing\n should not explode on perform\n should not explode on pubsub\nAdminController\n with noone logged in\n should redirect\n with a non-admin logged in\n should get redirected\n with an admin logged in\n should show index\n /user\n should look up via an email\n should look up via an email, ignoring extra space\n should look up via an email with name\n should look up via an email with name in quotes\n should look up via user id\n should lookup via site address\n should lookup a site address with underscores\n should lookup a site address with dashes\n should lookup a site address that starts with a number\n should lookup a site by custom domain\n should assign @ownedsites and @authoredsites\n Posterous Features Admin Interface\n should allow you to create a new Posterous Feature\n should allow you to edit a Posterous Feature\n should allow you to delete a Posterous Feature\nPosterousFeature\n Basic Validations\n should validate the presence of a long description\n should validate the presence of a post\n should not define default icons that don't exist inside the repo\n should not allow you to set a category that doesn't exist\n should not allow you to set an icon that doesn't exist\n should not sanitize HTML stored in long and short descriptions\n Creating and Updating\n should allow you to create a new feature from a params hash\n should allow you to update a feature from a params hash\n Assigning default field values\n should set the added on field to the post date by default\n should set the short description field to the post title by default\n should set the category field to 'general' by default\n should set the icon by default to the 'general' category icon\n Returning list of new Posterous features\n should only return features the user hasn't seen (based on his last login date)\n should return features the user hasn't seen based on his second-to-last-login\n should return features the user hasn't seen based on a specified time\n shouldn't choke if the user has no logins\n should return a specified number of features, starting with the most recent\n should not return private features to non-admin uesrs\nExtMetaWeblog\n should autopost if the incoming username has 'blog' or 'blogs' in the incoming username\n should autopost if the incoming username is 'wordpress' and the site_url matches wordpress\nPosterous::Expanders::Gist\n should expand http://gist.github.com/268948\n should expand http://gist.github.com/319882#file_ssh-instance-function.sh\n should expand http://gist.github.com/268948.js?file=multi_parameter_attributes.rb\n should expand http://gist.github.com/319882?file=ssh-instance-function.sh\n should expand http://gist.github.com/268948#file_enviroment.rb\nPosterous::Expanders::GoogleMaps\n matching URIs\n should match http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=110242485016184900177.00045b46382e1ae6133f4&ll=37.775735,-122.466574&spn=0.010617,0.017209&z=16\n should match http://maps.google.com/maps?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://www.google.com/maps?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://maps.google.cl/?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://www.google.cl/maps?ie=UTF8&ll=-33.438163,-70.639223&spn=0.011209,0.017209&z=16\n should match http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=40+Anzavista+Ave,+San+Francisco,+CA+94115+(home)&sll=-33.438163,-70.639223&sspn=0.011209,0.017209&ie=UTF8&z=16&iwloc=A&layer=c&cbll=37.779722,-122.442343&panoid=H0knKr8kbgBFijvrJ6U2Mw&cbp=12,1.98,,0,5\n should match http://maps.google.com/?ie=UTF8&hq=&hnear=222+Columbus+Ave,+San+Francisco,+California+94133&ll=37.797273,-122.405783&spn=0,359.977727&z=16&layer=c&cbll=37.798638,-122.408297&panoid=iK53IVP-W0PRwfmrgfOomw&cbp=12,160.07,,0,5\n should match http://maps.google.com/?ie=UTF8&hq=&hnear=222+Columbus+Ave,+San+Francisco,+California+94133&ll=37.797273,-122.405783&spn=0,359.977727&z=16&layer=c&cbll=37.798638,-122.408297&cbp=12,160.07,,0,5\n should match http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=london&sll=48.379433,31.16558&sspn=12.409783,22.807617&ie=UTF8&hq=&hnear=London,+United+Kingdom&z=14&layer=c&cbll=51.498717,-0.138612&panoid=ixNpDWxtpmOds-urd0ntiw&cbp=12,359.35,,0,5\n should not match http://www.google.cl/maps\n should not match http://maps.google.com/\n should not match http://yahoo.com/\n should not match http://maps.google.au/maps/mm\n expanding urls\n should remove zoom and escape quote for url base\n should expand url into iframe\n should set output to svembed for http://maps.google.com/maps?f=q&source=s_\n should set output to svembed for http://maps.google.com/?ie=UTF8&hq=&hnear\n should set output to svembed for http://maps.google.com/?ie=UTF8&hq=&hnear\n should set output to svembed for http://maps.google.com/maps?f=q&source=s_\n should set output to embed for http://maps.google.com/maps/ms?ie=UTF8&hl\n should set output to embed for http://maps.google.com/maps?ie=UTF8&ll=-3\n should set output to embed for http://www.google.com/maps?ie=UTF8&ll=-33\n should set output to embed for http://maps.google.cl/?ie=UTF8&ll=-33.438\n should set output to embed for http://www.google.cl/maps?ie=UTF8&ll=-33.\nHttpCheckController\n should return something very short\nEmailSubscription\n basic model functionality\n should create a mail setting for an email if it does not alrady exist\n should create a secret string for an email if it does not already exist\n should set email mysubs setting to 'never' if the email is signed up for the first time\n should not alter an email's mail settings if they were previously set\n should not create a new email subscription if the target email has email_notify = false\n notifications\n should call generate create notifications for a subscription\n should create notifications for a subscription check for notification\n should remove notifications for a post\n should create notifications for subscriptions when an email subscription is added\n should create new notifiables on new posts\n should back-fill post subscriptions\n should remove notifications when a site has been unsubscribed\n should remove notifications when a post has gone private\n should return the right notifications from get_notifications for subscribed posts\n should return the right notifications from get_notifications for subscribed posts for weekly\n should return the right notifications from get_notifications for subscribed posts for none\nTue Jun 29 17:28:45 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:28:45 -0700 2010: Got 1 notifications\nTue Jun 29 17:28:45 -0700 2010: Processing 558383 email, email4173@designerslash.com, 1 notifications\nTue Jun 29 17:28:45 -0700 2010: Cleaning up 1 notifications\nTue Jun 29 17:28:45 -0700 2010: END MAIL JOB\n should create an email for one post daily\nTue Jun 29 17:29:13 -0700 2010: BEGIN MAIL JOB Begin sending daily notifications\nTue Jun 29 17:29:13 -0700 2010: Got 100 notifications\nTue Jun 29 17:29:13 -0700 2010: Processing 558385 email, email4176@designerslash.com, 100 notifications\nTue Jun 29 17:29:14 -0700 2010: Cleaning up 100 notifications\nTue Jun 29 17:29:14 -0700 2010: END MAIL JOB\n should create an email for one hundred posts daily, with the top 20 scores for the batch being sent\n should send an email digesting the top 20\nCokeController\n <br/>\n should not redirect SSL POST requests to non-SSL page\nEmail\n should have a method for verifying the format of an email\n should find or create unique email objects\n should convert email_subscriptions to normal subscriptions when moving to user\n should create a mail_settings object for a new email\n should create a mail_setting object if an email doesn't already have one\n should set email_notify to true upon creation\n should destroy email subscriptions if email_notify is set to false\n being validated\n should not allow you to create an email with the wrong format\n checking uniqueness of email address\n should require a unique email\n should require a unique email regardless of case\n should not require a unique email on save\nDealing with a corrupt session\n should just reset the session\nMailRobot\n should not error when sending delayed job exceptions\nFilePart\n in general\n should return image as content_part_type\n should return orphaned_part_type\n being created\n should require a uploaded_file\n successfully\n should save its uploaded_file to s3\n should create FileRef\n being saved with a new file\n should save new file\n should delete old FileRef and create new one\n checking for ipaper support\n should support ipaper w/ ipaper extension\n should not support ipaper w/ filename w/ erroneous extension\n should not support ipaper w/ blank filename\n should not support ipaper w/ extensionless filename\n should not support ipaper w/ missing filename\n should not support ipaper w/o FilePart\n with a valid ipaper extension\n should use content user_id in ipaper embed if user exists\n should use content email_id in ipaper embed if email exists\n should use content site_id in ipaper w/o user or email\n for a swf file\n should generate a swf embed for get_html\n an instance\n should return file for all_files\nMailSetting\n return select options\n should return and array w/ titleized values in order\n should use default if no specific options exists\n an instance\n should set all the fields to never with opt_out_all!\nContact\n validations\n should validate the presence of a user\n should validate the presence of an email\n inserting / retrieving contacts from redis\n should store new contacts in redis\nemail: foo@bar2.com <br/>\nemail: foo@bar3.com <br/>\nemail: foo@bar4.com <br/>\nemail: email4244@designerslash.com <br/>\nemail: foo@bar1.com <br/>\nemail: email4245@designerslash.com <br/>\nemail: email4246@designerslash.com <br/>\n should merge and sort new contacts with existing contacts\n should store all new contacts into DB without redundancies\n should set import progress indicators in redis\n should clean up redis namespaces\n data denormalization\n should determine if the email is associated with a posterous user and record that information\n contact ranking\n should update the aggregate ranking based on the sub rankings\nPosterous::UniqByAttr\n An @array that extends Posterous::UniqByAttr\n should respond to uniq by methods\n should uniq by attribute\n should uniq by attribute with under bar\n should uniq by two attrs separated by and\n should uniq by two attrs separated by and with under bar\n should still raise method not found errors\nThe merge_find_options_with_scope extension\n should merge {} into {:conditions=>{:site_id=>1}} to get {:conditions=>{:site_id=>1}}\n should merge {:conditions=>{:is_private=>true}} into {:conditions=>{:site_id=>1}} to get {:conditions=>\"(`posts`.`site_id` = 1) AND (`posts`.`is_private` = 1)\"}\n should merge {} into {:include=>:site} to get {:include=>:site}\n should merge {:include=>:site} into {} to get {:include=>:site}\n should merge {:include=>:posttags} into {:include=>:site} to get {:include=>[:posttags, :site]}\n should merge {} into {:order=>\"display_date\"} to get {:order=>\"display_date\"}\n should merge {:order=>\"display_date\"} into {} to get {:order=>\"display_date\"}\n should merge {:order=>\"display_date\"} into {:order=>\"id\"} to get {:order=>\"display_date\"}\nThe extension to memcached to retry on read errors\n should still call underlying memcached method\n for the Memcached::PartialRead\n should survive sigle read failure\n should reraise error given repeated errors\n for the Memcached::UnknownReadFailure\n should survive sigle read failure\n should reraise error given repeated errors\n for the Memcached::ATimeoutOccurred\n should survive sigle read failure\n should reraise error given repeated errors\nThe extension to URI to encode before parsing\n should encode URIs before parsing them\n should not double encode %s\nThe DJ extension to enforce handler priority uniqueness\n enqueing performable methods on an AR object\n should not inhibit delayed job creation\n should not allow two identical jobs to be created\n should allow a second job to be creaed if the first is already locked\nThe DJ extension to email us errors\n should send an email normally\n should not send an email for ActiveRecord::RecordNotFound of recent job\n should send an email for ActiveRecord::RecordNotFound of old job\nPosterous::GContacts\nFound Contact: lboltzmann@live.com<br/>\nFound Contact: post@lpauling.posterous.com<br/>\nFound Contact: rfeynman@live.com<br/>\nFound Contact: lpauling@live.com<br/>\n should parse an incoming GData Contacts XML stream and assign emails, names, and user rankings\nPosterous::LiveServices\n should parse an incoming LiveServices XML stream and get a list of categories, IDs and assign scores\nFound Contact: rfeynman@live.com<br/>\nFound Contact: lpauling69@gmail.com<br/>\nFound Contact: lboltzmann@live.com<br/>\n should parse an incoming LiveServices XML stream and assign emails, names, and user rankings\nPosterous::YMail\nFound email lboltzmann@live.com<br/>\nFound email vincentbchu@gmail.com<br/>\nFound email rfeynman@live.com<br/>\nFound email lpauling69@gmail.com<br/>\nFound email lpauling@live.com<br/>\n should parse an incoming Yahoo Mail JSON response and assign emails, names, and user rankings\nAutopostController\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should create a form-based autopost site - for group profile? false\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should create a form-based autopost site - for group profile? true\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\nuser = 533328 siteurl = http://lpauling.wordpress.com\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should allow you to edit the autopost site\nWe found an rsd file http://lpauling.wordpress.com/xmlrpc.php?rsd\n should allow you to delete a site\n should create a twitter oauth autopost site - for group profile? false\n should create a twitter oauth autopost site - for group profile? true\n should create a linkedin autopost site - for group profile? false\n should create a linkedin autopost site - for group profile? true\n Facebook adding/editing\n should create a facebook autopost site\n should allow you to update your Facebook settings\n Adding/Editing Picasa\n should create a picasa site - for group profile? true\n should create a picasa site - for group profile? false\n should allow you to edit your picasa site\n Adding/Editing YouTube\n should create a youtube site - for group profile? false\n should create a youtube site - for group profile? true\n should allow you to edit your youtube site\n Adding Blogger\n should create a blogger site - for group profile? false\n should create a blogger site - for group profile? true\nPosterous::LogHelper\n should create an IO object using rotatelogs w/o rails root arg\n should create an IO object using rotatelogs w/ rails root arg\nReaderController\n with a user logged in\n showing index\n should leave @posts empty without subscriptions\n for a user with notifications\n show set @posts from notifications\n should not show erroneous notifications for sites the user is not subscribed to\n should page notifications\n should suggest > 5 sites for someone without many subscriptions\n should suggest 5 sites for users with more than 5 subscriptions\n returning rss\n should not choke an an undecryptable user id\nPosterous::S3Helper\n with nonblocking set to true\n should return right away from lenghty store call\n should return right away from lenghty delete call\n should not effect nonblocking by using dont_block\n with nonblocking set to false\n should execute block given to dont_block\n should set nonblocking = true inside dont_block\n should still set nonblocking back to false in case of error\nUserSettingsController\n Setting a user setting\n should set a user's preference for bookmarklet_nag\n should set a user's preference for email_comment\n should set a user's preference for fb_comment\n should set a user's preference for profile_nag\n should set a user's preference for twitter_comment\n should return an error if you try to set an unknown setting\n Unsetting a user setting\n should un-set a user's preference for bookmarklet_nag\n should un-set a user's preference for email_comment\n should un-set a user's preference for fb_comment\n should un-set a user's preference for profile_nag\n should un-set a user's preference for twitter_comment\n should return an error if you try to unset an unknown setting\n Setting of user milestones\n should allow you to set a milestone to completed - confirm_emails\n should allow you to set a milestone to completed - update_profile\n should allow you to set a milestone to completed - add_subscriptions\n should allow you to set a milestone to completed - invite_subscribers\n should allow you to set a milestone to completed - add_autoposts\n should allow you to set a milestone to completed - try_bookmarklet\n should allow you to set a milestone to completed - purchase_domain\n should return an error if you try and set an unknown milestone\nAnalyticsController\n Rendering an image for analytics\n should render the spacer gif file\n should ping redis if it gets a user_id\n should not throw an exception if the user_id is missing\nGetfileController\n should redirect to s3\nSharedExtTwitter\n should overload the facebook_user_id as a field to store twitter uids\n when adding a twitter external site to a group profile\n should merge unclaimed ExtTwitterBasic with new ExtTwitterBasic\n should merge unclaimed ExtTwitterBasic with new ExtTwitterOauth\n should merge unclaimed ExtTwitterOauth with new ExtTwitterBasic\n should merge unclaimed ExtTwitterOauth with new ExtTwitterOauth\n should move to the unclaimed twitter autopost to the appropriate site\n when adding a twitter external site to a user\n with an existing site based twitter external site of type ExtTwitterBasic\n it should merge the site when adding a ExtTwitterBasic\n it should merge the site when adding a ExtTwitterOauth\n with an existing site based twitter external site of type ExtTwitterOauth\n it should merge the site when adding a ExtTwitterBasic\n it should merge the site when adding a ExtTwitterOauth\n with an existing site based ext site other than twitter with the same username\n should not merge in the other site\n should not merge in the other site\nExtFacebook\n should detect posts with external_urls in the image parts\nPosterous::RedisAnalytics\n Methods related to putting information into analytics server\n should set and return its Redis and Redis::Namespace for inspection\n should nuke its own namespace\n should return a list of valid user types\n should return a list of valid actions\n should never raise an error when ping is called directly\n should raise error if invalid user type is pinged\n should raise error if invalid action type is pinged\n should raise error if all fields are not there in ping\n should be indifferent to symbolized keys/values\n should increment count when pinged\n should also increment counts when perform is called (for resque)\n should record the time / date when the user was first entered into redis\n Methods for generating time series\n should take the floor of timestamps to the previous midnight\n should generate time series for specific users\n should generate time series for aggregate counts\n Methods for querying the analytics server and pulling information\n should return all information about a particular user\n should return a list of all users, sorted by action with optional limit on number returned\n should return a list of total number of users in system\n should return a list of all userids in system\n should return the total number of actions performed\n should return timeseries data for a particular user\n should return timeseries data aggregated over all users\nTagPages\n should find posts on site\n should find posts on explore\nPosterous::UserAgentHelper\n for browser user agents\n should consider 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; FunWebProductsP; FunWebProducts; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 2.0.50727; .NET CLR' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)' a likely_browser\n should consider 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10' a likely_browser\n should consider 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)' a likely_browser\n should consider 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0' a likely_browser\n should consider 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.260.0 Safari/532.5' a likely_browser\n should consider 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10' a likely_browser\n should consider 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ru) Opera 8.50' a likely_browser\n should consider 'Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.2 (like Gecko)' a likely_browser\n should consider 'BlackBerry9630/4.7.1.61 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105' a likely_browser\n should consider 'Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7C145' a likely_browser\n should consider 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092814 Iceweasel/3.0.3 (Debian-3.0.3-3)' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.15) Gecko/2009110401 Firefox/3.0.15 Flock/2.5.5' a likely_browser\n should consider 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9pre) Gecko/20071102 Firefox/2.0.0.9 Navigator/9.0.0.3' a likely_browser\n for bot user agents\n should not consider 'Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 16 subscribers; feed-id=17722974057407159439)' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' a likely_browser\n should not consider 'Googlebot-Image/1.0' a likely_browser\n should not consider 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)' a likely_browser\n should not consider '-' a likely_browser\n should not consider 'Yahoo Pipes 1.0' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)' a likely_browser\n should not consider 'Bloglines/3.1 (http://www.bloglines.com; 14 subscribers)' a likely_browser\n should not consider 'AppEngine-Google; (+http://code.google.com/appengine; appid: pubsubhubbub)' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; redditbot/1.0; +http://www.reddit.com/feedback)' a likely_browser\n should not consider 'FeedDigest/1.0 (http://www.FeedDigest.com)' a likely_browser\n should not consider 'brainbot/1.0 (digitalbrain@brainstreammedia @digitalbrain)' a likely_browser\n should not consider 'digsby-asynchttp/0.1' a likely_browser\n should not consider 'WordPress/2.8.6; http://www.digitaltroubador.com' a likely_browser\n should not consider 'Mozilla/5.0 NewsFox/1.0.5' a likely_browser\n should not consider 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)' a likely_browser\n should not consider 'Mozilla/4.0 (compatible; MSIE 5.0; PiplBot; http://pipl.com/bot/)' a likely_browser\n should not consider 'YahooFeedSeeker/2.0 (compatible; Mozilla 4.0; MSIE 5.5; http://publisher.yahoo.com/rssguide)' a likely_browser\n should not consider 'TweetMemeBot (Feed Parser; Allow like Gecko)' a likely_browser\n should not consider 'Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)' a likely_browser\n should not consider 'Technoratibot/8.1' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0; +http://fulltext.sblog.cz/screenshot/)' a likely_browser\n should not consider 'iTunes/9.0.2 (Macintosh; Intel Mac OS X 10.6.2) AppleWebKit/531.21.8' a likely_browser\n should not consider 'facebookplatform/1.0 (+http://developers.facebook.com)' a likely_browser\n should not consider 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)' a likely_browser\n should not consider 'Mozilla/5.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en/docs/about/webmasters.shtml)' a likely_browser\nEmailSubscriptionsController\n Managing invited subscriptions by a posterous user\n should redirect user to mainsite url if a user or subscription is not found\n should report success when a user reports an invited subscription as spam with properly formatted request\n should unsubscribe a user who reports an invited subscription as spam\n should mail spam alert and up the abuse count\n Managing email subscriptions by an anonymous user\n should redirect you if you do not have a secret string or it cannot find your email\n must find the appropriate email given a secret string\n must allow the email to edit its mail_setting (by AJAX)\n must allow the email to unsubscribe from an subscription (by AJAX)\n must allow the email to report spam (by AJAX)\n must allow the email to totally stop all emails (by AJAX)\n must allow the email to edit its mail_setting\n must allow the email to unsubscribe from an subscription\n must allow the email to report spam\n Signing up for an email subscription by an anonymous user\n should successfully add an anonymous email subscriber if recaptcha passed\n should email the anonymous email upon subscribe\n should not allow you to subscribe to a private site unless you have access to it\n should not allow you to add an anonymous email subscriber if recaptcha failed\n should not allow you to add an anonymous email subscriber if the email is improperly formatted\n should record the IP address of an anonymous email subscriber\n should direct a logged-out user to login if his email is linked to a Posterous user\n Inviting email subscribers by a logged in user\n should redirect your on GET\n should add a new subscription for emails associated with posterous users\n should add a new email subscription for anonymous emails\n should reject previously subscribed emails\n should create a new Contact for the user if the email is new\n should reject poorly formatted emails\n should call MailRobot to send out the invites\n should not allow you to subscribe people to a site you do not own\nMovePosts\n should move posts from anon site to user based site\n moving an email to a user\n should move posts from that emails site over\n should set forwarding site of email site\n should move subscribers over\n should move over contributor posts w/o affecting contributors site\nMapsController\n should should raise record not found w/ no post id\n should set max_zoom from lowest gmap zoom of locations\n should show a map for a post with locations\n should show a blank page for a post w/o locations\n should show a blank page for a post from a site with dont_show_locations\nPosterous::MediaIdentifier\n idenfifing files by content type\n should identify type given an appropriate content type\n should identify type given an appropriate content type\n should identify type given an appropriate content type\n should identify type given an appropriate content type\n identifing files by extension\n should identify files of extension pdf as file\n should identify files of extension ps as file\n should identify files of extension doc as file\n should identify files of extension docx as file\n should identify files of extension ppt as file\n should identify files of extension pps as file\n should identify files of extension pptx as file\n should identify files of extension xls as file\n should identify files of extension xlsx as file\n should identify files of extension odt as file\n should identify files of extension sxw as file\n should identify files of extension odp as file\n should identify files of extension sxi as file\n should identify files of extension ods as file\n should identify files of extension sxc as file\n should identify files of extension rtf as file\n should identify files of extension xml as file\n should identify files of extension swf as file\n should identify files of extension jpg as image\n should identify files of extension jpeg as image\n should identify files of extension bmp as image\n should identify files of extension tiff as image\n should identify files of extension gif as image\n should identify files of extension tiff as image\n should identify files of extension mp3 as audio\n should identify files of extension m4a as audio\n should identify files of extension wma as audio\n should identify files of extension aif as audio\n should identify files of extension aiff as audio\n should identify files of extension avi as video\n should identify files of extension mpg as video\n should identify files of extension mov as video\n should identify files of extension wmv as video\n should identify files of extension m4v as video\n should identify files of extension mp4 as video\n should identify files of extension 3gp as video\n should identify files of extension avi as video\n should identify files of extension flv as video\n should identify files of extension ogg as video\n should identify files of extension asf as video\n identifing files by raw file\n of type file\n should identify fw4.pdf given no content type or extension\n should identify fw4.pdf given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n should identify test.doc given no content type or extension\n should identify test.doc given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n should identify null.xls given no content type or extension\n should identify null.xls given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n should identify rotate.swf given no content type or extension\n should identify rotate.swf given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n of type image\n should identify taco_truck_400_300.jpg given no content type or extension\n should identify taco_truck_400_300.jpg given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n of type audio\n should identify bldymary.mp3 given no content type or extension\n should identify bldymary.mp3 given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n of type video\n should identify orson_welles_paul_masson.avi given no content type or extension\n should identify orson_welles_paul_masson.avi given a plain stream\n should update files inferred_filename accordingly if no original filname exists\n given a file with an original filename w/o an extension\n should update inferred_filename an extension based on content type\n given a file with no original filename and a base_uri method\n should update inferred filename based on base_uri\n given a non image audio or video file ipaper doesn't suppport\n should return nothing\n with an empty file\n should return nothing\n creating media parts\n should wrap a single file in an array with empty ignored array\n should leave an arrays alone\n should pull string integer keys out of hashed\n should update content types from hashes based on integer keys\n should update extensions from hashes based on integer keys\n should update extensions from hashes based on integer keys after original_filename called\n should wrap string in ActionController::UploadedStringIO\n should get rid of blank files\nidentify: Not a JPEG file: starts with 0x30 0x0a `/tmp/broken.image.27930-0.jpg' @ jpeg.c/EmitMessage/233.\n should ignore invalid image files with correct extensions and content types\n should put ignored files in the second array\n should turn orphaned_part_ref strings into media parts\nMediaDownloader\n downloading\n should download a normal file\n should follow redirects\n should follow redirects\n should catch bad uris\n should catch download errors\n downloading on a post body\n should convert <br>\n <a class=\"moz-txt-link-freetext\"\n href=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\"><img src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" class=\"posterous_download_image\" /></a> to (?-mix:<br \\/>\\n \\[\\[posterous-content:[A-Za-z0-9]+\\]\\])\n should convert <a class=\"moz-txt-link-freetext\"\n href=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\">test<img src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" class=\"posterous_download_image\" /></a> to (?-mix:<a href=\"http:\\/\\/thereifixedit.com\\/wp-content\\/uploads\\/2009\\/07\\/tifi-hottub.jpg\" class=\"moz-txt-link-freetext\">test\\[\\[posterous-content:[A-Za-z0-9]+\\]\\]<\\/a>)\n should convert <img src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" class=\"posterous_download_image\" /> to (?-mix:\\[\\[posterous-content:[A-Za-z0-9]+\\]\\])\n should convert <img class=\"posterous_download_image\" src=\"http://farm4.static.flickr.com/3177/2348758535_ce40b94e01_o.png\" alt=\")\" /> to (?-mix:\\[\\[posterous-content:[A-Za-z0-9]+\\]\\])\n should convert <img class=\"posterous_download_image\" src=\"http://feeds.wordpress.com/1.0/categories/nakanohajime.wordpress.com/99/\" border=\"0\" alt=\"\" /> to no change\n should convert <img class=\"posterous_download_image\" src=\"http://stats.wordpress.com/b.gif?host=nakanohajime.wordpress.com%20&lt;/body&gt;&lt;/html&gt;\" border=\"0\" alt=\"\" /> to no change\n should fix munged wordpress urls\n should not fuck with other query strings\n should skip images with no posterous_download_image class\n should skip long urls\n should skip images with no posterous_download_image class\n convert images to img src\n should convert http://foo.com/a.gif to <img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" />\n should convert <a href=\"http://foo.com/a.gif\">http://foo.com/a.gif</a> to <img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" />\n should convert <a href=\"http://foo.com/a.gif\"> http://foo.com/a.gif </a> to <img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" />\n should convert <p><a href=\"http://foo.com/a.gif\">http://foo.com/a.gif</a></p> to <p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert <p>http://foo.com/a.gif</p> to <p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert \n<p> http://foo.com/a.gif </p>\n to \n<p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert \n<p>\nhttp://foo.com/a.gif\n</p>\n to \n<p><img class=\"posterous_download_image\" src=\"http://foo.com/a.gif\" border=\"0\" /></p>\n should convert <br>\n <a class=\"moz-txt-link-freetext\"\n href=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\">http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg</a> to <br />\n <img class=\"posterous_download_image\" src=\"http://thereifixedit.com/wp-content/uploads/2009/07/tifi-hottub.jpg\" border=\"0\" />\n should convert a lone image br tags tag to the img src with space and previous / later text blocks\n should not convert a lone image br tags tag to the img src with space\n should not touch items in attributes\n should not touch items in the middle of text blocks\n matching images with IMAGE_URL_REGEX\n should match normal image urls\n should match urls with extra space\n should match image urls with a query string\n should not match non image urls\n should not match non image urls ending in image extension\n\n1)\n'Expanders should expand dailyshow' FAILED\nexpected \"<object resource=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" rel=\\\"media:video\\\" type=\\\"application/x-shockwave-flash\\\" xmlns:dc=\\\"http://purl.org/dc/terms/\\\" height=\\\"299\\\" xmlns:media=\\\"http://search.yahoo.com/searchmonkey/media/\\\" classid=\\\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\\\" width=\\\"500\\\">\\n <param name=\\\"movie\\\" value=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" />\\n <param name=\\\"wmode\\\" value=\\\"opaque\\\" />\\n <param name=\\\"bgcolor\\\" value=\\\"#000000\\\" />\\n <param name=\\\"seamlesstabbing\\\" value=\\\"true\\\" />\\n <param name=\\\"swliveconnect\\\" value=\\\"true\\\" />\\n <param name=\\\"allowscriptaccess\\\" value=\\\"always\\\" />\\n <param name=\\\"allownetworking\\\" value=\\\"all\\\" />\\n <param name=\\\"allowfullscreen\\\" value=\\\"true\\\" />\\n <param name=\\\"flashvars\\\" value=\\\"autoPlay=false&amp;configParams=site%3Dthedailyshow.com&nextvideo=off&endCapAutoPlay=false\\\" />\\n \\n <!--[if !IE]>-->\\n <object data=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" resource=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" rel=\\\"media:video\\\" id=\\\"video_player\\\" type=\\\"application/x-shockwave-flash\\\" xmlns:dc=\\\"http://purl.org/dc/terms/\\\" height=\\\"299\\\" xmlns:media=\\\"http://search.yahoo.com/searchmonkey/media/\\\" width=\\\"500\\\">\\n <param name=\\\"movie\\\" value=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\" />\\n <param name=\\\"wmode\\\" value=\\\"opaque\\\" />\\n <param name=\\\"bgcolor\\\" value=\\\"#000000\\\" />\\n <param name=\\\"seamlesstabbing\\\" value=\\\"true\\\" />\\n <param name=\\\"swliveconnect\\\" value=\\\"true\\\" />\\n <param name=\\\"allowscriptaccess\\\" value=\\\"always\\\" />\\n <param name=\\\"allownetworking\\\" value=\\\"all\\\" />\\n <param name=\\\"allowfullscreen\\\" value=\\\"true\\\" />\\n <param name=\\\"flashvars\\\" value=\\\"autoPlay=false&amp;configParams=site%3Dthedailyshow.com&nextvideo=off&endCapAutoPlay=false\\\" />\\n <!--<![endif]--> \\n <div style=\\\"width:640px; height:383px; overflow:hidden; background-color:#000000; text-align:center; vertical-align:middle; display:table-cell;\\\">\\n <p>To view this movie you need the <a href=\\\"http://www.adobe.com/go/getflashplayer\\\">Adobe Flash Player</a> plugin. You also need JavaScript enabled in your browser.</p>\\n </div>\\n <a href=\\\"http://thedailyshow.mtvnimages.com/images/shows/tds/videos/season_14/14101/ds_14101_01_v6.jpg\\\" rel=\\\"media:thumbnail\\\"></a>\\n <a href=\\\"http://www.viacom.com/termsofuse/pages/searchterms.aspx\\\" rel=\\\"dc:license\\\"></a>\\n <span property=\\\"media:title\\\" content=\\\"Henry Louis-Gate\\\"></span>\\n <span property=\\\"dc:description\\\" content=\\\"Henry Louis-Gate sullies a racial tension-free six months in America.\\\"></span>\\n <span property=\\\"media:width\\\" content=\\\"640\\\"></span>\\n <span property=\\\"media:height\\\" content=\\\"383\\\"></span>\\n <span property=\\\"media:type\\\" content=\\\"application/x-shockwave-flash\\\"></span>\\n <span property=\\\"media:duration\\\" content=\\\"326\\\"></span>\\n <span property=\\\"dc:identifier\\\" content=\\\"http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:239851\\\"></span>\\n <span property=\\\"dc:date\\\" content=\\\"2009-07-28\\\"></span> \\n <!--[if !IE]>-->\\n </object>\\n <!--<![endif]-->\\n </object>\" to match /embed/\n./spec/lib/expanders_spec.rb:15:\n\n2)\n'Expanders test individual expanders should expand Posterous::Expanders::Ted for http://www.ted.com/talks/natasha_tsakos_multimedia_theatrical_adventure.html' FAILED\nexpected not nil, got nil\n./spec/lib/expanders_spec.rb:110:\n\n3)\n'Expanders test individual expanders should expand Posterous::Expanders::Dailyshow for http://www.thedailyshow.com/watch/tue-july-28-2009/henry-louis-gate' FAILED\nexpected not nil, got nil\n./spec/lib/expanders_spec.rb:110:\n\n4)\n'Expanders test individual expanders should expand Posterous::Expanders::Twitpic for http://twitpic.com/4zys9' FAILED\nexpected not nil, got nil\n./spec/lib/expanders_spec.rb:110:\n\n5)\nNoMethodError in 'Post facebook rich media attachments Generating Facebook Media Attachments should try and detect flash vars from arbitrary embeds'\nYou have a nil object when you didn't expect it!\nYou might have expected an instance of ActiveRecord::Base.\nThe error occurred while evaluating nil.[]\n./spec/models/post_spec.rb:1137:\n\n6)\n'LinksController when authorized#update should update the link's url' FAILED\nexpected: /cnn/,\n got: \"{\\\"html\\\":\\\" \\\",\\\"id\\\":143236}\" (using =~)\n./spec/controllers/links_controller_spec.rb:35:\n\nFinished in 2283.648692 seconds\n\n2249 examples, 6 failures\nrake aborted!\nCommand /usr/local/bin/ruby -I\"lib\" -S rcov --exclude \"spec/*,gems/*\" --rails -o \"coverage\" \"/usr/local/lib/ruby/gems/1.8/gems/rspec-1.3.0/bin/spec\" -- \"spec/lib/media_downloader_spec.rb\" \"spec/lib/posterous/highlighter_spec.rb\" \"spec/lib/posterous/service_detector_spec.rb\" \"spec/lib/resource_rate_limiter_spec.rb\" \"spec/lib/media_identifier_spec.rb\" \"spec/lib/move_posts_spec.rb\" \"spec/lib/user_agent_helper_spec.rb\" \"spec/lib/tag_pages_spec.rb\" \"spec/lib/freud_spec.rb\" \"spec/lib/redis_analytics_spec.rb\" \"spec/lib/autopost_services/ext_facebook_spec.rb\" \"spec/lib/autopost_services/ext_twitter_oauth_spec.rb\" \"spec/lib/autopost_services/ext_twitter_basic_spec.rb\" \"spec/lib/autopost_services/shared_ext_twitter_spec.rb\" \"spec/lib/autopost_services/ext_meta_weblog_spec.rb\" \"spec/lib/theming_spec.rb\" \"spec/lib/url_helper_spec.rb\" \"spec/lib/belongs_to_content_part_spec.rb\" \"spec/lib/s3_helper_spec.rb\" \"spec/lib/log_helper_spec.rb\" \"spec/lib/notification_sender_spec.rb\" \"spec/lib/expanders_spec.rb\" \"spec/lib/contacts_import_spec.rb\" \"spec/lib/sanitizer_spec.rb\" \"spec/lib/expanders/google_maps_spec.rb\" \"spec/lib/expanders/gist_spec.rb\" \"spec/lib/smart_serializable_spec.rb\" \"spec/lib/extensions/delayed_job/email_errors_spec.rb\" \"spec/lib/extensions/delayed_job/handler_priority_uniqueness_spec.rb\" \"spec/lib/extensions/uri_encode_before_parse_spec.rb\" \"spec/lib/extensions/memcached_retry_read_errors_spec.rb\" \"spec/lib/extensions/merge_find_options_with_scope_spec.rb\" \"spec/lib/xmlrpc_ping_spec.rb\" \"spec/lib/friend_finder_spec.rb\" \"spec/lib/uniq_by_attr_spec.rb\" \"spec/models/feed_import_spec.rb\" \"spec/models/post_finders_spec.rb\" \"spec/models/contact_spec.rb\" \"spec/models/site_theme_spec.rb\" \"spec/models/user_profile_pic_spec.rb\" \"spec/models/link_spec.rb\" \"spec/models/mail_settings_spec.rb\" \"spec/models/file_part_spec.rb\" \"spec/models/external_site_spec.rb\" \"spec/models/video_part_spec.rb\" \"spec/models/blog_import_spec.rb\" \"spec/models/xanga_import_spec.rb\" \"spec/models/subscription_spec.rb\" \"spec/models/user_spec.rb\" \"spec/models/mail_robot_spec.rb\" \"spec/models/posterous_feature_spec.rb\" \"spec/models/theme_spec.rb\" \"spec/models/email_spec.rb\" \"spec/models/site_extra_spec.rb\" \"spec/models/file_ref_spec.rb\" \"spec/models/email_subscription_spec.rb\" \"spec/models/blogger_import_spec.rb\" \"spec/models/site_spec.rb\" \"spec/models/post_serialized_content_part_spec.rb\" \"spec/models/image_spec.rb\" \"spec/models/ning_import_spec.rb\" \"spec/models/post_spec.rb\" \"spec/models/tweet_photo_import_spec.rb\" \"spec/models/word_press_import_spec.rb\" \"spec/models/active_rain_import_spec.rb\" \"spec/models/tumblr_import_spec.rb\" \"spec/models/content_part_spec.rb\" \"spec/models/post_quick_spec.rb\" \"spec/models/audio_part_spec.rb\" \"spec/models/square_space_import_spec.rb\" \"spec/models/image_part_spec.rb\" \"spec/models/user_profile_spec.rb\" \"spec/models/page_spec.rb\" \"spec/models/location_spec.rb\" \"spec/models/comment_spec.rb\" \"spec/models/credit_card_spec.rb\" \"spec/models/domain_spec.rb\" \"spec/mongo_models/resource_viewing_spec.rb\" \"spec/integration/hostname_redirect_spec.rb\" \"spec/integration/sso_spec.rb\" \"spec/integration/cookie_domain_spec.rb\" \"spec/integration/recover_corrupted_session_spec.rb\" \"spec/controllers/domains_controller_spec.rb\" \"spec/controllers/coke_controller_spec.rb\" \"spec/controllers/admin_controller_spec.rb\" \"spec/controllers/http_check_controller_spec.rb\" \"spec/controllers/sso_controller_spec.rb\" \"spec/controllers/post_registration_controller_spec.rb\" \"spec/controllers/people_controller_spec.rb\" \"spec/controllers/bookmarklet_controller_spec.rb\" \"spec/controllers/phone_controller_spec.rb\" \"spec/controllers/share_controller_spec.rb\" \"spec/controllers/oauth_controller_spec.rb\" \"spec/controllers/uploads_controller_spec.rb\" \"spec/controllers/main_controller_spec.rb\" \"spec/controllers/routing_spec.rb\" \"spec/controllers/site_controller_spec.rb\" \"spec/controllers/autopost_controller_spec.rb\" \"spec/controllers/switch_controller_spec.rb\" \"spec/controllers/reader_controller_spec.rb\" \"spec/controllers/manage_controller_spec.rb\" \"spec/controllers/user_settings_controller_spec.rb\" \"spec/controllers/analytics_controller_spec.rb\" \"spec/controllers/getfile_controller_spec.rb\" \"spec/controllers/pages_controller_spec.rb\" \"spec/controllers/postly_controller_spec.rb\" \"spec/controllers/posts_controller_spec.rb\" \"spec/controllers/moderate_controller_spec.rb\" \"spec/controllers/api2_controller_spec.rb\" \"spec/controllers/email_subscriptions_controller_spec.rb\" \"spec/controllers/links_controller_spec.rb\" \"spec/controllers/maps_controller_spec.rb\" \"spec/controllers/api_controller_spec.rb\" \"spec/helpers/pages_helper_spec.rb\" --options \"/home/posterous/posterous/spec/spec.opts\" failed\n\n(See full trace by running task with --trace)", "MESSAGE"=>"now setting user properly on import creation in manager"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment