pjdavis-twitter 0.3.9 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/{History.txt → History} +20 -7
- data/{License.txt → License} +0 -0
- data/{Manifest.txt → Manifest} +14 -16
- data/{README.txt → README} +0 -0
- data/Rakefile +41 -3
- data/bin/twitter +1 -2
- data/examples/direct_messages.rb +1 -0
- data/examples/favorites.rb +4 -4
- data/examples/replies.rb +1 -0
- data/examples/search.rb +1 -0
- data/examples/sent_messages.rb +1 -0
- data/examples/timeline.rb +1 -0
- data/lib/twitter.rb +13 -2
- data/lib/twitter/base.rb +51 -18
- data/lib/twitter/cli.rb +13 -7
- data/lib/twitter/cli/helpers.rb +20 -8
- data/lib/twitter/search.rb +6 -6
- data/lib/twitter/search_result.rb +83 -0
- data/lib/twitter/search_result_info.rb +82 -0
- data/lib/twitter/version.rb +1 -7
- data/spec/base_spec.rb +32 -2
- data/spec/cli/helper_spec.rb +21 -7
- data/spec/fixtures/follower_ids.xml +11 -0
- data/spec/fixtures/friend_ids.xml +12 -0
- data/spec/fixtures/friendship_already_exists.xml +5 -0
- data/spec/fixtures/friendship_created.xml +12 -0
- data/spec/fixtures/search_result_info.yml +147 -0
- data/spec/search_spec.rb +10 -3
- data/spec/spec_helper.rb +12 -1
- data/twitter.gemspec +18 -22
- data/website/index.html +4 -13
- metadata +49 -47
- data/config/hoe.rb +0 -74
- data/config/requirements.rb +0 -17
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/script/txt2html +0 -74
- data/setup.rb +0 -1585
- data/tasks/deployment.rake +0 -50
- data/tasks/environment.rake +0 -7
- data/tasks/website.rake +0 -17
data/lib/twitter/cli/helpers.rb
CHANGED
@@ -5,25 +5,37 @@ module Twitter
|
|
5
5
|
class NoAccounts < StandardError; end
|
6
6
|
|
7
7
|
def output_tweets(collection, options={})
|
8
|
-
options
|
8
|
+
options = {
|
9
9
|
:cache => false,
|
10
10
|
:since_prefix => '',
|
11
|
-
:empty_msg => 'Nothing new since your last check.'
|
12
|
-
|
11
|
+
:empty_msg => 'Nothing new since your last check.',
|
12
|
+
:reverse => false
|
13
|
+
}.merge(options)
|
14
|
+
|
13
15
|
if collection.size > 0
|
14
16
|
justify = collection.collect { |s| s.user.screen_name }.max { |a,b| a.length <=> b.length }.length rescue 0
|
15
17
|
indention = ' ' * (justify + 3)
|
16
18
|
say("\n#{indention}#{collection.size} new tweet(s) found.\n\n")
|
19
|
+
collection.reverse! if options[:reverse]
|
17
20
|
collection.each do |s|
|
18
21
|
Tweet.create_from_tweet(current_account, s) if options[:cache]
|
22
|
+
|
19
23
|
occurred_at = Time.parse(s.created_at).strftime('On %b %d at %l:%M%P')
|
20
24
|
formatted_time = '-' * occurred_at.length + "\n#{indention}#{occurred_at}"
|
21
25
|
formatted_name = s.user.screen_name.rjust(justify + 1)
|
22
26
|
formatted_msg = ''
|
23
|
-
|
24
|
-
|
27
|
+
|
28
|
+
s.text.split(' ').each_with_index do |word, idx|
|
29
|
+
formatted_msg += "#{word} "
|
30
|
+
|
31
|
+
sixth_word = idx != 0 && idx % 6 == 0
|
32
|
+
formatted_msg += "\n#{indention}" if sixth_word
|
33
|
+
end
|
34
|
+
|
35
|
+
say "#{CGI::unescapeHTML(formatted_name)}: #{CGI::unescapeHTML(formatted_msg)}\n#{indention}#{formatted_time}\n\n"
|
25
36
|
end
|
26
|
-
|
37
|
+
|
38
|
+
Configuration["#{options[:since_prefix]}_since_id"] = options[:reverse] ? collection.last.id : collection.first.id
|
27
39
|
else
|
28
40
|
say(options[:empty_msg])
|
29
41
|
end
|
@@ -35,7 +47,7 @@ module Twitter
|
|
35
47
|
|
36
48
|
def current_account
|
37
49
|
@current_account ||= Account.active
|
38
|
-
raise Account.count == 0 ? NoAccounts : NoActiveAccount if @current_account.
|
50
|
+
raise Account.count == 0 ? NoAccounts : NoActiveAccount if @current_account.nil?
|
39
51
|
@current_account
|
40
52
|
end
|
41
53
|
|
@@ -44,7 +56,7 @@ module Twitter
|
|
44
56
|
if File.exists?(tweet_file)
|
45
57
|
say '.twitter file found, attempting import...'
|
46
58
|
config = YAML::load(File.read(tweet_file))
|
47
|
-
if !config['email'].
|
59
|
+
if !config['email'].nil? && !config['password'].nil?
|
48
60
|
Account.add(:username => config['email'], :password => config['password'])
|
49
61
|
say 'Account imported'
|
50
62
|
block.call if block_given?
|
data/lib/twitter/search.rb
CHANGED
@@ -11,7 +11,7 @@ module Twitter
|
|
11
11
|
|
12
12
|
def initialize(q=nil)
|
13
13
|
clear
|
14
|
-
containing(q)
|
14
|
+
containing(q) if q && q.strip != ''
|
15
15
|
end
|
16
16
|
|
17
17
|
def from(user)
|
@@ -64,6 +64,7 @@ module Twitter
|
|
64
64
|
self
|
65
65
|
end
|
66
66
|
|
67
|
+
# Which page of results to fetch
|
67
68
|
def page(num)
|
68
69
|
@query[:page] = num
|
69
70
|
self
|
@@ -92,10 +93,8 @@ module Twitter
|
|
92
93
|
|
93
94
|
# If you want to get results do something other than iterate over them.
|
94
95
|
def fetch
|
95
|
-
|
96
|
-
|
97
|
-
tmp[:q] = @query[:q].join(' ')
|
98
|
-
self.class.get('/search.json', {:query => tmp})
|
96
|
+
@query[:q] = @query[:q].join(' ')
|
97
|
+
SearchResultInfo.new_from_hash(self.class.get('/search.json', {:query => @query}))
|
99
98
|
end
|
100
99
|
|
101
100
|
def each
|
@@ -103,4 +102,5 @@ module Twitter
|
|
103
102
|
@result['results'].each { |r| yield r }
|
104
103
|
end
|
105
104
|
end
|
106
|
-
end
|
105
|
+
end
|
106
|
+
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Twitter
|
2
|
+
class SearchResult < Hash
|
3
|
+
|
4
|
+
# Creates an easier to work with hash from
|
5
|
+
# one with string-based keys
|
6
|
+
def self.new_from_hash(hash)
|
7
|
+
new.merge!(hash)
|
8
|
+
end
|
9
|
+
|
10
|
+
def created_at
|
11
|
+
self['created_at']
|
12
|
+
end
|
13
|
+
|
14
|
+
def created_at=(val)
|
15
|
+
self['created_at'] = val
|
16
|
+
end
|
17
|
+
|
18
|
+
def from_user
|
19
|
+
self['from_user']
|
20
|
+
end
|
21
|
+
|
22
|
+
def from_user=(val)
|
23
|
+
self['from_user'] = val
|
24
|
+
end
|
25
|
+
|
26
|
+
def from_user_id
|
27
|
+
self['from_user_id']
|
28
|
+
end
|
29
|
+
|
30
|
+
def from_user_id=(val)
|
31
|
+
self['from_user_id'] = val
|
32
|
+
end
|
33
|
+
|
34
|
+
def id
|
35
|
+
self['id']
|
36
|
+
end
|
37
|
+
|
38
|
+
def id=(val)
|
39
|
+
self['id'] = val
|
40
|
+
end
|
41
|
+
|
42
|
+
def iso_language_code
|
43
|
+
self['iso_language_code']
|
44
|
+
end
|
45
|
+
|
46
|
+
def iso_language_code=(val)
|
47
|
+
self['iso_language_code'] = val
|
48
|
+
end
|
49
|
+
|
50
|
+
def profile_image_url
|
51
|
+
self['profile_image_url']
|
52
|
+
end
|
53
|
+
|
54
|
+
def profile_image_url=(val)
|
55
|
+
self['profile_image_url'] = val
|
56
|
+
end
|
57
|
+
|
58
|
+
def text
|
59
|
+
self['text']
|
60
|
+
end
|
61
|
+
|
62
|
+
def text=(val)
|
63
|
+
self['text'] = val
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_user
|
67
|
+
self['to_user']
|
68
|
+
end
|
69
|
+
|
70
|
+
def to_user=(val)
|
71
|
+
self['to_user'] = val
|
72
|
+
end
|
73
|
+
|
74
|
+
def to_user_id
|
75
|
+
self['to_user_id']
|
76
|
+
end
|
77
|
+
|
78
|
+
def to_user_id=(val)
|
79
|
+
self['to_user_id'] = val
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module Twitter
|
2
|
+
class SearchResultInfo < Hash
|
3
|
+
|
4
|
+
# Creates an easier to work with hash from
|
5
|
+
# one with string-based keys
|
6
|
+
def self.new_from_hash(hash)
|
7
|
+
i = new
|
8
|
+
i.merge!(hash)
|
9
|
+
search_results = []
|
10
|
+
i.results.each do |r|
|
11
|
+
search_results << SearchResult.new_from_hash(r)
|
12
|
+
end
|
13
|
+
i.results = search_results
|
14
|
+
i
|
15
|
+
end
|
16
|
+
|
17
|
+
def completed_in
|
18
|
+
self['completed_in']
|
19
|
+
end
|
20
|
+
|
21
|
+
def completed_in=(val)
|
22
|
+
self['completed_in'] = val
|
23
|
+
end
|
24
|
+
|
25
|
+
def max_id
|
26
|
+
self['max_id']
|
27
|
+
end
|
28
|
+
|
29
|
+
def max_id=(val)
|
30
|
+
self['max_id'] = val
|
31
|
+
end
|
32
|
+
|
33
|
+
def next_page
|
34
|
+
self['next_page']
|
35
|
+
end
|
36
|
+
|
37
|
+
def next_page=(val)
|
38
|
+
self['next_page'] = val
|
39
|
+
end
|
40
|
+
|
41
|
+
def page
|
42
|
+
self['page']
|
43
|
+
end
|
44
|
+
|
45
|
+
def page=(val)
|
46
|
+
self['page'] = val
|
47
|
+
end
|
48
|
+
|
49
|
+
def refresh_url
|
50
|
+
self['refresh_url']
|
51
|
+
end
|
52
|
+
|
53
|
+
def refresh_url=(val)
|
54
|
+
self['refresh_url'] = val
|
55
|
+
end
|
56
|
+
|
57
|
+
def results_per_page
|
58
|
+
self['results_per_page']
|
59
|
+
end
|
60
|
+
|
61
|
+
def results_per_page=(val)
|
62
|
+
self['results_per_page'] = val
|
63
|
+
end
|
64
|
+
|
65
|
+
def since_id
|
66
|
+
self['since_id']
|
67
|
+
end
|
68
|
+
|
69
|
+
def since_id=(val)
|
70
|
+
self['since_id'] = val
|
71
|
+
end
|
72
|
+
|
73
|
+
def results
|
74
|
+
self['results']
|
75
|
+
end
|
76
|
+
|
77
|
+
def results=(val)
|
78
|
+
self['results'] = val
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
data/lib/twitter/version.rb
CHANGED
data/spec/base_spec.rb
CHANGED
@@ -16,7 +16,11 @@ describe "Twitter::Base" do
|
|
16
16
|
lambda { @base.timeline(:fakeyoutey) }.should raise_error(Twitter::UnknownTimeline)
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should default to friends timeline"
|
19
|
+
it "should default to friends timeline" do
|
20
|
+
@base.should_receive(:call).with("friends_timeline", {:auth=>true, :args=>{}, :since=>nil})
|
21
|
+
@base.should_receive(:statuses)
|
22
|
+
@base.timeline
|
23
|
+
end
|
20
24
|
|
21
25
|
it "should be able to retrieve friends timeline" do
|
22
26
|
data = open(File.dirname(__FILE__) + '/fixtures/friends_timeline.xml').read
|
@@ -50,6 +54,12 @@ describe "Twitter::Base" do
|
|
50
54
|
@base.friends(:lite => true).size.should == 15
|
51
55
|
end
|
52
56
|
|
57
|
+
it "should be able to get friend ids" do
|
58
|
+
data = open(File.dirname(__FILE__) + '/fixtures/friend_ids.xml').read
|
59
|
+
@base.should_receive(:request).and_return(Hpricot::XML(data))
|
60
|
+
@base.friend_ids.size.should == 8
|
61
|
+
end
|
62
|
+
|
53
63
|
it "should be able to get friends for another user" do
|
54
64
|
data = open(File.dirname(__FILE__) + '/fixtures/friends_for.xml').read
|
55
65
|
@base.should_receive(:request).and_return(Hpricot::XML(data))
|
@@ -65,6 +75,26 @@ describe "Twitter::Base" do
|
|
65
75
|
timeline.size.should == 29
|
66
76
|
timeline.first.name.should == 'Blaine Cook'
|
67
77
|
end
|
78
|
+
|
79
|
+
it "should be able to get follower ids" do
|
80
|
+
data = open(File.dirname(__FILE__) + '/fixtures/follower_ids.xml').read
|
81
|
+
@base.should_receive(:request).and_return(Hpricot::XML(data))
|
82
|
+
@base.follower_ids.size.should == 8
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should be able to create a friendship" do
|
86
|
+
data = open(File.dirname(__FILE__) + '/fixtures/friendship_created.xml').read
|
87
|
+
@base.should_receive(:request).and_return(Hpricot::XML(data))
|
88
|
+
user = @base.create_friendship('jnunemaker')
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should bomb if friendship already exists" do
|
92
|
+
data = open(File.dirname(__FILE__) + '/fixtures/friendship_already_exists.xml').read
|
93
|
+
response = Net::HTTPForbidden.new("1.1", '403', '')
|
94
|
+
response.stub!(:body).and_return(data)
|
95
|
+
@base.should_receive(:response).and_return(response)
|
96
|
+
lambda { @base.create_friendship('billymeltdown') }.should raise_error(Twitter::AlreadyFollowing)
|
97
|
+
end
|
68
98
|
end
|
69
99
|
|
70
100
|
it "should be able to get single status" do
|
@@ -106,4 +136,4 @@ describe "Twitter::Base" do
|
|
106
136
|
@base.rate_limit_status.remaining_hits.should == 5
|
107
137
|
end
|
108
138
|
end
|
109
|
-
end
|
139
|
+
end
|
data/spec/cli/helper_spec.rb
CHANGED
@@ -8,6 +8,10 @@ def say(str)
|
|
8
8
|
puts str
|
9
9
|
end
|
10
10
|
|
11
|
+
class Tweet < OpenStruct
|
12
|
+
attr_accessor :id
|
13
|
+
end
|
14
|
+
|
11
15
|
describe Twitter::CLI::Helpers do
|
12
16
|
include Twitter::CLI::Helpers
|
13
17
|
|
@@ -15,21 +19,31 @@ describe Twitter::CLI::Helpers do
|
|
15
19
|
before do
|
16
20
|
Configuration.stub!(:[]=).and_return(true)
|
17
21
|
@collection = [
|
18
|
-
|
19
|
-
:
|
22
|
+
Tweet.new(
|
23
|
+
:id => 1,
|
24
|
+
:text => 'This is my long message that I want to see formatted ooooh so pretty with a few words on each line so it is easy to scan.',
|
20
25
|
:created_at => Time.mktime(2008, 5, 1, 10, 15, 00).strftime('%Y-%m-%d %H:%M:%S'),
|
21
|
-
:user
|
26
|
+
:user => OpenStruct.new(:screen_name => 'jnunemaker')
|
22
27
|
),
|
23
|
-
|
24
|
-
:
|
28
|
+
Tweet.new(
|
29
|
+
:id => 2,
|
30
|
+
:text => 'This is my long message that I want to see formatted ooooh so pretty with a.',
|
25
31
|
:created_at => Time.mktime(2008, 4, 1, 10, 15, 00).strftime('%Y-%m-%d %H:%M:%S'),
|
26
|
-
:user
|
32
|
+
:user => OpenStruct.new(:screen_name => 'danielmorrison')
|
27
33
|
)
|
28
34
|
]
|
29
35
|
end
|
30
36
|
|
31
37
|
specify "should properly format" do
|
32
|
-
|
38
|
+
stdout_for {
|
39
|
+
output_tweets(@collection)
|
40
|
+
}.should match(/with a few words[\w\W]*with a\./)
|
41
|
+
end
|
42
|
+
|
43
|
+
specify 'should format in reverse' do
|
44
|
+
stdout_for {
|
45
|
+
output_tweets(@collection, :reverse => true)
|
46
|
+
}.should match(/with a\.[\w\W]*with a few words/)
|
33
47
|
end
|
34
48
|
end
|
35
49
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<user>
|
3
|
+
<id>4243</id>
|
4
|
+
<name>John Nunemaker</name>
|
5
|
+
<screen_name>jnunemaker</screen_name>
|
6
|
+
<location>Indiana</location>
|
7
|
+
<description>Loves his wife, ruby, notre dame football and iu basketball</description>
|
8
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/52619256/ruby_enterprise_shirt_normal.jpg</profile_image_url>
|
9
|
+
<url>http://addictedtonew.com</url>
|
10
|
+
<protected>false</protected>
|
11
|
+
<followers_count>363</followers_count>
|
12
|
+
</user>
|
@@ -0,0 +1,147 @@
|
|
1
|
+
--- !map:Twitter::SearchResultInfo
|
2
|
+
results:
|
3
|
+
- !map:Twitter::SearchResult
|
4
|
+
text: "@jqr - wow. just really looked at httparty for first time - sweet! - have you been using that a lot?"
|
5
|
+
to_user_id: 176589
|
6
|
+
to_user: jqr
|
7
|
+
from_user: baldwindavid
|
8
|
+
id: 1073680192
|
9
|
+
from_user_id: 804487
|
10
|
+
iso_language_code: en
|
11
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/67146299/before_400_normal.jpg
|
12
|
+
created_at: Tue, 23 Dec 2008 04:20:12 +0000
|
13
|
+
- !map:Twitter::SearchResult
|
14
|
+
text: the httparty gem rocks my socks. no better way to consume web services in ruby.
|
15
|
+
to_user_id:
|
16
|
+
from_user: mildmojo
|
17
|
+
id: 1073135700
|
18
|
+
from_user_id: 2090305
|
19
|
+
iso_language_code: en
|
20
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/65215459/appicon_normal.png
|
21
|
+
created_at: Mon, 22 Dec 2008 22:20:43 +0000
|
22
|
+
- !map:Twitter::SearchResult
|
23
|
+
text: It's an HTTParty and everyone is invited!
|
24
|
+
to_user_id:
|
25
|
+
from_user: mypheme
|
26
|
+
id: 1067975762
|
27
|
+
from_user_id: 3067473
|
28
|
+
iso_language_code: en
|
29
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/67872558/Picture_3_normal.png
|
30
|
+
created_at: Fri, 19 Dec 2008 22:09:23 +0000
|
31
|
+
- !map:Twitter::SearchResult
|
32
|
+
text: dans la famille des clients http,vous connaissiez curb, httparty, mais connaissiez-vous httpclient ? http://dev.ctor.org/httpclient/
|
33
|
+
to_user_id:
|
34
|
+
from_user: rubyfrance
|
35
|
+
id: 1064812719
|
36
|
+
from_user_id: 70780
|
37
|
+
iso_language_code: fr
|
38
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/51884877/twitter_normal.png
|
39
|
+
created_at: Thu, 18 Dec 2008 12:46:27 +0000
|
40
|
+
- !map:Twitter::SearchResult
|
41
|
+
text: "@jnunemaker have you ever seen httparty get a Net::HTTPServerException: 411 "Length Required" back?"
|
42
|
+
to_user_id: 19106
|
43
|
+
to_user: jnunemaker
|
44
|
+
from_user: techpickles
|
45
|
+
id: 1064375973
|
46
|
+
from_user_id: 22902
|
47
|
+
iso_language_code: en
|
48
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/64410494/Photo_9_normal.jpg
|
49
|
+
created_at: Thu, 18 Dec 2008 05:24:23 +0000
|
50
|
+
- !map:Twitter::SearchResult
|
51
|
+
text: playing with the tumblr api, httparty style
|
52
|
+
to_user_id:
|
53
|
+
from_user: techpickles
|
54
|
+
id: 1064355666
|
55
|
+
from_user_id: 22902
|
56
|
+
iso_language_code: en
|
57
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/64410494/Photo_9_normal.jpg
|
58
|
+
created_at: Thu, 18 Dec 2008 05:07:59 +0000
|
59
|
+
- !map:Twitter::SearchResult
|
60
|
+
text: Testing from HTTParty, awesome ruby gem that allows for easy access to APIs over http.
|
61
|
+
to_user_id:
|
62
|
+
from_user: simonreed
|
63
|
+
id: 1063822669
|
64
|
+
from_user_id: 63911
|
65
|
+
iso_language_code: en
|
66
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/53963586/fu_normal.jpg
|
67
|
+
created_at: Wed, 17 Dec 2008 23:21:34 +0000
|
68
|
+
- !map:Twitter::SearchResult
|
69
|
+
text: It's an HTTParty and everyone is invited!
|
70
|
+
to_user_id:
|
71
|
+
from_user: bernsno
|
72
|
+
id: 1063277742
|
73
|
+
from_user_id: 1495935
|
74
|
+
iso_language_code: en
|
75
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/63820805/me_normal.gif
|
76
|
+
created_at: Wed, 17 Dec 2008 18:25:31 +0000
|
77
|
+
- !map:Twitter::SearchResult
|
78
|
+
text: "[ruby] Using Context and Stump to HTTParty like a Wufoo"
|
79
|
+
to_user_id:
|
80
|
+
from_user: rubymentary
|
81
|
+
id: 1062068801
|
82
|
+
from_user_id: 474717
|
83
|
+
iso_language_code: en
|
84
|
+
profile_image_url: http://static.twitter.com/images/default_profile_normal.png
|
85
|
+
created_at: Wed, 17 Dec 2008 03:37:00 +0000
|
86
|
+
- !map:Twitter::SearchResult
|
87
|
+
text: "net/http\xE3\x81\xAEwrapper\xE3\x81\xA0\xE3\x81\xA3\xE3\x81\x9F\xE3\x80\x82\xE3\x80\x82\xE3\x80\x82 > HTTParty re: http://ff.im/h1Dg"
|
88
|
+
to_user_id:
|
89
|
+
from_user: nahi
|
90
|
+
id: 1061821371
|
91
|
+
from_user_id: 36221
|
92
|
+
iso_language_code: "no"
|
93
|
+
profile_image_url: http://static.twitter.com/images/default_profile_normal.png
|
94
|
+
created_at: Wed, 17 Dec 2008 00:58:19 +0000
|
95
|
+
- !map:Twitter::SearchResult
|
96
|
+
text: Using HTTParty to wrap the Wufoo form submit API, as we are switching the Ordered List contact form to Wufoo.
|
97
|
+
to_user_id:
|
98
|
+
from_user: jnunemaker
|
99
|
+
id: 1061117717
|
100
|
+
from_user_id: 19106
|
101
|
+
iso_language_code: en
|
102
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/61024905/black250_normal.jpg
|
103
|
+
created_at: Tue, 16 Dec 2008 18:25:28 +0000
|
104
|
+
- !map:Twitter::SearchResult
|
105
|
+
text: Playing with HTTParty. Like it already. :)
|
106
|
+
to_user_id:
|
107
|
+
from_user: atog
|
108
|
+
id: 1058725999
|
109
|
+
from_user_id: 21795
|
110
|
+
iso_language_code: en
|
111
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/61430136/ikke_vierkant_normal.jpg
|
112
|
+
created_at: Mon, 15 Dec 2008 16:06:26 +0000
|
113
|
+
- !map:Twitter::SearchResult
|
114
|
+
text: HTTParty is like sweet candy...
|
115
|
+
to_user_id:
|
116
|
+
from_user: levicole
|
117
|
+
id: 1055553905
|
118
|
+
from_user_id: 111971
|
119
|
+
iso_language_code: en
|
120
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/24274692/Photo_2_normal.jpg
|
121
|
+
created_at: Sat, 13 Dec 2008 17:52:01 +0000
|
122
|
+
- !map:Twitter::SearchResult
|
123
|
+
text: "thinking httparty needs a bit of morph class generation magic: http://tinyurl.com/6774gz"
|
124
|
+
to_user_id:
|
125
|
+
from_user: delineator
|
126
|
+
id: 1054352107
|
127
|
+
from_user_id: 102024
|
128
|
+
iso_language_code: en
|
129
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/63867007/rob_64_64_normal.png
|
130
|
+
created_at: Fri, 12 Dec 2008 22:53:41 +0000
|
131
|
+
- !map:Twitter::SearchResult
|
132
|
+
text: To use HTTParty, or just net/http? I'm going to have to change some headers, which means digging around. Hrm.
|
133
|
+
to_user_id:
|
134
|
+
from_user: HibiscuS4
|
135
|
+
id: 1050622779
|
136
|
+
from_user_id: 8780
|
137
|
+
iso_language_code: en
|
138
|
+
profile_image_url: http://s3.amazonaws.com/twitter_production/profile_images/60311231/Photo_9_normal.jpg
|
139
|
+
created_at: Thu, 11 Dec 2008 04:13:06 +0000
|
140
|
+
since_id: 0
|
141
|
+
max_id: 1078578631
|
142
|
+
refresh_url: ?since_id=1078578631&q=httparty
|
143
|
+
results_per_page: 15
|
144
|
+
next_page: ?page=2&max_id=1078578631&q=httparty
|
145
|
+
completed_in: 0.018799
|
146
|
+
page: 1
|
147
|
+
query: httparty
|