stratify-twitter 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stratify-twitter (0.1.0)
4
+ stratify-twitter (0.1.1)
5
5
  actionpack (~> 3.1.0.rc1)
6
6
  railties (~> 3.1.0.rc1)
7
7
  rinku (~> 1.0.0)
@@ -46,7 +46,7 @@ GEM
46
46
  faraday_middleware (0.6.3)
47
47
  faraday (~> 0.6.0)
48
48
  hashie (1.0.0)
49
- hike (1.0.0)
49
+ hike (1.1.0)
50
50
  i18n (0.6.0)
51
51
  mongo (1.3.1)
52
52
  bson (>= 1.3.1)
@@ -72,7 +72,7 @@ GEM
72
72
  rack-ssl (~> 1.3.2)
73
73
  rake (>= 0.8.7)
74
74
  thor (~> 0.14.6)
75
- rake (0.9.1)
75
+ rake (0.9.2)
76
76
  rash (0.3.0)
77
77
  hashie (~> 1.0.0)
78
78
  rinku (1.0.0)
@@ -103,7 +103,7 @@ GEM
103
103
  multi_xml (~> 0.2.0)
104
104
  rash (~> 0.3.0)
105
105
  simple_oauth (~> 0.1.5)
106
- tzinfo (0.3.27)
106
+ tzinfo (0.3.29)
107
107
  vcr (1.10.0)
108
108
 
109
109
  PLATFORMS
@@ -1,22 +1,30 @@
1
1
  require 'stratify-twitter/presenter'
2
+ require 'stratify-twitter/translation'
2
3
 
3
4
  module Stratify
4
5
  module Twitter
5
6
  class Activity < Stratify::Activity
7
+ extend Stratify::Twitter::Translation
8
+
6
9
  field :status_id, :type => Integer
7
10
  field :username
8
11
  field :text
12
+ field :retweeted_status
9
13
 
10
14
  natural_key :status_id
11
15
 
12
16
  validates_presence_of :status_id, :username, :text
13
-
17
+
18
+ def retweet?
19
+ retweeted_status.present?
20
+ end
21
+
14
22
  def permalink
15
23
  "http://twitter.com/#{username}/status/#{status_id}"
16
24
  end
17
25
 
18
26
  def to_html
19
- Stratify::Twitter::Presenter.new(self).text
27
+ Stratify::Twitter::Presenter.new(self).to_html
20
28
  end
21
29
  end
22
30
  end
@@ -1,4 +1,4 @@
1
- require 'stratify-twitter/query'
1
+ require 'twitter'
2
2
 
3
3
  module Stratify
4
4
  module Twitter
@@ -8,11 +8,15 @@ module Stratify
8
8
  configuration_fields :username => {:type => :string}
9
9
 
10
10
  def activities
11
- query.activities
11
+ activities_from_api.map do |activity_in_api_format|
12
+ Stratify::Twitter::Activity.from_api_hash(activity_in_api_format)
13
+ end
12
14
  end
13
15
 
14
- def query
15
- Stratify::Twitter::Query.new(username)
16
+ private
17
+
18
+ def activities_from_api
19
+ ::Twitter.user_timeline(username, :include_rts => true)
16
20
  end
17
21
  end
18
22
  end
@@ -11,7 +11,12 @@ module Stratify
11
11
  end
12
12
 
13
13
  def text
14
- linkify_usernames(linkify_urls(@activity.text))
14
+ return @activity.text unless @activity.retweet?
15
+ "RT @#{@activity.retweeted_status['username']} #{@activity.retweeted_status['text']}"
16
+ end
17
+
18
+ def to_html
19
+ linkify_usernames(linkify_urls(text))
15
20
  end
16
21
 
17
22
  private
@@ -0,0 +1,24 @@
1
+ module Stratify
2
+ module Twitter
3
+ module Translation
4
+ def from_api_hash(api_hash)
5
+ activity = Stratify::Twitter::Activity.new
6
+
7
+ activity.status_id = api_hash.id
8
+ activity.username = api_hash.user.screen_name
9
+ activity.text = api_hash.text
10
+ activity.created_at = api_hash.created_at
11
+
12
+ if api_hash[:retweeted_status]
13
+ activity.retweeted_status = {
14
+ :status_id => api_hash[:retweeted_status].id,
15
+ :username => api_hash[:retweeted_status].user.screen_name,
16
+ :text => api_hash[:retweeted_status].text,
17
+ }
18
+ end
19
+
20
+ activity
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Stratify
2
2
  module Twitter
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -1,6 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Stratify::Twitter::Activity do
4
+ describe "#retweet?" do
5
+ it "returns true when the tweet is a retweet" do
6
+ tweet = Stratify::Twitter::Activity.new(:retweeted_status => {:status_id => 123})
7
+ tweet.should be_retweet
8
+ end
9
+
10
+ it "returns false when the tweet is not a retweet" do
11
+ tweet = Stratify::Twitter::Activity.new(:retweeted_status => nil)
12
+ tweet.should_not be_retweet
13
+ end
14
+ end
15
+
4
16
  describe "#permalink" do
5
17
  it "returns the URL for this tweet on Twitter" do
6
18
  tweet = Stratify::Twitter::Activity.new(:status_id => 20595784953102338, :username => "jasonrudolph")
@@ -3,22 +3,31 @@ require 'spec_helper'
3
3
  describe "stratify-twitter" do
4
4
  use_vcr_cassette "twitter"
5
5
 
6
- it "collects and stores data from Twitter", :database => true do
6
+ it "collects and stores status updates from Twitter", :database => true do
7
7
  collector = Stratify::Twitter::Collector.create!(:username => "jasonrudolph")
8
8
  collector.run
9
9
 
10
10
  Stratify::Twitter::Activity.where(
11
- :status_id => 28832200464011265,
12
- :username => "jasonrudolph",
13
- :text => %Q{"I'm afraid for the state of the nation. ... I wouldn't hire you to sweep my floors." @dhh tells it like it is. http://t.co/8Wk7j8C #hiring},
14
- :created_at => Time.parse("2011-01-22T15:11:46Z")
11
+ :created_at => Time.parse("2011-06-08T16:22:40Z"),
12
+ :status_id => 78497177902657536,
13
+ :username => "jasonrudolph",
14
+ :text => "Google finds it economically infeasible to support IE 6 & 7. You have less money than Google. Apply transitive law here. http://t.co/3lWZA2O",
15
+ :retweeted_status => nil
15
16
  ).should exist
17
+ end
18
+
19
+ it "collects and stores retweets from Twitter", :database => true do
20
+ collector = Stratify::Twitter::Collector.create!(:username => "jasonrudolph")
21
+ collector.run
16
22
 
17
- Stratify::Twitter::Activity.where(
18
- :status_id => 20595784953102338,
19
- :username => "jasonrudolph",
20
- :text => %Q{"Live as though it were the early days of a better nation." -- @doctorow},
21
- :created_at => Time.parse("2010-12-30T21:43:12Z")
23
+ activity = Stratify::Twitter::Activity.where(
24
+ "created_at" => Time.parse("2011-06-21T02:10:44Z"),
25
+ "status_id" => 82993823143297024,
26
+ "username" => "jasonrudolph",
27
+ "text" => %Q{RT @timoreilly: Love it: @edd in email: "Programmers don't aspire to a BMW, they aspire to write a clojure program that other people won ...},
28
+ "retweeted_status.status_id" => 82942860218994688,
29
+ "retweeted_status.username" => "timoreilly",
30
+ "retweeted_status.text" => %Q{Love it: @edd in email: "Programmers don't aspire to a BMW, they aspire to write a clojure program that other people won't laugh at"},
22
31
  ).should exist
23
32
  end
24
33
  end
@@ -2,24 +2,45 @@ require 'spec_helper'
2
2
 
3
3
  describe Stratify::Twitter::Presenter do
4
4
  describe "#text" do
5
+ context "when the tweet is a retweet" do
6
+ it "prepends 'RT' and the original author's @username to the beginning of a tweet" do
7
+ activity = Stratify::Twitter::Activity.new(
8
+ :retweeted_status => {
9
+ "text" => "foo bar",
10
+ "username" => "wittydude"
11
+ }
12
+ )
13
+ presenter = Stratify::Twitter::Presenter.new(activity)
14
+ presenter.text.should == 'RT @wittydude foo bar'
15
+ end
16
+ end
17
+
18
+ context "when the tweet is not a retweet" do
19
+ it "returns the tweet's text without any modifications" do
20
+ activity = Stratify::Twitter::Activity.new(:text => "foo bar")
21
+ presenter = Stratify::Twitter::Presenter.new(activity)
22
+ presenter.text.should == 'foo bar'
23
+ end
24
+ end
25
+ end
26
+
27
+ describe "#to_html" do
5
28
  it "wraps a Twitter @username with a link" do
6
29
  activity = Stratify::Twitter::Activity.new(:text => "foo @jasonrudolph bar")
7
30
  presenter = Stratify::Twitter::Presenter.new(activity)
8
- presenter.text.should == 'foo <a href="http://twitter.com/jasonrudolph">@jasonrudolph</a> bar'
31
+ presenter.to_html.should == 'foo <a href="http://twitter.com/jasonrudolph">@jasonrudolph</a> bar'
9
32
  end
10
33
 
11
34
  it "wraps each Twitter @username with a link when a tweet contains multiple @usernames" do
12
35
  activity = Stratify::Twitter::Activity.new(:text => "foo @jasonrudolph bar @thinkrelevance baz")
13
36
  presenter = Stratify::Twitter::Presenter.new(activity)
14
- presenter.text.should == 'foo <a href="http://twitter.com/jasonrudolph">@jasonrudolph</a> bar <a href="http://twitter.com/thinkrelevance">@thinkrelevance</a> baz'
37
+ presenter.to_html.should == 'foo <a href="http://twitter.com/jasonrudolph">@jasonrudolph</a> bar <a href="http://twitter.com/thinkrelevance">@thinkrelevance</a> baz'
15
38
  end
16
39
 
17
40
  it "adds a link when a tweet contains a URL" do
18
41
  activity = Stratify::Twitter::Activity.new(:text => "foo http://google.com bar")
19
42
  presenter = Stratify::Twitter::Presenter.new(activity)
20
- presenter.text.should == 'foo <a href="http://google.com">http://google.com</a> bar'
43
+ presenter.to_html.should == 'foo <a href="http://google.com">http://google.com</a> bar'
21
44
  end
22
45
  end
23
46
  end
24
-
25
-
@@ -2,40 +2,44 @@
2
2
  - !ruby/struct:VCR::HTTPInteraction
3
3
  request: !ruby/struct:VCR::Request
4
4
  method: :get
5
- uri: https://api.twitter.com:443/1/statuses/user_timeline.json?screen_name=jasonrudolph
5
+ uri: https://api.twitter.com:443/1/statuses/user_timeline.json?include_rts=true&screen_name=jasonrudolph
6
6
  body:
7
7
  headers:
8
8
  accept:
9
9
  - application/json
10
10
  user-agent:
11
- - Twitter Ruby Gem 1.0.0
11
+ - Twitter Ruby Gem 1.5.0
12
+ accept-encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
14
  response: !ruby/struct:VCR::Response
13
15
  status: !ruby/struct:VCR::ResponseStatus
14
16
  code: 200
15
17
  message: OK
16
18
  headers:
17
19
  date:
18
- - Mon, 24 Jan 2011 01:01:30 GMT
20
+ - Sat, 02 Jul 2011 23:57:26 GMT
19
21
  server:
20
22
  - hi
21
23
  status:
22
24
  - 200 OK
23
25
  x-transaction:
24
- - 1295830889-38307-3583
26
+ - 1309651046-78606-29628
25
27
  x-ratelimit-limit:
26
28
  - "150"
27
29
  etag:
28
- - "\"e9f88e3b66e34f99f089ddfcdbf8197c\""
30
+ - "\"2ed2bd074a816eb72eb0b8e1bb802272\"-gzip"
31
+ x-frame-options:
32
+ - SAMEORIGIN
29
33
  last-modified:
30
- - Mon, 24 Jan 2011 01:01:30 GMT
34
+ - Sat, 02 Jul 2011 23:57:26 GMT
31
35
  x-ratelimit-remaining:
32
- - "146"
36
+ - "143"
33
37
  x-runtime:
34
- - "0.03269"
38
+ - "0.05163"
39
+ x-transaction-mask:
40
+ - a6183ffa5f8ca943ff1b53b5644ef1144d1160fd
35
41
  content-type:
36
42
  - application/json; charset=utf-8
37
- content-length:
38
- - "26139"
39
43
  pragma:
40
44
  - no-cache
41
45
  x-ratelimit-class:
@@ -46,13 +50,155 @@
46
50
  - Tue, 31 Mar 1981 05:00:00 GMT
47
51
  cache-control:
48
52
  - no-cache, no-store, must-revalidate, pre-check=0, post-check=0
53
+ x-mid:
54
+ - 664f93b9dd0e62b436dea81ad854e7310d6f4c9c
49
55
  x-ratelimit-reset:
50
- - "1295832697"
56
+ - "1309651839"
51
57
  set-cookie:
52
- - k=24.136.206.3.1295830889991683; path=/; expires=Mon, 31-Jan-11 01:01:29 GMT; domain=.twitter.com
53
- - guest_id=129583088999599378; path=/; expires=Wed, 23 Feb 2011 01:01:29 GMT
54
- - _twitter_sess=BAh7CDoHaWQiJTI5ZDVlMjc3NTY4ZTI3NjVhODZkMGM2ZGM4MTIyZTkxIgpm%250AbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAG%250AOgpAdXNlZHsAOg9jcmVhdGVkX2F0bCsIDDaKtS0B--8fe758c1a15a762f7b3c45276ddb68c131d4897e; domain=.twitter.com; path=/
58
+ - k=24.136.206.3.1309651046043740; path=/; expires=Sat, 09-Jul-11 23:57:26 GMT; domain=.twitter.com
59
+ - guest_id=v1%3A130965104604816168; domain=.twitter.com; path=/; expires=Tue, 02 Jul 2013 11:57:26 GMT
60
+ - _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCKIOSe0wAToHaWQiJTRhNTE1OWU3NjRkZDgz%250AYzEyODk2Zjk5ZTJiZDc1NzMzIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%250AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--a0082ed72f3eb78dd6573a5f7d9aae68a6287f10; domain=.twitter.com; path=/; HttpOnly
55
61
  vary:
56
62
  - Accept-Encoding
57
- body: "[{\"in_reply_to_user_id_str\":null,\"text\":\"\\\"I'm afraid for the state of the nation. ... I wouldn't hire you to sweep my floors.\\\" @dhh tells it like it is. http:\\/\\/t.co\\/8Wk7j8C #hiring\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"\\u003Ca href=\\\"http:\\/\\/itunes.apple.com\\/us\\/app\\/twitter\\/id409789998?mt=12\\\" rel=\\\"nofollow\\\"\\u003ETwitter for Mac\\u003C\\/a\\u003E\",\"id_str\":\"28832200464011265\",\"in_reply_to_user_id\":null,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"friends_count\":71,\"description\":\"\",\"follow_request_sent\":false,\"following\":false,\"location\":\"Raleigh, NC\",\"statuses_count\":532,\"profile_link_color\":\"005ab4\",\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"show_all_inline_media\":false,\"verified\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"contributors_enabled\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"id\":14188383,\"is_translator\":false,\"lang\":\"en\",\"geo_enabled\":false,\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":28832200464011265,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":null,\"created_at\":\"Sat Jan 22 15:11:46 +0000 2011\"},{\"in_reply_to_user_id_str\":\"1476511\",\"text\":\"@shayfrendt I heard that such a thing was in the works. I suspect it will be sufficiently neutered for safe American consumption. :-\\/\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":27199444852146178,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"27206056148996097\",\"in_reply_to_user_id\":1476511,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"27199444852146178\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":27206056148996097,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"shayfrendt\",\"created_at\":\"Tue Jan 18 03:30:03 +0000 2011\"},{\"in_reply_to_user_id_str\":null,\"text\":\"http:\\/\\/candorville.com\\/2011\\/01\\/16\\/quotes-2\\/\\n\\nDon't be \\\"that guy.\\\" ;-)\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"web\",\"id_str\":\"26662832850341888\",\"in_reply_to_user_id\":null,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":true,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":26662832850341888,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":null,\"created_at\":\"Sun Jan 16 15:31:29 +0000 2011\"},{\"in_reply_to_user_id_str\":null,\"text\":\"PlainText + @dropbox + TextMate feels nice. http:\\/\\/t.co\\/U8KRP3c \\n\\nPlainText is missing 10% of @simplenoteapp's elegance, but I'll live.\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"\\u003Ca href=\\\"http:\\/\\/itunes.apple.com\\/us\\/app\\/twitter\\/id409789998?mt=12\\\" rel=\\\"nofollow\\\"\\u003ETwitter for Mac\\u003C\\/a\\u003E\",\"id_str\":\"26654420448055296\",\"in_reply_to_user_id\":null,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":26654420448055296,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":null,\"created_at\":\"Sun Jan 16 14:58:03 +0000 2011\"},{\"text\":\"Reference point for teams tasked with providing \\\"five nines\\\" - RT @gmail Gmail was available 99.984% of the time in 2010 http:\\/\\/goo.gl\\/nLdlf\",\"id_str\":\"26312110145282049\",\"place\":null,\"truncated\":false,\"in_reply_to_status_id\":null,\"favorited\":false,\"source\":\"web\",\"in_reply_to_status_id_str\":null,\"contributors\":null,\"in_reply_to_screen_name\":null,\"in_reply_to_user_id\":null,\"in_reply_to_user_id_str\":null,\"geo\":null,\"retweeted\":false,\"retweet_count\":0,\"user\":{\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"id_str\":\"14188383\",\"listed_count\":43,\"description\":\"\",\"following\":false,\"profile_use_background_image\":false,\"location\":\"Raleigh, NC\",\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"is_translator\":false,\"statuses_count\":531,\"favourites_count\":53,\"profile_text_color\":\"333333\",\"followers_count\":347,\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"protected\":false,\"follow_request_sent\":false,\"notifications\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"verified\":false,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_link_color\":\"005ab4\",\"screen_name\":\"jasonrudolph\"},\"id\":26312110145282049,\"coordinates\":null,\"created_at\":\"Sat Jan 15 16:17:50 +0000 2011\"},{\"in_reply_to_user_id_str\":\"194185273\",\"text\":\"@ErgoBibamus6512 #bandnamegame seems to be some weird derivative of Solitaire. Are you winning? ;-)\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":25597915607080960,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"25600708489252865\",\"in_reply_to_user_id\":194185273,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"25597915607080960\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":25600708489252865,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"ErgoBibamus6512\",\"created_at\":\"Thu Jan 13 17:10:59 +0000 2011\"},{\"in_reply_to_user_id_str\":\"83468155\",\"text\":\"@billysixstring First Git, and now Rails and MongoDB? Rock on!\\n\\nBy the way, what Mongo library are you using? I recommend mongoid.\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":25021694351515648,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"25156558581145600\",\"in_reply_to_user_id\":83468155,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"25021694351515648\",\"user\":{\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":true,\"location\":\"Raleigh, NC\",\"listed_count\":43,\"profile_link_color\":\"005ab4\",\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"contributors_enabled\":false,\"statuses_count\":532,\"geo_enabled\":false,\"profile_use_background_image\":false,\"followers_count\":347,\"is_translator\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"friends_count\":71,\"id\":14188383,\"show_all_inline_media\":false,\"follow_request_sent\":false,\"lang\":\"en\",\"verified\":false,\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":25156558581145600,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"billysixstring\",\"created_at\":\"Wed Jan 12 11:46:05 +0000 2011\"},{\"in_reply_to_user_id_str\":\"1566201\",\"text\":\"@zapnap RailsRumble app waiting to happen: Submit your Google Voice transcriptions. Compare transcriptions to reality. Laugh. Lather. Repeat\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":24972816671580160,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"24982275036811264\",\"in_reply_to_user_id\":1566201,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"24972816671580160\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":24982275036811264,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"zapnap\",\"created_at\":\"Wed Jan 12 00:13:33 +0000 2011\"},{\"in_reply_to_user_id_str\":\"11166162\",\"text\":\"@spicycode I've been seeing similar wonkiness yesterday and today.\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":24894332775436288,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"24900954553847808\",\"in_reply_to_user_id\":11166162,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"24894332775436288\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":24900954553847808,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"spicycode\",\"created_at\":\"Tue Jan 11 18:50:24 +0000 2011\"},{\"in_reply_to_user_id_str\":\"6141442\",\"text\":\"@rsanheim Methinks you have a few more weeks of anticipation before that shiny new unicorn is actually in your hands.\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":24600180359692288,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"24605159568965633\",\"in_reply_to_user_id\":6141442,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"24600180359692288\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":24605159568965633,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"rsanheim\",\"created_at\":\"Mon Jan 10 23:15:01 +0000 2011\"},{\"in_reply_to_user_id_str\":\"931471\",\"text\":\"@michellerudolph It's the hardest part of a human or of *you*? I'm not qualified to comment on the former; I shouldn't on the latter. ;-)\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":24534278922575872,\"source\":\"\\u003Ca href=\\\"http:\\/\\/itunes.apple.com\\/us\\/app\\/twitter\\/id409789998?mt=12\\\" rel=\\\"nofollow\\\"\\u003ETwitter for Mac\\u003C\\/a\\u003E\",\"id_str\":\"24573822304788480\",\"in_reply_to_user_id\":931471,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"24534278922575872\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":24573822304788480,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"michellerudolph\",\"created_at\":\"Mon Jan 10 21:10:30 +0000 2011\"},{\"in_reply_to_user_id_str\":\"74635622\",\"text\":\"@rotatedtoenails I'm well aware of the \\\"Secure Text Entry\\\" option. I've always had it disabled. NV still intermittently breaks TextExpander\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":22491620704260097,\"source\":\"\\u003Ca href=\\\"http:\\/\\/twitter.com\\/\\\" rel=\\\"nofollow\\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E\",\"id_str\":\"22494553978179584\",\"in_reply_to_user_id\":74635622,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":\"22491620704260097\",\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":22494553978179584,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"rotatedtoenails\",\"created_at\":\"Wed Jan 05 03:28:14 +0000 2011\"},{\"in_reply_to_user_id_str\":null,\"text\":\"Notational Velocity + Simplenote is elegant simplicity (http:\\/\\/is.gd\\/k7TXg). But NV keeps breaking TextExpander, so NV's gotta go. #sadpanda\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"web\",\"id_str\":\"22485166844809216\",\"in_reply_to_user_id\":null,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":null,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":null,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":null,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":22485166844809216,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":null,\"created_at\":\"Wed Jan 05 02:50:56 +0000 2011\"},{\"in_reply_to_user_id_str\":null,\"text\":\"\\\"Live as though it were the early days of a better nation.\\\" -- @doctorow\",\"retweeted\":false,\"retweet_count\":1,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"web\",\"id_str\":\"20595784953102338\",\"in_reply_to_user_id\":null,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":20595784953102338,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":null,\"created_at\":\"Thu Dec 30 21:43:12 +0000 2010\"},{\"in_reply_to_user_id_str\":\"5676102\",\"text\":\"@shanselman Congrats on yet another great episode. The second half of 1.1.0 was *very* familiar. Thanks for sharing that conversation.\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"web\",\"id_str\":\"20497377014054912\",\"in_reply_to_user_id\":5676102,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":20497377014054912,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"shanselman\",\"created_at\":\"Thu Dec 30 15:12:10 +0000 2010\"},{\"in_reply_to_user_id_str\":\"226246919\",\"text\":\"A timely episode on disconnecting and the importance of being \\\"present\\\" with your loved ones.\\n\\n@thisdevslife 1.1.0 http:\\/\\/is.gd\\/jJr9O\",\"retweeted\":false,\"retweet_count\":0,\"place\":null,\"in_reply_to_status_id\":null,\"source\":\"web\",\"id_str\":\"20497095169409024\",\"in_reply_to_user_id\":226246919,\"truncated\":false,\"geo\":null,\"favorited\":false,\"in_reply_to_status_id_str\":null,\"user\":{\"friends_count\":71,\"profile_sidebar_fill_color\":\"e5e8e3\",\"url\":\"http:\\/\\/jasonrudolph.com\",\"follow_request_sent\":false,\"profile_background_tile\":false,\"time_zone\":\"Quito\",\"description\":\"\",\"following\":false,\"verified\":false,\"location\":\"Raleigh, NC\",\"profile_link_color\":\"005ab4\",\"show_all_inline_media\":false,\"geo_enabled\":false,\"profile_sidebar_border_color\":\"BDDCAD\",\"id_str\":\"14188383\",\"listed_count\":43,\"profile_use_background_image\":false,\"followers_count\":347,\"contributors_enabled\":false,\"profile_background_color\":\"ff6c1f\",\"protected\":false,\"notifications\":false,\"profile_background_image_url\":\"http:\\/\\/a3.twimg.com\\/a\\/1295051201\\/images\\/themes\\/theme9\\/bg.gif\",\"profile_image_url\":\"http:\\/\\/a2.twimg.com\\/profile_images\\/52658686\\/twitter_normal.png\",\"name\":\"Jason Rudolph\",\"is_translator\":false,\"statuses_count\":532,\"id\":14188383,\"lang\":\"en\",\"utc_offset\":-18000,\"favourites_count\":53,\"created_at\":\"Fri Mar 21 00:19:18 +0000 2008\",\"profile_text_color\":\"333333\",\"screen_name\":\"jasonrudolph\"},\"id\":20497095169409024,\"contributors\":null,\"coordinates\":null,\"in_reply_to_screen_name\":\"thisdevslife\",\"created_at\":\"Thu Dec 30 15:11:02 +0000 2010\"}]"
63
+ content-encoding:
64
+ - gzip
65
+ content-length:
66
+ - "6051"
67
+ body: !binary |
68
+ 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
202
+ sB4ae+eb8afH3v//D83CeXjlywAA
203
+
58
204
  http_version: "1.1"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: stratify-twitter
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jason Rudolph
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-26 00:00:00 Z
13
+ date: 2011-07-04 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -135,7 +135,7 @@ files:
135
135
  - lib/stratify-twitter/collector.rb
136
136
  - lib/stratify-twitter/engine.rb
137
137
  - lib/stratify-twitter/presenter.rb
138
- - lib/stratify-twitter/query.rb
138
+ - lib/stratify-twitter/translation.rb
139
139
  - lib/stratify-twitter/version.rb
140
140
  - spec/mongoid.yml
141
141
  - spec/spec_helper.rb
@@ -1,32 +0,0 @@
1
- require 'twitter'
2
-
3
- module Stratify
4
- module Twitter
5
- class Query
6
- attr_reader :username
7
-
8
- def initialize(username)
9
- @username = username
10
- end
11
-
12
- def activities
13
- raw_activities.map {|raw_activity| build_activity_from_raw_data(raw_activity)}
14
- end
15
-
16
- private
17
-
18
- def raw_activities
19
- ::Twitter.user_timeline(username)
20
- end
21
-
22
- def build_activity_from_raw_data(raw_activity)
23
- Stratify::Twitter::Activity.new({
24
- :status_id => raw_activity.id,
25
- :username => raw_activity.user.screen_name,
26
- :text => raw_activity.text,
27
- :created_at => raw_activity.created_at
28
- })
29
- end
30
- end
31
- end
32
- end