webco-tuiter 0.0.2 → 0.0.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.
- data/AUTHORS +9 -9
- data/CHANGELOG +36 -2
- data/Rakefile +9 -0
- data/lib/tuiter/client.rb +20 -1
- data/lib/tuiter/data/rate_limit.rb +2 -2
- data/test/macros/attr_accessor_macro.rb +1 -1
- data/test/unit/client_test.rb +46 -12
- metadata +2 -2
data/AUTHORS
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
Tuiter was design and developed by Manoel Lemos (manoel@lemos.net), to provide
|
1
|
+
Tuiter was design and developed by Manoel Lemos (manoel@lemos.net - http://www.github.com/mlemos), to provide
|
2
2
|
basic access to the Twitter API. It was developed for the experimental project
|
3
3
|
called Tuitersfera Brasil (http://tuitersfera.com.br), an application to
|
4
4
|
monitor the Twitter usage in Brazil.
|
5
5
|
|
6
|
-
Both projects were latter adopted by WebCo Internet (http://webcointernet.com).
|
6
|
+
Both projects were latter adopted by WebCo Internet (http://webcointernet.com - http://www.github.com/webco).
|
7
7
|
|
8
8
|
The authors and contributors of Tuiter are:
|
9
9
|
|
10
|
-
* Manoel Lemos (manoel@lemos.net) - initial work
|
11
|
-
* Celestino Gomes (tinorj@gmail.com)
|
12
|
-
* Leandro Silva (leandrodoze@gmail.com)
|
13
|
-
* Lucas Fais (lfais@webcointernet.com)
|
14
|
-
* Lucas Húngaro (lucashungaro@gmail.com)
|
15
|
-
* Luis Cipriani (lfcipriani@talleye.com)
|
16
|
-
* Luiz Rocha (lsdr@lsdr.net)
|
10
|
+
* Manoel Lemos (manoel@lemos.net - http://www.github.com/mlemos) - initial work
|
11
|
+
* Celestino Gomes (tinorj@gmail.com - http://www.github.com/tinogomes)
|
12
|
+
* Leandro Silva (leandrodoze@gmail.com - http://www.github.com/leandrosilva)
|
13
|
+
* Lucas Fais (lfais@webcointernet.com - http://www.github.com/lucasfais)
|
14
|
+
* Lucas Húngaro (lucashungaro@gmail.com - http://www.github.com/lucashungaro)
|
15
|
+
* Luis Cipriani (lfcipriani@talleye.com - http://www.github.com/lfcipriani)
|
16
|
+
* Luiz Rocha (lsdr@lsdr.net - http://www.github.com/lsdr)
|
17
17
|
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,37 @@
|
|
1
|
-
==
|
2
|
-
|
1
|
+
== v0.0.2
|
2
|
+
* Added github profile path on AUTHORS
|
3
|
+
* Bumping version, including direct message files
|
4
|
+
* Updating AUTHORS. Giving credit where is due
|
5
|
+
* Adding DirectMessage data structure and listing method. Bumping tiny version one up
|
6
|
+
* Fixing the installation instructions on the README file
|
7
|
+
* Refactoring client tests to use fakeweb and less expectations
|
8
|
+
* Tests for StatusBasic and Status
|
9
|
+
* Tests for User, UserBasic and UserExtended - 100% tests coverage
|
10
|
+
* Added rake tasks to execute rcov
|
11
|
+
* Adding some json fixtures for testing
|
12
|
+
* Fixing a false cognate on README
|
13
|
+
* Added initial tests
|
14
|
+
* Namespace done right
|
15
|
+
* Fixed requires definitely
|
16
|
+
* Fixed requires again
|
17
|
+
* Fixed requires
|
18
|
+
* Updating README
|
19
|
+
* Updating tuiter.gemspec
|
20
|
+
* Adding a rake task to publish tuiter on Rubyforge
|
21
|
+
* Added http proxy support to all operations
|
22
|
+
* Added check RUBY_PLATFORM because JRuby does not support native extensions
|
23
|
+
* Rakefile and gemspec updated, it should work fine now
|
24
|
+
* Trying to fix the gemspec
|
25
|
+
* Small fix on tuiter gemspec
|
26
|
+
* Adding the gemspec to allow Github to generate and publish a tuiter gem
|
27
|
+
* Adding the most simple and obvious example ever
|
28
|
+
* The most simple and basic example that could ever be
|
29
|
+
* Updating .gitignore
|
30
|
+
* Adding a README, just for kicks
|
31
|
+
* Moving the requires out of the client
|
32
|
+
* Cleaning up some stuff, organizing things, the plumbing
|
33
|
+
* Adding authors, license and changelog files
|
34
|
+
|
35
|
+
== v0.0.1
|
36
|
+
* Extracting tuiter from tuitersfera
|
3
37
|
|
data/Rakefile
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require "rake"
|
4
4
|
require "rake/testtask"
|
5
5
|
require "rake/rdoctask"
|
6
|
+
require 'rcov/rcovtask'
|
6
7
|
|
7
8
|
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].each do |req|
|
8
9
|
load req
|
@@ -128,5 +129,13 @@ task "publish" => "build" do
|
|
128
129
|
@rubyforge.add_release('tuiter', 'tuiter', "#{spec.version}", "#{spec.name}-#{spec.version}.gem")
|
129
130
|
end
|
130
131
|
|
132
|
+
desc "Rcov"
|
133
|
+
Rcov::RcovTask.new(:rcov) do |t|
|
134
|
+
t.pattern = ENV["FROM"] || FileList["test/**/*_test.rb"]
|
135
|
+
t.output_dir = "coverage"
|
136
|
+
t.rcov_opts = ["-x gem,TextMate", "--text-summary", "--html", "--charset UTF8"]
|
137
|
+
# t.rcov_opts = ["-x gem,TextMate", "--text-summary", "--html", "--charset UTF8"]
|
138
|
+
end
|
139
|
+
|
131
140
|
task :default => ["test"]
|
132
141
|
|
data/lib/tuiter/client.rb
CHANGED
@@ -24,7 +24,7 @@ module Tuiter
|
|
24
24
|
log("update() success: OK")
|
25
25
|
return res # OK
|
26
26
|
else
|
27
|
-
log("update() error: #{res.
|
27
|
+
log("update() error: #{res.to_s}")
|
28
28
|
res.error!
|
29
29
|
end
|
30
30
|
end
|
@@ -102,6 +102,25 @@ module Tuiter
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
def get_friends(options = {})
|
106
|
+
if options[:id]
|
107
|
+
query = "http://twitter.com/statuses/friends/#{options[:id]}.json"
|
108
|
+
else
|
109
|
+
query = "http://twitter.com/statuses/friends.json"
|
110
|
+
end
|
111
|
+
if options[:page]
|
112
|
+
params = "?page=#{options[:page]}"
|
113
|
+
else
|
114
|
+
params = ""
|
115
|
+
end
|
116
|
+
if res = request(query+params)
|
117
|
+
data = JSON.parse(res)
|
118
|
+
return data.map { |d| User.new(d) }
|
119
|
+
else
|
120
|
+
return nil
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
105
124
|
def get_replies(options = {})
|
106
125
|
query = "http://twitter.com/statuses/replies.json"
|
107
126
|
if options[:since]
|
@@ -10,8 +10,8 @@ module Tuiter
|
|
10
10
|
def initialize(data = nil)
|
11
11
|
unless data.nil?
|
12
12
|
@reset_time_in_seconds = Time.at(data["reset_time_in_seconds"].to_i)
|
13
|
-
@reset_time = Time.parse(data["reset_time"])
|
14
|
-
@reset_window = @reset_time - Time.now
|
13
|
+
@reset_time = Time.parse(data["reset_time"]) if data["reset_time"]
|
14
|
+
@reset_window = @reset_time - Time.now if @reset_time
|
15
15
|
@remaining_hits = data["remaining_hits"].to_i
|
16
16
|
@hourly_limit = data["hourly_limit"].to_i
|
17
17
|
end
|
@@ -15,7 +15,7 @@ class Test::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.should_load_attribute_on_initialize(klass, attributes, expected_value = "value", setter_value = expected_value)
|
18
|
-
|
18
|
+
attributes = [attributes] unless attributes.class == Array
|
19
19
|
attributes.each do |attribute|
|
20
20
|
should "load attribute '#{attribute}' on initialize" do
|
21
21
|
data = eval("{'#{attribute}' => #{setter_value.inspect}}")
|
data/test/unit/client_test.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../test_helper'
|
2
2
|
|
3
3
|
class ClientTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def self.fake_web_post_on_update(message = "Ok", http_response_status = 200)
|
6
|
+
FakeWeb.register_uri(:post, "http://twitter.com/statuses/update.json", :string => message, :status => http_response_status.to_s)
|
7
|
+
end
|
4
8
|
|
5
9
|
context "A valid Tuiter client" do
|
6
10
|
|
@@ -12,21 +16,51 @@ class ClientTest < Test::Unit::TestCase
|
|
12
16
|
|
13
17
|
context "posting data" do
|
14
18
|
setup do
|
15
|
-
@update_message = "I'm fine"
|
16
|
-
FakeWeb.register_uri(:post, "http://twitter.com/statuses/update.json", :string => @update_message, :status => "200")
|
17
19
|
end
|
18
20
|
|
19
|
-
|
20
|
-
# basic authentication and form data
|
21
|
-
Net::HTTP::Post.any_instance.expects(:basic_auth).with(@username, @password)
|
22
|
-
Net::HTTP::Post.any_instance.expects(:set_form_data).with('status' => @update_message, 'in_reply_to_status_id' => nil)
|
21
|
+
context "successfully" do
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
setup do
|
24
|
+
@update_message = "I'm fine"
|
25
|
+
FakeWeb.register_uri(:post, "http://twitter.com/statuses/update.json",
|
26
|
+
:string => @update_message,
|
27
|
+
:status => "200")
|
28
|
+
end
|
28
29
|
|
29
|
-
|
30
|
+
should "allow the user to post an update to Twitter" do
|
31
|
+
# basic authentication and form data
|
32
|
+
Net::HTTP::Post.any_instance.expects(:basic_auth).with(@username, @password)
|
33
|
+
Net::HTTP::Post.any_instance.expects(:set_form_data).with('status' => @update_message, 'in_reply_to_status_id' => nil)
|
34
|
+
|
35
|
+
@response = @client.update(@update_message)
|
36
|
+
|
37
|
+
assert_instance_of Net::HTTPOK, @response
|
38
|
+
end
|
39
|
+
|
40
|
+
end # context "successfully"
|
41
|
+
|
42
|
+
context "some error on request" do
|
43
|
+
setup do
|
44
|
+
@update_message = "I'm fine"
|
45
|
+
FakeWeb.register_uri(:post, "http://twitter.com/statuses/update.json",
|
46
|
+
:string => "503 Service unavailable",
|
47
|
+
:status => ["503", "Service unavailable"])
|
48
|
+
end
|
49
|
+
|
50
|
+
should "raise for http response status on 503" do
|
51
|
+
Net::HTTP::Post.any_instance.expects(:basic_auth).with(@username, @password)
|
52
|
+
Net::HTTP::Post.any_instance.expects(:set_form_data).with('status' => @update_message, 'in_reply_to_status_id' => nil)
|
53
|
+
assert_raises Net::HTTPFatalError do
|
54
|
+
@response = @client.update(@update_message)
|
55
|
+
end
|
56
|
+
# assert_instance_of Net::HTTPServiceUnavailable, @response
|
57
|
+
end
|
58
|
+
|
59
|
+
end # context "some error on request"
|
60
|
+
|
61
|
+
|
62
|
+
end # context "posting data"
|
30
63
|
|
31
|
-
|
64
|
+
|
65
|
+
end # context "A valid Tuiter client"
|
32
66
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webco-tuiter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manoel Lemos
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-04-
|
13
|
+
date: 2009-04-09 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|