twitter4r 0.2.2 → 0.2.3

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.
@@ -36,7 +36,7 @@ class Twitter::Client
36
36
  # * <tt>Integer</tt> or <tt>Twitter::Message</tt> object when action is <tt>:delete</tt>. Will refer to the unique message ID to delete. When passing in an instance of <tt>Twitter::Message</tt> that Status will be
37
37
  #
38
38
  # <tt>user</tt> should be:
39
- # * <tt>Twitter::User</tt> or <tt>Integer</tt> object when <tt>action</tt> is <tt>:post</tt>.
39
+ # * <tt>Twitter::User</tt>, <tt>Integer</tt> or <tt>String</tt> object when <tt>action</tt> is <tt>:post</tt>. The <tt>Integer</tt> must be the unique ID of the Twitter user you wish to send the direct message to and any <tt>String</tt>s passed in must be the screen name of the user you wish to send the direct message to.
40
40
  # * totally ignore when <tt>action</tt> is <tt>:delete</tt>. It has no purpose in this use case scenario.
41
41
  #
42
42
  # Examples:
@@ -59,12 +59,17 @@ class Twitter::Client
59
59
  # is given. Valid actions are:
60
60
  # * +:post+
61
61
  # * +:delete+
62
+ #
63
+ # An <tt>ArgumentError</tt> is also raised when no user argument is
64
+ # supplied when <tt>action</tt> is +:post+.
62
65
  def message(action, value, user = nil)
63
66
  raise ArgumentError, "Invalid messaging action: #{action}" unless [:post, :delete].member?(action)
67
+ raise ArgumentError, "User argument must be supplied for :post case" if action.eql?(:post) and user.nil?
64
68
  uri = @@MESSAGING_URIS[action]
69
+ user = user.to_i if user and user.is_a?(Twitter::User)
65
70
  case action
66
71
  when :post
67
- response = http_connect({:text => value, :user => user.to_i, :source => @@config.source}.to_http_str) {|conn| create_http_post_request(uri) }
72
+ response = http_connect({:text => value, :user => user, :source => @@config.source}.to_http_str) {|conn| create_http_post_request(uri) }
68
73
  when :delete
69
74
  response = http_connect {|conn| create_http_delete_request(uri, :id => value.to_i) }
70
75
  end
@@ -18,8 +18,17 @@ class Twitter::Client
18
18
  # is given. Valid actions are:
19
19
  # * +:info+
20
20
  # * +:friends+
21
+ #
22
+ # +Note:+ You should not use this method to attempt to retrieve the
23
+ # authenticated user's followers. Please use any of the following
24
+ # ways of accessing this list:
25
+ # followers = client.my(:followers)
26
+ # OR
27
+ # followers = client.my(:info).followers
21
28
  def user(id, action = :info)
22
- raise ArgumentError, "Invalid user action: #{action}" unless @@USER_URIS.member?(action)
29
+ raise ArgumentError, "Invalid user action: #{action}" unless @@USER_URIS.keys.member?(action)
30
+ raise ArgumentError, "Unable to retrieve followers for user: #{id}" if action.eql?(:followers) and not id.eql?(@login)
31
+ id = id.to_i if id.is_a?(Twitter::User)
23
32
  response = http_connect {|conn| create_http_get_request(@@USER_URIS[action], :id => id) }
24
33
  bless_models(Twitter::User.unmarshal(response.body))
25
34
  end
@@ -39,8 +48,7 @@ class Twitter::Client
39
48
  def my(action)
40
49
  raise ArgumentError, "Invalid user action: #{action}" unless @@USER_URIS.keys.member?(action)
41
50
  response = http_connect {|conn| create_http_get_request(@@USER_URIS[action], :id => @login) }
42
- json = response.body
43
- users = Twitter::User.unmarshal(json)
51
+ users = Twitter::User.unmarshal(response.body)
44
52
  bless_models(users)
45
53
  end
46
54
  end
data/lib/twitter/model.rb CHANGED
@@ -83,7 +83,7 @@ module Twitter
83
83
  # If a model class doesn't have a @text attribute defined
84
84
  # the default Object#to_s will be returned as the result.
85
85
  def to_s
86
- self.respond_to(:text) ? @text : super.to_s
86
+ self.respond_to?(:text) ? @text : super.to_s
87
87
  end
88
88
 
89
89
  # Returns hash representation of model object instance.
@@ -132,7 +132,7 @@ module Twitter
132
132
  # Returns an Array of user objects that represents the authenticated
133
133
  # user's friends on Twitter.
134
134
  def followers
135
- @client.user(@id, :followers)
135
+ @client.my(:followers)
136
136
  end
137
137
 
138
138
  # Adds given user as a friend. Returns user object as given by
@@ -4,7 +4,7 @@
4
4
  module Twitter::Version #:nodoc:
5
5
  MAJOR = 0
6
6
  MINOR = 2
7
- REVISION = 2
7
+ REVISION = 3
8
8
  class << self
9
9
  # Returns X.Y.Z formatted version string
10
10
  def to_version
@@ -100,6 +100,18 @@ describe Twitter::Client, "#message" do
100
100
  }.should raise_error(ArgumentError)
101
101
  end
102
102
 
103
+ it "should raise an ArgumentError for :post case if user argument is not supplied" do
104
+ lambda {
105
+ @twitter.message(:post, @message)
106
+ }.should raise_error(ArgumentError)
107
+ end
108
+
109
+ it "should raise an ArgumentError for :post case if user argument is nil" do
110
+ lambda {
111
+ @twitter.message(:post, @message, nil)
112
+ }.should raise_error(ArgumentError)
113
+ end
114
+
103
115
  after(:each) do
104
116
  nilize(@twitter, @uris, @request, @response, @connection, @sender, @recipient, @message, @attributes)
105
117
  end
@@ -48,12 +48,12 @@ describe Twitter::Client, "#user(id, :info)" do
48
48
  end
49
49
 
50
50
  it "should bless model returned when giving numeric user id" do
51
- @twitter.should_receive(:bless_model).with(@user).and_return(@model)
51
+ @twitter.should_receive(:bless_model).with(@user).and_return(@user)
52
52
  @twitter.user(@id)
53
53
  end
54
54
 
55
55
  it "should bless model returned when giving screen name" do
56
- @twitter.should_receive(:bless_model).with(@user).and_return(@model)
56
+ @twitter.should_receive(:bless_model).with(@user).and_return(@user)
57
57
  @twitter.user(@screen_name)
58
58
  end
59
59
 
@@ -67,14 +67,60 @@ end
67
67
  describe Twitter::Client, "#user(id, :friends)" do
68
68
  before(:each) do
69
69
  @twitter = client_context
70
+ @id = 395784
71
+ @screen_name = 'cafe_paradiso'
72
+ @user = Twitter::User.new(
73
+ :id => @id,
74
+ :screen_name => @screen_name,
75
+ :location => 'Urbana, IL'
76
+ )
77
+ @json = JSON.unparse(@user.to_hash)
78
+ @request = mas_net_http_get(:basic_auth => nil)
79
+ @response = mas_net_http_response(:success, @json)
80
+ @connection = mas_net_http(@response)
81
+ @uris = Twitter::Client.class_eval("@@USER_URIS")
82
+ @twitter.stub!(:create_http_get_request).and_return(@request)
83
+ Twitter::User.stub!(:unmarshal).and_return(@user)
84
+ Net::HTTP.stub!(:new).and_return(@connection)
70
85
  end
71
86
 
72
- it "should " do
73
-
87
+ it "should create expected HTTP GET request when giving numeric user id" do
88
+ @twitter.should_receive(:create_http_get_request).with(@uris[:friends], {:id => @id}).and_return(@request)
89
+ @twitter.user(@id, :friends)
90
+ end
91
+
92
+ it "should invoke #to_i on Twitter::User objecct given" do
93
+ @user.should_receive(:to_i).and_return(@id)
94
+ @twitter.user(@user, :friends)
95
+ end
96
+
97
+ it "should create expected HTTP GET request when giving Twitter::User object" do
98
+ @twitter.should_receive(:create_http_get_request).with(@uris[:friends], {:id => @user.to_i}).and_return(@request)
99
+ @twitter.user(@user, :friends)
100
+ end
101
+
102
+ it "should create expected HTTP GET request when giving screen name" do
103
+ @twitter.should_receive(:create_http_get_request).with(@uris[:friends], {:id => @screen_name}).and_return(@request)
104
+ @twitter.user(@screen_name, :friends)
105
+ end
106
+
107
+ it "should bless model returned when giving numeric id" do
108
+ @twitter.should_receive(:bless_model).with(@user).and_return(@user)
109
+ @twitter.user(@id, :friends)
110
+ end
111
+
112
+ it "should bless model returned when giving Twitter::User object" do
113
+ @twitter.should_receive(:bless_model).with(@user).and_return(@user)
114
+ @twitter.user(@user, :friends)
115
+ end
116
+
117
+ it "should bless model returned when giving screen name" do
118
+ @twitter.should_receive(:bless_model).with(@user).and_return(@user)
119
+ @twitter.user(@screen_name, :friends)
74
120
  end
75
121
 
76
122
  after(:each) do
77
-
123
+ nilize(@request, @response, @connection, @twitter, @id, @screen_name, @user)
78
124
  end
79
125
  end
80
126
 
@@ -244,8 +244,8 @@ describe Twitter::User, "#followers" do
244
244
  @user.bless(@twitter)
245
245
  end
246
246
 
247
- it "should delegate to @client.user(@id, :followers)" do
248
- @twitter.should_receive(:user).with(@id, :followers)
247
+ it "should delegate to @client.my(:followers)" do
248
+ @twitter.should_receive(:my).with(:followers)
249
249
  @user.followers
250
250
  end
251
251
 
@@ -456,3 +456,33 @@ describe Twitter::User, "#defriend" do
456
456
  nilize(@twitter, @user, @friend)
457
457
  end
458
458
  end
459
+
460
+ describe Twitter::Status, "#to_s" do
461
+ before(:each) do
462
+ @text = 'Aloha'
463
+ @status = Twitter::Status.new(:text => @text)
464
+ end
465
+
466
+ it "should render text attribute" do
467
+ @status.to_s.should be(@text)
468
+ end
469
+
470
+ after(:each) do
471
+ nilize(@text, @status)
472
+ end
473
+ end
474
+
475
+ describe Twitter::Message, "#to_s" do
476
+ before(:each) do
477
+ @text = 'Aloha'
478
+ @message = Twitter::Message.new(:text => @text)
479
+ end
480
+
481
+ it "should render text attribute" do
482
+ @message.to_s.should be(@text)
483
+ end
484
+
485
+ after(:each) do
486
+ nilize(@text, @message)
487
+ end
488
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: twitter4r
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.2
7
- date: 2007-07-18 00:00:00 -05:00
6
+ version: 0.2.3
7
+ date: 2007-07-22 00:00:00 -05:00
8
8
  summary: A clean Twitter client API in pure Ruby. Will include Twitter add-ons also in Ruby.
9
9
  require_paths:
10
10
  - lib
@@ -55,7 +55,6 @@ files:
55
55
  - spec/twitter/console_spec.rb
56
56
  - spec/twitter/meta_spec.rb
57
57
  - spec/twitter/config_spec.rb
58
- - spec/twitter/deprecated_spec.rb
59
58
  - spec/twitter/client/timeline_spec.rb
60
59
  - spec/twitter/client/base_spec.rb
61
60
  - spec/twitter/client/status_spec.rb
@@ -1,177 +0,0 @@
1
- #describe "Twitter::Client#public_timeline" do
2
- # before(:each) do
3
- # @request = mas_net_http_get(:basic_auth => nil)
4
- # @response = mas_net_http_response
5
- #
6
- # @http = mas_net_http(@response)
7
- # @client = Twitter::Client.from_config 'config/twitter.yml'
8
- # end
9
- #
10
- # it "should delegate work to Twitter::Client#public(:public)" do
11
- # @client.should_receive(:timeline).with(:public).once
12
- # @client.public_timeline
13
- # end
14
- #end
15
-
16
- #describe "Twitter::Client#friend_timeline" do
17
- # before(:each) do
18
- # @request = mas_net_http_get(:basic_auth => nil)
19
- # @response = mas_net_http_response
20
- #
21
- # @http = mas_net_http(@response)
22
- # @client = Twitter::Client.from_config 'config/twitter.yml'
23
- # end
24
- #
25
- # it "should delegate work to Twitter::Client#public(:friends)" do
26
- # @client.should_receive(:timeline).with(:friends).once
27
- # @client.friend_timeline
28
- # end
29
- #end
30
-
31
- #describe "Twitter::Client#friend_statuses" do
32
- # before(:each) do
33
- # @request = mas_net_http_get(:basic_auth => nil)
34
- # @response = mas_net_http_response
35
- #
36
- # @http = mas_net_http(@response)
37
- # @client = Twitter::Client.from_config 'config/twitter.yml'
38
- # end
39
- #
40
- # it "should delegate work to Twitter::Client#public(:friends_statuses)" do
41
- # @client.should_receive(:timeline).with(:friends_statuses).once
42
- # @client.friend_statuses
43
- # end
44
- #end
45
-
46
- #describe "Twitter::Client#follower_statuses" do
47
- # before(:each) do
48
- # @request = mas_net_http_get(:basic_auth => nil)
49
- # @response = mas_net_http_response
50
- # @http = mas_net_http(@response)
51
- # @client = Twitter::Client.from_config 'config/twitter.yml'
52
- # end
53
- #
54
- # it "should delegate work to Twitter::Client#public(:followers)" do
55
- # @client.should_receive(:timeline).with(:followers).once
56
- # @client.follower_statuses
57
- # end
58
- #end
59
-
60
- #describe "Twitter::Client#timeline_request upon 200 HTTP response" do
61
- # before(:each) do
62
- # @request = mas_net_http_get :basic_auth => nil
63
- # @response = mas_net_http_response # defaults to :success
64
- #
65
- # @http = mas_net_http(@response)
66
- # @client = Twitter::Client.from_config 'config/twitter.yml'
67
- # @header = @client.send(:http_header)
68
- # @uris = Twitter::Client.class_eval("@@URIS")
69
- #
70
- # JSON.stub!(:parse).and_return({})
71
- # end
72
- #
73
- # it "should make GET HTTP request to appropriate URL" do
74
- # @uris.keys.each do |type|
75
- # Net::HTTP::Get.should_receive(:new).with(@uris[type], @header).and_return(@request)
76
- # @client.send(:timeline, type)
77
- # end
78
- # end
79
- #end
80
-
81
- #describe "Twitter::Client#timeline_request upon 403 HTTP response" do
82
- # before(:each) do
83
- # @request = mas_net_http_get :basic_auth => nil
84
- # @response = mas_net_http_response :not_authorized
85
- #
86
- # @http = mas_net_http(@response)
87
- # @client = Twitter::Client.from_config 'config/twitter.yml'
88
- # @header = @client.send(:http_header)
89
- # @uris = Twitter::Client.class_eval("@@URIS")
90
- # end
91
- #
92
- # it "should make GET HTTP request to appropriate URL" do
93
- # @uris.keys.each do |type|
94
- # lambda {
95
- # Net::HTTP::Get.should_receive(:new).with(@uris[type], @header).and_return(@request)
96
- # @client.send(:timeline, type)
97
- # }.should raise_error(Twitter::RESTError)
98
- # end
99
- # end
100
- #end
101
-
102
- #describe "Twitter::Client#timeline_request upon 500 HTTP response" do
103
- # before(:each) do
104
- # @request = mas_net_http_get(:basic_auth => nil)
105
- # @response = mas_net_http_response(:server_error)
106
- #
107
- # @http = mas_net_http(@response)
108
- # @client = Twitter::Client.from_config 'config/twitter.yml'
109
- # @header = @client.send(:http_header)
110
- # @uris = Twitter::Client.class_eval("@@URIS")
111
- # end
112
-
113
- # it "should make GET HTTP request to appropriate URL" do
114
- # @uris.keys.each do |type|
115
- # lambda do
116
- # Net::HTTP::Get.should_receive(:new).with(@uris[type], @header).and_return(@request)
117
- # @client.send(:timeline, type)
118
- # end.should raise_error(Twitter::RESTError)
119
- # end
120
- # end
121
- #end
122
-
123
- #describe "Twitter::Client#timeline_request upon 404 HTTP response" do
124
- # before(:each) do
125
- # @request = mas_net_http_get(:basic_auth => nil)
126
- # @response = mas_net_http_response(:file_not_found)
127
- # @http = mas_net_http(@response)
128
- # @client = Twitter::Client.from_config 'config/twitter.yml'
129
- # @header = @client.send(:http_header)
130
- # @uris = Twitter::Client.class_eval("@@URIS")
131
- # end
132
- #
133
- # it "should make GET HTTP request to appropriate URL" do
134
- # @uris.keys.each do |type|
135
- # lambda {
136
- # Net::HTTP::Get.should_receive(:new).with(@uris[type], @header).and_return(@request)
137
- # @client.send(:timeline, type)
138
- # }.should raise_error(Twitter::RESTError)
139
- # end
140
- # end
141
- #end
142
-
143
- #describe "Twitter::Client#timeline(:public)" do
144
- # before(:each) do
145
- # @host = 'twitter.com'
146
- # @port = 443
147
- # @protocol = :http
148
- # @proxy_host = 'myproxy.host'
149
- # @proxy_port = 8080
150
- #
151
- # Twitter::Client.configure do |conf|
152
- # conf.host = @host
153
- # conf.port = @port
154
- # conf.protocol = @protocol
155
- # conf.proxy_host = @proxy_host
156
- # conf.proxy_port = @proxy_port
157
- # end
158
- #
159
- # @request = mas_net_http_get(:basic_auth => nil)
160
- # @response = mas_net_http_response(:success, '[]')
161
- #
162
- # @http = mas_net_http(@response)
163
- # @client = Twitter::Client.from_config 'config/twitter.yml'
164
- # @login = @client.instance_eval("@login")
165
- # @password = @client.instance_eval("@password")
166
- # end
167
- #
168
- # it "should connect to the Twitter service via HTTP connection" do
169
- # Net::HTTP.should_receive(:new).with(@host, @port, @proxy_host, @proxy_port).once.and_return(@http)
170
- # @client.timeline(:public)
171
- # end
172
- #
173
- # it " should send HTTP Basic Authentication credentials" do
174
- # @request.should_receive(:basic_auth).with(@login, @password).once
175
- # @client.timeline(:public)
176
- # end
177
- #end