avdi / naught

A toolkit for building Null Object classes in Ruby
MIT License
1.05k stars 53 forks source link

Given a Hash with a NullObject in a value, do not raise a TypeError on to_yaml #66

Closed bf4 closed 9 years ago

bf4 commented 9 years ago

under ruby 2.2.2 and twitter gem 5.14.0 and naught 1.0.0

#<TypeError: can't convert Twitter::NullObject to Integer (Twitter::NullObject#to_int gives Twitter::NullObject)>

minimum failing ruby object is a hash with a null object value {:in_reply_to_screen_name=>#<Twitter::NullObject:0x3fe52a626f70>} marshaled null_hash_value (with png extension) or just {null_object: Twitter::NullObject.new}.to_yaml or just

require "yaml"
require "naught"
NullObject = Naught.build {|config|
  config.black_hole
}
{null_object: NullObject.new}.to_yaml

ref:

original data below ruby object

{:id=>605104889841250304, :uri=>"https://twitter.com/PogoWasRight/status/605104889841250304", :full_text=>"\"Now is the time for the Majority Leader to do what is right for all Americans.\"  https://twitter.com/emptywheel/status/605104198510882817", :favorited=>false, :in_reply_to_screen_name=><null>, :in_reply_to_tweet_id=><null>, :in_reply_to_user_id=><null>, :lang=>"en", :retweet_count=>0, :favorite_count=>0, :retweeted=>false, :created_at=>"2015-05-31T20:13:42+00:00", :uris=>["#<Twitter::Entity::URI:0x007fa49172b428>"], :media=>[], :hashtags=>[], :attrs=>{:created_at=>"Sun May 31 20:13:42 +0000 2015", :id=>605104889841250304, :id_str=>"605104889841250304", :text=>"\"Now is the time for the Majority Leader to do what is right for all Americans.\"  https://t.co/R5NqDJNpLD", :source=>"<a href=\"http://twitter.com\" rel=\"nofollow\">Twitter Web Client</a>", :truncated=>false, :in_reply_to_status_id=>nil, :in_reply_to_status_id_str=>nil, :in_reply_to_user_id=>nil, :in_reply_to_user_id_str=>nil, :in_reply_to_screen_name=>nil, :user=>{:id=>187211434, :id_str=>"187211434", :name=>"Dissent Doe", :screen_name=>"PogoWasRight", :location=>"", :description=>"Privacy: http://t.co/zE4WGemZmC,\r\nData breaches: http://t.co/WPkVHrJ0KM, caffeine-fueled politics, & F1. We have met the enemy and he is us. Pubkey 0625E4BA", :url=>nil, :entities=>{:description=>{:urls=>[{:url=>"http://t.co/zE4WGemZmC", :expanded_url=>"http://PogoWasRight.org", :display_url=>"PogoWasRight.org", :indices=>[9, 31]}, {:url=>"http://t.co/WPkVHrJ0KM", :expanded_url=>"http://DataBreaches.net", :display_url=>"DataBreaches.net", :indices=>[49, 71]}]}}, :protected=>false, :followers_count=>5217, :friends_count=>530, :listed_count=>436, :created_at=>"Sun Sep 05 15:53:17 +0000 2010", :favourites_count=>6, :utc_offset=>-14400, :time_zone=>"Eastern Time (US & Canada)", :geo_enabled=>false, :verified=>false, :statuses_count=>33491, :lang=>"en", :contributors_enabled=>false, :is_translator=>false, :is_translation_enabled=>false, :profile_background_color=>"003300", :profile_background_image_url=>"http://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png", :profile_background_image_url_https=>"https://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png", :profile_background_tile=>false, :profile_image_url=>"http://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg", :profile_image_url_https=>"https://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg", :profile_banner_url=>"https://pbs.twimg.com/profile_banners/187211434/1423078846", :profile_link_color=>"006600", :profile_sidebar_border_color=>"FFFFFF", :profile_sidebar_fill_color=>"E0DFD5", :profile_text_color=>"000000", :profile_use_background_image=>false, :default_profile=>false, :default_profile_image=>false, :following=>true, :follow_request_sent=>false, :notifications=>false}, :geo=>nil, :coordinates=>nil, :place=>nil, :contributors=>nil, :quoted_status_id=>605104198510882817, :quoted_status_id_str=>"605104198510882817", :quoted_status=>{:created_at=>"Sun May 31 20:10:57 +0000 2015", :id=>605104198510882817, :id_str=>"605104198510882817", :text=>"Shorter (longer) Harry Reid: McConnell fucked up majorly.", :source=>"<a href=\"https://about.twitter.com/products/tweetdeck\" rel=\"nofollow\">TweetDeck</a>", :truncated=>false, :in_reply_to_status_id=>nil, :in_reply_to_status_id_str=>nil, :in_reply_to_user_id=>nil, :in_reply_to_user_id_str=>nil, :in_reply_to_screen_name=>nil, :user=>{:id=>15985111, :id_str=>"15985111", :name=>"emptywheel", :screen_name=>"emptywheel", :location=>"Grand Rapids, MI", :description=>"Abundant tweets about civil liberties and national security, football, Beer Mecca, and other craic.", :url=>"http://t.co/AKRhypaozP", :entities=>{:url=>{:urls=>[{:url=>"http://t.co/AKRhypaozP", :expanded_url=>"http://emptywheel.net/", :display_url=>"emptywheel.net", :indices=>[0, 22]}]}, :description=>{:urls=>[]}}, :protected=>false, :followers_count=>30149, :friends_count=>1813, :listed_count=>1778, :created_at=>"Mon Aug 25 18:29:06 +0000 2008", :favourites_count=>65, :utc_offset=>3600, :time_zone=>"Dublin", :geo_enabled=>false, :verified=>false, :statuses_count=>118845, :lang=>"en", :contributors_enabled=>false, :is_translator=>false, :is_translation_enabled=>false, :profile_background_color=>"352726", :profile_background_image_url=>"http://abs.twimg.com/images/themes/theme5/bg.gif", :profile_background_image_url_https=>"https://abs.twimg.com/images/themes/theme5/bg.gif", :profile_background_tile=>false, :profile_image_url=>"http://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png", :profile_image_url_https=>"https://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png", :profile_link_color=>"D02B55", :profile_sidebar_border_color=>"829D5E", :profile_sidebar_fill_color=>"99CC33", :profile_text_color=>"3E4415", :profile_use_background_image=>true, :default_profile=>false, :default_profile_image=>false, :following=>false, :follow_request_sent=>false, :notifications=>false}, :geo=>nil, :coordinates=>nil, :place=>nil, :contributors=>nil, :is_quote_status=>false, :retweet_count=>4, :favorite_count=>5, :entities=>{:hashtags=>[], :symbols=>[], :user_mentions=>[], :urls=>[]}, :favorited=>false, :retweeted=>false, :lang=>"en"}, :is_quote_status=>true, :retweet_count=>0, :favorite_count=>0, :entities=>{:hashtags=>[], :symbols=>[], :user_mentions=>[], :urls=>[{:url=>"https://t.co/R5NqDJNpLD", :expanded_url=>"https://twitter.com/emptywheel/status/605104198510882817", :display_url=>"twitter.com/emptywheel/sta…", :indices=>[82, 105]}]}, :favorited=>false, :retweeted=>false, :possibly_sensitive=>false, :possibly_sensitive_appealable=>false, :lang=>"en"}, :full_text_urls=>[{:url=>"https://t.co/R5NqDJNpLD", :expanded_url=>"https://twitter.com/emptywheel/status/605104198510882817", :display_url=>"twitter.com/emptywheel/sta…", :indices=>[82, 105]}], :dump=>"\x04\bU:\x0FApp::Tweet[\t:\v__v2__[\x00[\x00o:\x13Twitter::Tweet\a:\v@attrs{!:\x0Fcreated_atI\"#Sun May 31 20:13:42 +0000 2015\x06:\x06ET:\aidl+\t\x00\xF0\xD6\xFA\xB0\xC3e\b:\vid_strI\"\x17605104889841250304\x06;\nT:\ttextI\"n\"Now is the time for the Majority Leader to do what is right for all Americans.\"  https://t.co/R5NqDJNpLD\x06;\nT:\vsourceI\"G<a href=\"http://twitter.com\" rel=\"nofollow\">Twitter Web Client</a>\x06;\nT:\x0EtruncatedF:\x1Ain_reply_to_status_id0:\x1Ein_reply_to_status_id_str0:\x18in_reply_to_user_id0:\x1Cin_reply_to_user_id_str0:\x1Cin_reply_to_screen_name0:\tuser{-;\vi\x04\xAA\x9E(\v;\fI\"\x0E187211434\x06;\nT:\tnameI\"\x10Dissent Doe\x06;\nT:\x10screen_nameI\"\x11PogoWasRight\x06;\nT:\rlocationI\"\x00\x06;\nT:\x10descriptionI\"\x01\x9CPrivacy: http://t.co/zE4WGemZmC,\r\nData breaches: http://t.co/WPkVHrJ0KM, caffeine-fueled politics, & F1. We have met the enemy and he is us. Pubkey 0625E4BA\x06;\nT:\burl0:\rentities{\x06;\x19{\x06:\turls[\a{\t;\x1AI\"\ehttp://t.co/zE4WGemZmC\x06;\nT:\x11expanded_urlI\"\x1Chttp://PogoWasRight.org\x06;\nT:\x10display_urlI\"\x15PogoWasRight.org\x06;\nT:\findices[\ai\x0Ei${\t;\x1AI\"\ehttp://t.co/WPkVHrJ0KM\x06;\nT;\x1DI\"\x1Chttp://DataBreaches.net\x06;\nT;\x1EI\"\x15DataBreaches.net\x06;\nT;\x1F[\ai6iL:\x0EprotectedF:\x14followers_counti\x02a\x14:\x12friends_counti\x02\x12\x02:\x11listed_counti\x02\xB4\x01;\tI\"#Sun Sep 05 15:53:17 +0000 2010\x06;\nT:\x15favourites_counti\v:\x0Futc_offseti\xFE\xC0\xC7:\x0Etime_zoneI\"\x1FEastern Time (US & Canada)\x06;\nT:\x10geo_enabledF:\rverifiedF:\x13statuses_counti\x02\xD3\x82:\tlangI\"\aen\x06;\nT:\x19contributors_enabledF:\x12is_translatorF:\eis_translation_enabledF:\x1Dprofile_background_colorI\"\v003300\x06;\nT:!profile_background_image_urlI\"Shttp://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png\x06;\nT:'profile_background_image_url_httpsI\"Thttps://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png\x06;\nT:\x1Cprofile_background_tileF:\x16profile_image_urlI\"Hhttp://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg\x06;\nT:\x1Cprofile_image_url_httpsI\"Ihttps://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg\x06;\nT:\x17profile_banner_urlI\"?https://pbs.twimg.com/profile_banners/187211434/1423078846\x06;\nT:\x17profile_link_colorI\"\v006600\x06;\nT:!profile_sidebar_border_colorI\"\vFFFFFF\x06;\nT:\x1Fprofile_sidebar_fill_colorI\"\vE0DFD5\x06;\nT:\x17profile_text_colorI\"\v000000\x06;\nT:!profile_use_background_imageF:\x14default_profileF:\x1Adefault_profile_imageF:\x0EfollowingT:\x18follow_request_sentF:\x12notificationsF:\bgeo0:\x10coordinates0:\nplace0:\x11contributors0:\x15quoted_status_idl+\t\x01\xB0V\x04\x10\xC3e\b:\x19quoted_status_id_strI\"\x17605104198510882817\x06;\nT:\x12quoted_status{\x1C;\tI\"#Sun May 31 20:10:57 +0000 2015\x06;\nT;\vl+\t\x01\xB0V\x04\x10\xC3e\b;\fI\"\x17605104198510882817\x06;\nT;\rI\">Shorter (longer) Harry Reid: McConnell fucked up majorly.\x06;\nT;\x0EI\"X<a href=\"https://about.twitter.com/products/tweetdeck\" rel=\"nofollow\">TweetDeck</a>\x06;\nT;\x0FF;\x100;\x110;\x120;\x130;\x140;\x15{,;\vi\x03\xD7\xE9\xF3;\fI\"\r15985111\x06;\nT;\x16I\"\x0Femptywheel\x06;\nT;\x17I\"\x0Femptywheel\x06;\nT;\x18I\"\x15Grand Rapids, MI\x06;\nT;\x19I\"hAbundant tweets about civil liberties and national security, football, Beer Mecca, and other craic.\x06;\nT;\x1AI\"\ehttp://t.co/AKRhypaozP\x06;\nT;\e{\a;\x1A{\x06;\x1C[\x06{\t;\x1AI\"\ehttp://t.co/AKRhypaozP\x06;\nT;\x1DI\"\ehttp://emptywheel.net/\x06;\nT;\x1EI\"\x13emptywheel.net\x06;\nT;\x1F[\ai\x00i\e;\x19{\x06;\x1C[\x00; F;!i\x02\xC5u;\"i\x02\x15\a;#i\x02\xF2\x06;\tI\"#Mon Aug 25 18:29:06 +0000 2008\x06;\nT;$iF;%i\x02\x10\x0E;&I\"\vDublin\x06;\nT;'F;(F;)i\x03=\xD0\x01;*I\"\aen\x06;\nT;+F;,F;-F;.I\"\v352726\x06;\nT;/I\"5http://abs.twimg.com/images/themes/theme5/bg.gif\x06;\nT;0I\"6https://abs.twimg.com/images/themes/theme5/bg.gif\x06;\nT;1F;2I\"Nhttp://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png\x06;\nT;3I\"Ohttps://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png\x06;\nT;5I\"\vD02B55\x06;\nT;6I\"\v829D5E\x06;\nT;7I\"\v99CC33\x06;\nT;8I\"\v3E4415\x06;\nT;9T;:F;;F;<F;=F;>F;?0;@0;A0;B0:\x14is_quote_statusF:\x12retweet_counti\t:\x13favorite_counti\n;\e{\t:\rhashtags[\x00:\fsymbols[\x00:\x12user_mentions[\x00;\x1C[\x00:\x0EfavoritedF:\x0EretweetedF;*I\"\aen\x06;\nT;FT;Gi\x00;Hi\x00;\e{\t;I[\x00;J[\x00;K[\x00;\x1C[\x06{\t;\x1AI\"\x1Chttps://t.co/R5NqDJNpLD\x06;\nT;\x1DI\"=https://twitter.com/emptywheel/status/605104198510882817\x06;\nT;\x1EI\"\"twitter.com/emptywheel/sta\xE2\x80\xA6\x06;\nT;\x1F[\aiWin;LF;MF:\x17possibly_sensitiveF:\"possibly_sensitive_appealableF;*I\"\aen\x06;\nT:\x1C@_memoized_method_cacheU:\x17Memoizable::Memory{\x18;\tIu:\tTime\r\xF4\xD3\x1C\x80\x00\x00\xA06\x06:\voffseti\x00:\x16retweeted_status?F;\r@\x0E:\x0Efull_text@\x0E;\vl+\t\x00\xF0\xD6\xFA\xB0\xC3e\b;\x15o:\x12Twitter::User\a;\b{.;\vi\x04\xAA\x9E(\v;\f@\x11;\x16@\x12;\x17@\x13;\x18@\x14;\x19@\x15;\x1A0;\e@\x16; F;!i\x02a\x14;\"i\x02\x12\x02;#i\x02\xB4\x01;\t@#;$i\v;%i\xFE\xC0\xC7;&@$;'F;(F;)i\x02\xD3\x82;*@%;+F;,F;-F;.@&;/@';0@(;1F;2@);3@*;4@+;5@,;6@-;7@.;8@/;9F;:F;;F;<T;=F;>F:\vstatus{ ;\t@\v;\vl+\t\x00\xF0\xD6\xFA\xB0\xC3e\b;\f@\r;\r@\x0E;\x0E@\x0F;\x0FF;\x100;\x110;\x120;\x130;\x140;?0;@0;A0;B0;Cl+\t\x01\xB0V\x04\x10\xC3e\b;D@1;E@2;FT;Gi\x00;Hi\x00;\e@[;LF;MF;NF;OF;*@e;PU;Q{\x06;\x17@\x13:\nuser?T:\burio:\x15Addressable::URI\x12:\x19@validation_deferredF:\f@schemeI\"\nhttps\x06;\nT:\x17@normalized_schemeI\"\nhttps\x06;\nT:\x10@uri_stringI\"?https://twitter.com/PogoWasRight/status/605104889841250304\x06;\nT:\n@hashl-\t\xE81$\xB0YA\x8C\f:\n@hostI\"\x10twitter.com\x06;\nT:\x0F@authorityI\"\x10twitter.com\x06;\nT:\x15@normalized_host\"\x10twitter.com:\n@pathI\",/PogoWasRight/status/605104889841250304\x06;\nT:\x15@normalized_pathI\",/PogoWasRight/status/605104889841250304\x06;\nT:\x1A@normalized_authorityI\"\x10twitter.com\x06;\nT:\n@siteI\"\x18https://twitter.com\x06;\nT:\x15@normalized_siteI\"\x18https://twitter.com\x06;\nT:\x0Ffavorited?F;\x14U:\x18Twitter::NullObject@~;\x10U;i@\x7F;\x12U;i@\x01{;*@e;Gi\x00;Hi\x00:\x0Fretweeted?F:\turis[\x06o:\x19Twitter::Entity::URI\x06;\b@`:\nmedia[\x00;I[\x00", :user_id=>187211434, :user_name=>"PogoWasRight"}

Full error

/Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:29:in `key?': can't convert Twitter::NullObject to Integer (Twitter::NullObject#to_int gives Twitter::NullObject) (TypeError)
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:29:in `key?'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:123:in `accept'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:377:in `block in visit_Hash'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:375:in `each'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:375:in `visit_Hash'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:152:in `accept'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/visitors/yaml_tree.rb:116:in `push'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych.rb:409:in `dump'
    from /Users/benjamin/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/psych/core_ext.rb:14:in `psych_to_yaml'
    from -e:1:in `<main>'

marshal.dump(tweet)

marshaled null tweet uploaded with png extension (just download and use as raw text)

{:idl+  ÷˙∞√e:uriI"?https://twitter.com/PogoWasRight/status/605104889841250304:ET:full_textI"ä"Now is the time for the Majority Leader to do what is right for all Americans."  https://twitter.com/emptywheel/status/605104198510882817;T:favoritedF:in_reply_to_screen_nameU:Twitter::NullObject@    :in_reply_to_tweet_idU;@
:in_reply_to_user_idU;@: langI"en;T:retweet_counti:favorite_counti:retweetedF:created_atI"2015-05-31T20:13:42+00:00;T: uris["-#<Twitter::Entity::URI:0x007fa49172b428>:
media[:
hashtags[:
attrs{!;I"#Sun May 31 20:13:42 +0000 2015;T;l+   ÷˙∞√e:id_strI"605104889841250304;T:   textI"n"Now is the time for the Majority Leader to do what is right for all Americans."  https://t.co/R5NqDJNpLD;T:sourceI"G<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>;T:truncatedF:in_reply_to_status_id0:in_reply_to_status_id_str0;
0:in_reply_to_user_id_str0;
0:  user{-;i™û(;I"187211434;T: nameI"Dissent Doe;T:screen_nameI"PogoWasRight;T:
locationI";T:descriptionI"úPrivacy: http://t.co/zE4WGemZmC,
Data breaches: http://t.co/WPkVHrJ0KM, caffeine-fueled politics, & F1. We have met the enemy and he is us. Pubkey 0625E4BA;T:url0:
entities{;"{: urls[{ ;#I"http://t.co/zE4WGemZmC;T:expanded_urlI"http://PogoWasRight.org;T:display_urlI"PogoWasRight.org;T:indices[ii${ ;#I"http://t.co/WPkVHrJ0KM;T;&I"http://DataBreaches.net;T;'I"DataBreaches.net;T;([i6iL:protectedF:followers_countia:friends_counti:listed_counti¥;I"#Sun Sep 05 15:53:17 +0000 2010;T:favourites_counti:utc_offseti˛¿«:time_zoneI"Eastern Time (US & Canada);T:geo_enabledF:
verifiedF:statuses_countiӂ;I"en;T:contributors_enabledF:is_translatorF:is_translation_enabledF:profile_background_colorI"003300;T:!profile_background_image_urlI"Shttp://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png;T:'profile_background_image_url_httpsI"Thttps://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png;T:profile_background_tileF:profile_image_urlI"Hhttp://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg;T:profile_image_url_httpsI"Ihttps://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg;T:profile_banner_urlI"?https://pbs.twimg.com/profile_banners/187211434/1423078846;T:profile_link_colorI"006600;T:!profile_sidebar_border_colorI"FFFFFF;T:profile_sidebar_fill_colorI"E0DFD5;T:profile_text_colorI"000000;T:!profile_use_background_imageF:default_profileF:default_profile_imageF:followingT:follow_request_sentF:notificationsF:geo0:coordinates0:
place0:contributors0:quoted_status_idl+   ∞V√e:quoted_status_id_strI"605104198510882817;T:quoted_status{;I"#Sun May 31 20:10:57 +0000 2015;T;l+  ∞V√e;I"605104198510882817;T;I">Shorter (longer) Harry Reid: McConnell fucked up majorly.;T;I"X<a href="https://about.twitter.com/products/tweetdeck" rel="nofollow">TweetDeck</a>;T;F;0;0;
0;0;
0;{,;i◊ÈÛ;I"
15985111;T;I"emptywheel;T; I"emptywheel;T;!I"Grand Rapids, MI;T;"I"hAbundant tweets about civil liberties and national security, football, Beer Mecca, and other craic.;T;#I"http://t.co/AKRhypaozP;T;${;#{;%[{ ;#I"http://t.co/AKRhypaozP;T;&I"http://emptywheel.net/;T;'I"emptywheel.net;T;([ii;"{;%[;)F;*i≈u;+i;,iÚ;I"#Mon Aug 25 18:29:06 +0000 2008;T;-iF;.i;/I"Dublin;T;0F;1F;2i=–;I"en;T;3F;4F;5F;6I"352726;T;7I"5http://abs.twimg.com/images/themes/theme5/bg.gif;T;8I"6https://abs.twimg.com/images/themes/theme5/bg.gif;T;9F;:I"Nhttp://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png;T;;I"Ohttps://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png;T;=I"D02B55;T;>I"829D5E;T;?I"99CC33;T;@I"3E4415;T;AT;BF;CF;DF;EF;FF;G0;H0;I0;J0:is_quote_statusF;i ;i
;${ ;[:symbols[:user_mentions[;%[;   F;F;I"en;T;NT;i;i;${ ;[;O[;P[;%[{  ;#I"https://t.co/R5NqDJNpLD;T;&I"=https://twitter.com/emptywheel/status/605104198510882817;T;'I""twitter.com/emptywheel/sta‚Ķ;T;([iWin;    F;F:possibly_sensitiveF:"possibly_sensitive_appealableF;@:full_text_urls@g:    dump"7U:App::Tweet[    :__v2__[[o:Twitter::Tweet:@attrs{!:created_atI"#Sun May 31 20:13:42 +0000 2015:ET:idl+  ÷˙∞√e:id_strI"605104889841250304;
T:  textI"n"Now is the time for the Majority Leader to do what is right for all Americans."  https://t.co/R5NqDJNpLD;
T:sourceI"G<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>;
T:truncatedF:in_reply_to_status_id0:in_reply_to_status_id_str0:in_reply_to_user_id0:in_reply_to_user_id_str0:in_reply_to_screen_name0:    user{-;i™û(;I"187211434;
T:  nameI"Dissent Doe;
T:screen_nameI"PogoWasRight;
T:
locationI";
T:descriptionI"úPrivacy: http://t.co/zE4WGemZmC,
Data breaches: http://t.co/WPkVHrJ0KM, caffeine-fueled politics, & F1. We have met the enemy and he is us. Pubkey 0625E4BA;
T:url0:
entities{;{: urls[{ ;I"http://t.co/zE4WGemZmC;
T:expanded_urlI"http://PogoWasRight.org;
T:display_urlI"PogoWasRight.org;
T:indices[ii${   ;I"http://t.co/WPkVHrJ0KM;
T;I"http://DataBreaches.net;
T;I"DataBreaches.net;
T;[i6iL:protectedF:followers_countia:friends_counti:listed_counti¥;   I"#Sun Sep 05 15:53:17 +0000 2010;
T:favourites_counti:utc_offseti˛¿«:time_zoneI"Eastern Time (US & Canada);
T:geo_enabledF:
verifiedF:statuses_countiӂ:   langI"en;
T:contributors_enabledF:is_translatorF:is_translation_enabledF:profile_background_colorI"003300;
T:!profile_background_image_urlI"Shttp://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png;
T:'profile_background_image_url_httpsI"Thttps://pbs.twimg.com/profile_background_images/563057863493287936/9fHxytLI.png;
T:profile_background_tileF:profile_image_urlI"Hhttp://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg;
T:profile_image_url_httpsI"Ihttps://pbs.twimg.com/profile_images/1778783810/pogo-1956_normal.jpg;
T:profile_banner_urlI"?https://pbs.twimg.com/profile_banners/187211434/1423078846;
T:profile_link_colorI"006600;
T:!profile_sidebar_border_colorI"FFFFFF;
T:profile_sidebar_fill_colorI"E0DFD5;
T:profile_text_colorI"000000;
T:!profile_use_background_imageF:default_profileF:default_profile_imageF:followingT:follow_request_sentF:notificationsF:geo0:coordinates0:
place0:contributors0:quoted_status_idl+   ∞V√e:quoted_status_id_strI"605104198510882817;
T:quoted_status{; I"#Sun May 31 20:10:57 +0000 2015;
T;l+   ∞V√e;I"605104198510882817;
T;
I">Shorter (longer) Harry Reid: McConnell fucked up majorly.;
T;I"X<a href="https://about.twitter.com/products/tweetdeck" rel="nofollow">TweetDeck</a>;
T;F;0;0;0;0;0;{,;i◊ÈÛ;I"
15985111;
T;I"emptywheel;
T;I"emptywheel;
T;I"Grand Rapids, MI;
T;I"hAbundant tweets about civil liberties and national security, football, Beer Mecca, and other craic.;
T;I"http://t.co/AKRhypaozP;
T;{;{;[{  ;I"http://t.co/AKRhypaozP;
T;I"http://emptywheel.net/;
T;I"emptywheel.net;
T;[ii;{;[; F;!i≈u;"i;#iÚ;    I"#Mon Aug 25 18:29:06 +0000 2008;
T;$iF;%i;&I"Dublin;
T;'F;(F;)i=–;*I"en;
T;+F;,F;-F;.I"352726;
T;/I"5http://abs.twimg.com/images/themes/theme5/bg.gif;
T;0I"6https://abs.twimg.com/images/themes/theme5/bg.gif;
T;1F;2I"Nhttp://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png;
T;3I"Ohttps://pbs.twimg.com/profile_images/1773870183/image1327265832_normal.png;
T;5I"D02B55;
T;6I"829D5E;
T;7I"99CC33;
T;8I"3E4415;
T;9T;:F;;F;<F;=F;>F;?0;@0;A0;B0:is_quote_statusF:retweet_counti   :favorite_counti
;{ :
hashtags[:symbols[:user_mentions[;[:favoritedF:retweetedF;*I"en;
T;FT;Gi;Hi;{   ;I[;J[;K[;[{  ;I"https://t.co/R5NqDJNpLD;
T;I"=https://twitter.com/emptywheel/status/605104198510882817;
T;I""twitter.com/emptywheel/sta…;
T;[iWin;LF;MF:possibly_sensitiveF:"possibly_sensitive_appealableF;*I"en;
T:@_memoized_method_cacheU:Memoizable::Memory{;  Iu: Time
ٔĆ6:offseti:retweeted_status?F;
@:full_text@;l+ ÷˙∞√e;o:Twitter::User;{.;i™û(;@;@;@;@;@;0;@; F;!ia;"i;#i¥; @#;$i;%i˛¿«;&@$;'F;(F;)i”Ç;*@%;+F;,F;-F;.@&;/@';0@(;1F;2@);3@*;4@+;5@,;6@-;7@.;8@/;9F;:F;;F;<T;=F;>F:status{ ; @;l+  ÷˙∞√e;@
;
@;@;F;0;0;0;0;0;?0;@0;A0;B0;Cl+    ∞V√e;D@1;E@2;FT;Gi;Hi;@[;LF;MF;NF;OF;*@e;PU;Q{;@:
user?T:urio:Addressable::URI:@validation_deferredF:@schemeI"
https;
T:@normalized_schemeI"
https;
T:@uri_stringI"?https://twitter.com/PogoWasRight/status/605104889841250304;
T:
@hashl- Ë1$∞YAå:
@hostI"twitter.com;
T:@authorityI"twitter.com;
T:@normalized_host"twitter.com:
@pathI",/PogoWasRight/status/605104889841250304;
T:@normalized_pathI",/PogoWasRight/status/605104889841250304;
T:@normalized_authorityI"twitter.com;
T:
@siteI"https://twitter.com;
T:@normalized_siteI"https://twitter.com;
T:favorited?F;U:Twitter::NullObject@~;U;i@;U;i@{;*@e;Gi;Hi:retweeted?F: uris[o:Twitter::Entity::URI;@`:
media[;I[:user_idi™û(:user_name@