stratify-twitter 0.1.0

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/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ *.gem
2
+ .bundle
3
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use ruby-1.9.2-p180@stratify
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in stratify-twitter.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,117 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ stratify-twitter (0.1.0)
5
+ actionpack (~> 3.1.0.rc1)
6
+ railties (~> 3.1.0.rc1)
7
+ rinku (~> 1.0.0)
8
+ stratify-base (~> 0.1.0)
9
+ twitter (~> 1.5.0)
10
+
11
+ GEM
12
+ remote: http://rubygems.org/
13
+ specs:
14
+ actionpack (3.1.0.rc1)
15
+ activemodel (= 3.1.0.rc1)
16
+ activesupport (= 3.1.0.rc1)
17
+ builder (~> 3.0.0)
18
+ erubis (~> 2.7.0)
19
+ i18n (~> 0.6.0beta1)
20
+ rack (~> 1.3.0.beta2)
21
+ rack-cache (~> 1.0.1)
22
+ rack-mount (~> 0.8.1)
23
+ rack-test (~> 0.6.0)
24
+ sprockets (~> 2.0.0.beta.5)
25
+ tzinfo (~> 0.3.27)
26
+ activemodel (3.1.0.rc1)
27
+ activesupport (= 3.1.0.rc1)
28
+ bcrypt-ruby (~> 2.1.4)
29
+ builder (~> 3.0.0)
30
+ i18n (~> 0.6.0beta1)
31
+ activesupport (3.1.0.rc1)
32
+ multi_json (~> 1.0)
33
+ addressable (2.2.6)
34
+ bcrypt-ruby (2.1.4)
35
+ bson (1.3.1)
36
+ bson_ext (1.3.1)
37
+ builder (3.0.0)
38
+ database_cleaner (0.6.7)
39
+ diff-lcs (1.1.2)
40
+ erubis (2.7.0)
41
+ fakeweb (1.3.0)
42
+ faraday (0.6.1)
43
+ addressable (~> 2.2.4)
44
+ multipart-post (~> 1.1.0)
45
+ rack (< 2, >= 1.1.0)
46
+ faraday_middleware (0.6.3)
47
+ faraday (~> 0.6.0)
48
+ hashie (1.0.0)
49
+ hike (1.0.0)
50
+ i18n (0.6.0)
51
+ mongo (1.3.1)
52
+ bson (>= 1.3.1)
53
+ mongoid (2.0.2)
54
+ activemodel (~> 3.0)
55
+ mongo (~> 1.3)
56
+ tzinfo (~> 0.3.22)
57
+ multi_json (1.0.3)
58
+ multi_xml (0.2.2)
59
+ multipart-post (1.1.2)
60
+ rack (1.3.0)
61
+ rack-cache (1.0.2)
62
+ rack (>= 0.4)
63
+ rack-mount (0.8.1)
64
+ rack (>= 1.0.0)
65
+ rack-ssl (1.3.2)
66
+ rack
67
+ rack-test (0.6.0)
68
+ rack (>= 1.0)
69
+ railties (3.1.0.rc1)
70
+ actionpack (= 3.1.0.rc1)
71
+ activesupport (= 3.1.0.rc1)
72
+ rack-ssl (~> 1.3.2)
73
+ rake (>= 0.8.7)
74
+ thor (~> 0.14.6)
75
+ rake (0.9.1)
76
+ rash (0.3.0)
77
+ hashie (~> 1.0.0)
78
+ rinku (1.0.0)
79
+ rspec (2.6.0)
80
+ rspec-core (~> 2.6.0)
81
+ rspec-expectations (~> 2.6.0)
82
+ rspec-mocks (~> 2.6.0)
83
+ rspec-core (2.6.3)
84
+ rspec-expectations (2.6.0)
85
+ diff-lcs (~> 1.1.2)
86
+ rspec-mocks (2.6.0)
87
+ simple_oauth (0.1.5)
88
+ sprockets (2.0.0.beta.10)
89
+ hike (~> 1.0)
90
+ rack (~> 1.0)
91
+ tilt (!= 1.3.0, ~> 1.1)
92
+ stratify-base (0.1.0)
93
+ bson_ext (~> 1.3.1)
94
+ mongoid (~> 2.0.2)
95
+ tilt (~> 1.3.2)
96
+ thor (0.14.6)
97
+ tilt (1.3.2)
98
+ twitter (1.5.0)
99
+ faraday (~> 0.6.1)
100
+ faraday_middleware (~> 0.6.3)
101
+ hashie (~> 1.0.0)
102
+ multi_json (~> 1.0.0)
103
+ multi_xml (~> 0.2.0)
104
+ rash (~> 0.3.0)
105
+ simple_oauth (~> 0.1.5)
106
+ tzinfo (0.3.27)
107
+ vcr (1.10.0)
108
+
109
+ PLATFORMS
110
+ ruby
111
+
112
+ DEPENDENCIES
113
+ database_cleaner (~> 0.6.7)
114
+ fakeweb (~> 1.3.0)
115
+ rspec (~> 2.6.0)
116
+ stratify-twitter!
117
+ vcr (~> 1.10.0)
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Jason Rudolph (http://jasonrudolph.com)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ 'Software'), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # stratify-twitter
2
+
3
+ ## Dependencies
4
+
5
+ Stratify is developed and tested with the following dependencies.
6
+
7
+ * Ruby 1.9.2 (See `.rvmrc` for the specific version.)
8
+ * MongoDB 1.8
9
+
10
+ ## Development
11
+
12
+ To get set up for development on stratify-twitter, clone the repo, and ...
13
+
14
+ cd stratify/stratify-twitter
15
+ gem install bundler
16
+ bundle
17
+ rake
18
+
19
+ ## License
20
+
21
+ Copyright 2011 Jason Rudolph ([jasonrudolph.com](http://jasonrudolph.com)). Released under the MIT license. See the LICENSE file for further details.
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core'
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new(:spec) do |spec|
7
+ spec.pattern = FileList['spec/**/*_spec.rb']
8
+ end
9
+
10
+ task :default => :spec
@@ -0,0 +1,23 @@
1
+ require 'stratify-twitter/presenter'
2
+
3
+ module Stratify
4
+ module Twitter
5
+ class Activity < Stratify::Activity
6
+ field :status_id, :type => Integer
7
+ field :username
8
+ field :text
9
+
10
+ natural_key :status_id
11
+
12
+ validates_presence_of :status_id, :username, :text
13
+
14
+ def permalink
15
+ "http://twitter.com/#{username}/status/#{status_id}"
16
+ end
17
+
18
+ def to_html
19
+ Stratify::Twitter::Presenter.new(self).text
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'stratify-twitter/query'
2
+
3
+ module Stratify
4
+ module Twitter
5
+ class Collector < Stratify::Collector
6
+ source "Twitter"
7
+
8
+ configuration_fields :username => {:type => :string}
9
+
10
+ def activities
11
+ query.activities
12
+ end
13
+
14
+ def query
15
+ Stratify::Twitter::Query.new(username)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ require 'rails'
2
+
3
+ module Stratify
4
+ module Twitter
5
+ class Engine < Rails::Engine
6
+ engine_name :stratify_twitter
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ require 'action_view'
2
+ require 'rinku'
3
+
4
+ module Stratify
5
+ module Twitter
6
+ class Presenter
7
+ include ActionView::Helpers::UrlHelper
8
+
9
+ def initialize(activity)
10
+ @activity = activity
11
+ end
12
+
13
+ def text
14
+ linkify_usernames(linkify_urls(@activity.text))
15
+ end
16
+
17
+ private
18
+
19
+ def linkify_urls(text)
20
+ Rinku.auto_link(text)
21
+ end
22
+
23
+ def linkify_usernames(text)
24
+ text.gsub(/@\w*\b/) do |username|
25
+ username_without_at_sign = username.delete("@")
26
+ username_url = "http://twitter.com/#{username_without_at_sign}"
27
+ link_to username, username_url
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,32 @@
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
@@ -0,0 +1,5 @@
1
+ module Stratify
2
+ module Twitter
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ require 'stratify-base'
2
+
3
+ require 'stratify-twitter/activity'
4
+ require 'stratify-twitter/collector'
5
+ require 'stratify-twitter/engine'
6
+ require 'stratify-twitter/version'
data/spec/mongoid.yml ADDED
@@ -0,0 +1,3 @@
1
+ persist_in_safe_mode: true
2
+ host: localhost
3
+ database: stratify_twitter_test
@@ -0,0 +1,38 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'stratify-twitter'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ require 'database_cleaner'
11
+
12
+ RSpec.configure do |config|
13
+ config.color_enabled = true
14
+ config.formatter = :progress
15
+
16
+ # Configure RSpec to run focused specs, and also respect the alias 'fit' for focused specs
17
+ config.filter_run :focused => true
18
+ config.run_all_when_everything_filtered = true
19
+ config.alias_example_to :fit, :focused => true
20
+
21
+ config.extend VCR::RSpec::Macros
22
+
23
+ # Configure RSpec to truncate the database before any spec tagged with ":database => true"
24
+ DatabaseCleaner.strategy = :truncation
25
+ DatabaseCleaner.orm = "mongoid"
26
+ config.before(:each, :database => true) do
27
+ DatabaseCleaner.clean
28
+ end
29
+
30
+ config.before(:suite) do
31
+ initialize_mongoid_configuration
32
+ end
33
+ end
34
+
35
+ def initialize_mongoid_configuration
36
+ mongoid_config = YAML::load_file(File.join(File.dirname(__FILE__), "mongoid.yml"))
37
+ Mongoid.from_hash(mongoid_config)
38
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe Stratify::Twitter::Activity do
4
+ describe "#permalink" do
5
+ it "returns the URL for this tweet on Twitter" do
6
+ tweet = Stratify::Twitter::Activity.new(:status_id => 20595784953102338, :username => "jasonrudolph")
7
+ tweet.permalink.should == "http://twitter.com/jasonrudolph/status/20595784953102338"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe "stratify-twitter" do
4
+ use_vcr_cassette "twitter"
5
+
6
+ it "collects and stores data from Twitter", :database => true do
7
+ collector = Stratify::Twitter::Collector.create!(:username => "jasonrudolph")
8
+ collector.run
9
+
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")
15
+ ).should exist
16
+
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")
22
+ ).should exist
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Stratify::Twitter::Presenter do
4
+ describe "#text" do
5
+ it "wraps a Twitter @username with a link" do
6
+ activity = Stratify::Twitter::Activity.new(:text => "foo @jasonrudolph bar")
7
+ presenter = Stratify::Twitter::Presenter.new(activity)
8
+ presenter.text.should == 'foo <a href="http://twitter.com/jasonrudolph">@jasonrudolph</a> bar'
9
+ end
10
+
11
+ it "wraps each Twitter @username with a link when a tweet contains multiple @usernames" do
12
+ activity = Stratify::Twitter::Activity.new(:text => "foo @jasonrudolph bar @thinkrelevance baz")
13
+ 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'
15
+ end
16
+
17
+ it "adds a link when a tweet contains a URL" do
18
+ activity = Stratify::Twitter::Activity.new(:text => "foo http://google.com bar")
19
+ presenter = Stratify::Twitter::Presenter.new(activity)
20
+ presenter.text.should == 'foo <a href="http://google.com">http://google.com</a> bar'
21
+ end
22
+ end
23
+ end
24
+
25
+
@@ -0,0 +1,7 @@
1
+ require 'vcr'
2
+
3
+ VCR.config do |c|
4
+ c.cassette_library_dir = 'vcr_cassettes'
5
+ c.stub_with :fakeweb
6
+ c.default_cassette_options = { :record => :once }
7
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "stratify-twitter/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "stratify-twitter"
7
+ s.version = Stratify::Twitter::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Jason Rudolph"]
10
+ s.email = ["jason@jasonrudolph.com"]
11
+ s.homepage = "http://github.com/jasonrudolph/stratify/"
12
+ s.summary = "Twitter plugin for Stratify"
13
+ s.description = s.summary
14
+
15
+ s.rubyforge_project = "stratify-twitter"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_runtime_dependency "actionpack", "~> 3.1.0.rc1"
23
+ s.add_runtime_dependency "railties", "~> 3.1.0.rc1"
24
+ s.add_runtime_dependency "rinku", "~> 1.0.0"
25
+ s.add_runtime_dependency "stratify-base", "~> 0.1.0"
26
+ s.add_runtime_dependency "twitter", "~> 1.5.0"
27
+
28
+ s.add_development_dependency "database_cleaner", "~> 0.6.7"
29
+ s.add_development_dependency "fakeweb", "~> 1.3.0"
30
+ s.add_development_dependency "rspec", "~> 2.6.0"
31
+ s.add_development_dependency "vcr", "~> 1.10.0"
32
+ end
@@ -0,0 +1,58 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.twitter.com:443/1/statuses/user_timeline.json?screen_name=jasonrudolph
6
+ body:
7
+ headers:
8
+ accept:
9
+ - application/json
10
+ user-agent:
11
+ - Twitter Ruby Gem 1.0.0
12
+ response: !ruby/struct:VCR::Response
13
+ status: !ruby/struct:VCR::ResponseStatus
14
+ code: 200
15
+ message: OK
16
+ headers:
17
+ date:
18
+ - Mon, 24 Jan 2011 01:01:30 GMT
19
+ server:
20
+ - hi
21
+ status:
22
+ - 200 OK
23
+ x-transaction:
24
+ - 1295830889-38307-3583
25
+ x-ratelimit-limit:
26
+ - "150"
27
+ etag:
28
+ - "\"e9f88e3b66e34f99f089ddfcdbf8197c\""
29
+ last-modified:
30
+ - Mon, 24 Jan 2011 01:01:30 GMT
31
+ x-ratelimit-remaining:
32
+ - "146"
33
+ x-runtime:
34
+ - "0.03269"
35
+ content-type:
36
+ - application/json; charset=utf-8
37
+ content-length:
38
+ - "26139"
39
+ pragma:
40
+ - no-cache
41
+ x-ratelimit-class:
42
+ - api
43
+ x-revision:
44
+ - DEV
45
+ expires:
46
+ - Tue, 31 Mar 1981 05:00:00 GMT
47
+ cache-control:
48
+ - no-cache, no-store, must-revalidate, pre-check=0, post-check=0
49
+ x-ratelimit-reset:
50
+ - "1295832697"
51
+ 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=/
55
+ vary:
56
+ - 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\"}]"
58
+ http_version: "1.1"
metadata ADDED
@@ -0,0 +1,181 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stratify-twitter
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Jason Rudolph
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-06-26 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: actionpack
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 3.1.0.rc1
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: railties
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 3.1.0.rc1
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: rinku
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ type: :runtime
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: stratify-base
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.1.0
57
+ type: :runtime
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: twitter
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 1.5.0
68
+ type: :runtime
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: database_cleaner
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 0.6.7
79
+ type: :development
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: fakeweb
83
+ prerelease: false
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.3.0
90
+ type: :development
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: rspec
94
+ prerelease: false
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ version: 2.6.0
101
+ type: :development
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
104
+ name: vcr
105
+ prerelease: false
106
+ requirement: &id009 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 1.10.0
112
+ type: :development
113
+ version_requirements: *id009
114
+ description: Twitter plugin for Stratify
115
+ email:
116
+ - jason@jasonrudolph.com
117
+ executables: []
118
+
119
+ extensions: []
120
+
121
+ extra_rdoc_files: []
122
+
123
+ files:
124
+ - .gitignore
125
+ - .rvmrc
126
+ - Gemfile
127
+ - Gemfile.lock
128
+ - LICENSE
129
+ - README.md
130
+ - Rakefile
131
+ - app/assets/images/twitter-icon-16.png
132
+ - app/assets/images/twitter-icon-24.png
133
+ - lib/stratify-twitter.rb
134
+ - lib/stratify-twitter/activity.rb
135
+ - lib/stratify-twitter/collector.rb
136
+ - lib/stratify-twitter/engine.rb
137
+ - lib/stratify-twitter/presenter.rb
138
+ - lib/stratify-twitter/query.rb
139
+ - lib/stratify-twitter/version.rb
140
+ - spec/mongoid.yml
141
+ - spec/spec_helper.rb
142
+ - spec/stratify-twitter/activity_spec.rb
143
+ - spec/stratify-twitter/integration_spec.rb
144
+ - spec/stratify-twitter/presenter_spec.rb
145
+ - spec/support/vcr_setup.rb
146
+ - stratify-twitter.gemspec
147
+ - vcr_cassettes/twitter.yml
148
+ homepage: http://github.com/jasonrudolph/stratify/
149
+ licenses: []
150
+
151
+ post_install_message:
152
+ rdoc_options: []
153
+
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: "0"
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: "0"
168
+ requirements: []
169
+
170
+ rubyforge_project: stratify-twitter
171
+ rubygems_version: 1.8.5
172
+ signing_key:
173
+ specification_version: 3
174
+ summary: Twitter plugin for Stratify
175
+ test_files:
176
+ - spec/mongoid.yml
177
+ - spec/spec_helper.rb
178
+ - spec/stratify-twitter/activity_spec.rb
179
+ - spec/stratify-twitter/integration_spec.rb
180
+ - spec/stratify-twitter/presenter_spec.rb
181
+ - spec/support/vcr_setup.rb