bhauman-twroute 0.1.3 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +12 -5
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/app_generators/twroute/templates/test_helper.rb +26 -1
- data/bin/twroute_runner +2 -1
- data/bin/twroute_worker +2 -1
- data/lib/twroute/application/config.rb +13 -1
- data/lib/twroute/application/twrouter.rb +2 -0
- data/lib/twroute/application.rb +6 -0
- data/lib/twroute/requester/delayed.rb +21 -4
- data/test/delayed_request_test.rb +67 -0
- data/test/fixtures/non_twitter_response.yaml +27 -0
- data/test/fixtures/twitter_response.yaml +27 -0
- data/test/fixtures/twitter_response_bad_status.yaml +25 -0
- data/twroute.gemspec +13 -9
- metadata +10 -6
- data/bin/twroute_gen +0 -6
data/README.rdoc
CHANGED
@@ -10,7 +10,7 @@ targeted web app is out of service for a bit.
|
|
10
10
|
As a Rails developer the motivation to write this gem is because
|
11
11
|
I wanted a super simple way to write a twitter app where my app
|
12
12
|
can recieve messages from twitter over http and respond to the sender
|
13
|
-
by simply responding to the http request.
|
13
|
+
by simply responding to the http request.
|
14
14
|
|
15
15
|
In other words an ordinary Rails/Merb/Sinatra controller can recieve
|
16
16
|
a tweet and then reply to the sender by simply rendering a response.
|
@@ -140,7 +140,7 @@ First comment out all the tests except for the first one.
|
|
140
140
|
We are going to only work on this one and then repeat the process for
|
141
141
|
the other routes.
|
142
142
|
|
143
|
-
Open the +config+/+twroutes
|
143
|
+
Open the +config+/+twroutes+.+rb+ file in your editor of choice remove
|
144
144
|
or comment the exiting routes. So it should read something like this:
|
145
145
|
|
146
146
|
Twroute::Routes.draw do |map|
|
@@ -385,7 +385,7 @@ You can start and stop both the daemons using the +rake+ +twroute+:+start+ and
|
|
385
385
|
=== No output
|
386
386
|
|
387
387
|
You can check that your Twitter stream request is functioning by
|
388
|
-
temporarily making a catchall route at the end of
|
388
|
+
temporarily making a catchall route at the end of your routes like so:
|
389
389
|
|
390
390
|
map.regex( { :match_all_tweets => /.*/ }, '/badshot/create' )
|
391
391
|
|
@@ -393,6 +393,15 @@ This will force all tweets from the stream to be sent to your app.
|
|
393
393
|
This is very useful to verify that tweets are coming down and going
|
394
394
|
through the system.
|
395
395
|
|
396
|
+
== Responses will be Tweeted!
|
397
|
+
|
398
|
+
When your web app responds with a 200 status and with the
|
399
|
+
+ContentType+ header set to +text+/+twitter+ Twroute will tweet the response.
|
400
|
+
|
401
|
+
It won't respond to the sender. It will simply tweet the response. So
|
402
|
+
if you want to respond you need to specify the @+user+ at the
|
403
|
+
beginning of the tweet.
|
404
|
+
|
396
405
|
== Monit and God
|
397
406
|
|
398
407
|
Don't forget to setup either Monit, God or some other server process
|
@@ -400,8 +409,6 @@ monitor because Twitter reserves the right to close the connection
|
|
400
409
|
whenever they want. I would say that it's fairly safe to simply
|
401
410
|
restart the daemons periodically as well.
|
402
411
|
|
403
|
-
|
404
|
-
|
405
412
|
== License
|
406
413
|
|
407
414
|
(The MIT License)
|
data/Rakefile
CHANGED
@@ -15,13 +15,14 @@ begin
|
|
15
15
|
gem.executables = ['twroute', 'twroute_runner', 'twroute_worker']
|
16
16
|
gem.add_dependency('activerecord', '>= 2.1.0')
|
17
17
|
gem.add_dependency('tobi-delayed_job', '>= 1.7.0')
|
18
|
-
gem.add_dependency('brianmario-yajl-ruby', '
|
18
|
+
gem.add_dependency('brianmario-yajl-ruby', '= 0.5.12')
|
19
19
|
gem.add_dependency('daemons', '>= 1.0.10')
|
20
20
|
gem.add_dependency('rubigen', '>= 1.5.2')
|
21
21
|
gem.add_dependency('thoughtbot-shoulda', '>= 2.10.1')
|
22
22
|
gem.add_dependency('mhennemeyer-matchy', '>= 0.3.3')
|
23
23
|
gem.add_dependency('jeremymcanally-stump', '>= 0.0.2')
|
24
|
-
gem.add_dependency('
|
24
|
+
# gem.add_dependency('sqlite3-ruby', '>= 2.2.3')
|
25
|
+
gem.add_dependency('hayesdavis-grackle', '>= 0.1.4')
|
25
26
|
end
|
26
27
|
|
27
28
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
@@ -11,11 +11,36 @@ require 'twroute'
|
|
11
11
|
|
12
12
|
class Test::Unit::TestCase
|
13
13
|
def self.should_route_to(tweet, path)
|
14
|
-
|
14
|
+
@@counter ||= 0
|
15
|
+
@@counter += 1
|
16
|
+
should "route to #{path}, #{@@counter}" do
|
15
17
|
dispatcher = ::Twroute::Dispatcher.new({ :host => 'test_host.com'}, *::Twroute::Routes.routes)
|
16
18
|
route = dispatcher.find_route({ :text => tweet})
|
17
19
|
val = route ? route.path : nil
|
18
20
|
val.should == path
|
19
21
|
end
|
20
22
|
end
|
23
|
+
|
24
|
+
def self.should_not_route_to(tweet, path)
|
25
|
+
@@counter ||= 0
|
26
|
+
@@counter += 1
|
27
|
+
should "not route to #{path}, #{@@counter}" do
|
28
|
+
dispatcher = ::Twroute::Dispatcher.new({ :host => 'test_host.com'}, *::Twroute::Routes.routes)
|
29
|
+
route = dispatcher.find_route({ :text => tweet})
|
30
|
+
val = route ? route.path : nil
|
31
|
+
val.should_not == path
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.hash_key_should_have_value(tweet, key, value)
|
36
|
+
@@counter ||= 0
|
37
|
+
@@counter += 1
|
38
|
+
should "have value #{value} for key #{key}, #{@@counter}" do
|
39
|
+
dispatcher = ::Twroute::Dispatcher.new({ :host => 'test_host.com'}, *::Twroute::Routes.routes)
|
40
|
+
route = dispatcher.find_route({ :text => tweet})
|
41
|
+
post_args = route ? route.get_post_args : nil
|
42
|
+
val = post_args ? post_args['sender[' + key.to_s + ']'] : nil
|
43
|
+
val.should == value
|
44
|
+
end
|
45
|
+
end
|
21
46
|
end
|
data/bin/twroute_runner
CHANGED
@@ -5,7 +5,8 @@ require 'twroute'
|
|
5
5
|
require 'twroute/application'
|
6
6
|
|
7
7
|
Daemons.run_proc('twroute_runner.rb', :dir_mode => :normal, :dir => 'log') do
|
8
|
-
ActiveRecord::Base.logger = Logger.new(File.open(File.join(::Twroute::Application.root_dir, 'log/database.log'), 'a'))
|
8
|
+
ActiveRecord::Base.logger = Logger.new(File.open(File.join(::Twroute::Application.root_dir, 'log/database.log'), 'a'))
|
9
|
+
Twroute::Application.logger = Logger.new(File.open(File.join(::Twroute::Application.root_dir, 'log/twroute.log'), 'a'))
|
9
10
|
Twroute::Application.run
|
10
11
|
end
|
11
12
|
|
data/bin/twroute_worker
CHANGED
@@ -5,7 +5,8 @@ require 'twroute'
|
|
5
5
|
require 'twroute/application'
|
6
6
|
|
7
7
|
Daemons.run_proc('twroute_worker.rb', :dir_mode => :normal, :dir => 'log') do
|
8
|
-
ActiveRecord::Base.logger = Logger.new(File.open(File.join(::Twroute::Application.root_dir, 'log/delayed.log'), 'a'))
|
8
|
+
ActiveRecord::Base.logger = Logger.new(File.open(File.join(::Twroute::Application.root_dir, 'log/delayed.log'), 'a'))
|
9
|
+
Twroute::Application.logger = Logger.new(File.open(File.join(::Twroute::Application.root_dir, 'log/twroute.log'), 'a'))
|
9
10
|
::Delayed::Worker.new(:min_priority => ENV['MIN_PRIORITY'],
|
10
11
|
:max_priority => ENV['MAX_PRIORITY']).start
|
11
12
|
end
|
@@ -14,7 +14,19 @@ module Twroute
|
|
14
14
|
end
|
15
15
|
def self.root_dir=(root)
|
16
16
|
@@root_dir = root
|
17
|
-
end
|
17
|
+
end
|
18
|
+
def self.twitter_client
|
19
|
+
@@twitter_client
|
20
|
+
end
|
21
|
+
def self.twitter_client=(grackle_client)
|
22
|
+
@@twitter_client = grackle_client
|
23
|
+
end
|
24
|
+
def self.logger
|
25
|
+
@@logger
|
26
|
+
end
|
27
|
+
def self.logger=(logger)
|
28
|
+
@@logger = logger
|
29
|
+
end
|
18
30
|
class Config
|
19
31
|
def self.load_config(file)
|
20
32
|
Application.config = self.open_struct(YAML.load_file(file))
|
data/lib/twroute/application.rb
CHANGED
@@ -5,6 +5,12 @@ require File.join(Dir.pwd, 'config', 'twroutes.rb')
|
|
5
5
|
require 'twroute/application/config'
|
6
6
|
::Twroute::Application::Config.load_config(File.join(Dir.pwd, 'config', 'config.yml'))
|
7
7
|
::Twroute::Application.root_dir = Dir.pwd
|
8
|
+
require 'grackle'
|
9
|
+
::Twroute::Application.twitter_client = Grackle::Client.new(:auth => {
|
10
|
+
:type =>:basic,
|
11
|
+
:username => ::Twroute::Application.config.twitter.user,
|
12
|
+
:password => ::Twroute::Application.config.twitter.password
|
13
|
+
})
|
8
14
|
|
9
15
|
# this pulls in delayed job and is dependant on the config having been read
|
10
16
|
require 'twroute/application/twrouter'
|
@@ -1,7 +1,5 @@
|
|
1
|
-
require 'twroute/requester/delayed/db_connection'
|
2
|
-
require 'delayed_job'
|
3
|
-
|
4
1
|
require 'net/http'
|
2
|
+
|
5
3
|
module Twroute
|
6
4
|
module Requester
|
7
5
|
|
@@ -14,7 +12,26 @@ module Twroute
|
|
14
12
|
class DelayedRequest < Struct.new(:uri, :post_args)
|
15
13
|
def perform
|
16
14
|
response = Net::HTTP.post_form(uri, post_args)
|
17
|
-
|
15
|
+
do_response(response)
|
16
|
+
response
|
17
|
+
end
|
18
|
+
|
19
|
+
def do_response(response)
|
20
|
+
if(is_twitter_response?(response))
|
21
|
+
tweet_it(response.body)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def tweet_it( tweet )
|
26
|
+
if tweet
|
27
|
+
::Twroute::Application.twitter_client.statuses.update! :status => tweet[0,139]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def is_twitter_response?(response)
|
32
|
+
!!(response && response.is_a?(Net::HTTPOK) && response.header['content-type'].match( /text\/twitter/ ))
|
33
|
+
end
|
34
|
+
|
18
35
|
end
|
19
36
|
|
20
37
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'test_helper.rb'
|
2
|
+
require 'twroute/requester/delayed'
|
3
|
+
|
4
|
+
|
5
|
+
class Net::HTTP
|
6
|
+
def self._testing_response_fixture=(x)
|
7
|
+
@@testing_response = YAML.load_file(File.join(File.dirname(__FILE__), 'fixtures', x + '.yaml'))
|
8
|
+
end
|
9
|
+
|
10
|
+
def self._testing_response_fixture
|
11
|
+
@@testing_response
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.post_form(uri, post_args)
|
15
|
+
self._testing_response_fixture
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Twroute::Requester::DelayedRequest
|
20
|
+
attr_accessor :tweet
|
21
|
+
def tweet_it(tweet)
|
22
|
+
self.tweet = tweet
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class DelayedRequestTest < Test::Unit::TestCase
|
27
|
+
context "with a url" do
|
28
|
+
setup do
|
29
|
+
@delayed = ::Twroute::Requester::DelayedRequest.new(URI.parse('http://localhost:3000/tweets.twitter'), { :some_arg => 'true' })
|
30
|
+
Net::HTTP._testing_response_fixture = 'twitter_response'
|
31
|
+
end
|
32
|
+
|
33
|
+
should "make a request" do
|
34
|
+
resp = @delayed.perform
|
35
|
+
resp.should_not be_nil
|
36
|
+
resp.body.should == 'good job josie'
|
37
|
+
resp.header['content-type'].match( /text\/twitter/ ).should_not be_nil
|
38
|
+
resp.header['content-type'].match( /text\/html/ ).should be_nil
|
39
|
+
@delayed.tweet.should == 'good job josie'
|
40
|
+
end
|
41
|
+
|
42
|
+
should "be able to tell if it is twitter response" do
|
43
|
+
resp = @delayed.perform
|
44
|
+
@delayed.is_twitter_response?(resp).should == true
|
45
|
+
Net::HTTP._testing_response_fixture = 'non_twitter_response'
|
46
|
+
resp = @delayed.perform
|
47
|
+
@delayed.is_twitter_response?(resp).should == false
|
48
|
+
end
|
49
|
+
|
50
|
+
should "not tweet if not a twitter response" do
|
51
|
+
Net::HTTP._testing_response_fixture = 'non_twitter_response'
|
52
|
+
@delayed.tweet.should be_nil
|
53
|
+
resp = @delayed.perform
|
54
|
+
@delayed.is_twitter_response?(resp).should == false
|
55
|
+
@delayed.tweet.should be_nil
|
56
|
+
end
|
57
|
+
|
58
|
+
should "not tweet if a twitter response has a bad status" do
|
59
|
+
Net::HTTP._testing_response_fixture = 'twitter_response_bad_status'
|
60
|
+
@delayed.tweet.should be_nil
|
61
|
+
resp = @delayed.perform
|
62
|
+
@delayed.is_twitter_response?(resp).should == false
|
63
|
+
@delayed.tweet.should be_nil
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
--- !ruby/object:Net::HTTPOK
|
2
|
+
body: <html></html>
|
3
|
+
body_exist: true
|
4
|
+
code: "200"
|
5
|
+
header:
|
6
|
+
cache-control:
|
7
|
+
- private, max-age=0, must-revalidate
|
8
|
+
connection:
|
9
|
+
- Keep-Alive
|
10
|
+
etag:
|
11
|
+
- "\"fa04cb9a5611a014eb15c2c6c5ca2ff0\""
|
12
|
+
content-type:
|
13
|
+
- text/html; charset=utf-8
|
14
|
+
date:
|
15
|
+
- Sun, 16 Aug 2009 19:20:20 GMT
|
16
|
+
x-runtime:
|
17
|
+
- "29"
|
18
|
+
server:
|
19
|
+
- WEBrick/1.3.1 (Ruby/1.8.6/2007-09-24)
|
20
|
+
set-cookie:
|
21
|
+
- _twroute_app_session=BAh7BzoPc2Vzc2lvbl9pZCIlNTNiNmVmNWRkYzc3MjI2YWI5MjkxYmMyZDkzOTEzMzIiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlIiRUd2VldCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQuBjoKQHVzZWR7BjsHRg%3D%3D--e4b177a06966db7f3bbe061f3a5dd89bd43cd358; path=/; HttpOnly
|
22
|
+
content-length:
|
23
|
+
- "14"
|
24
|
+
http_version: "1.1"
|
25
|
+
message: "OK "
|
26
|
+
read: true
|
27
|
+
socket:
|
@@ -0,0 +1,27 @@
|
|
1
|
+
--- !ruby/object:Net::HTTPOK
|
2
|
+
body: good job josie
|
3
|
+
body_exist: true
|
4
|
+
code: "200"
|
5
|
+
header:
|
6
|
+
cache-control:
|
7
|
+
- private, max-age=0, must-revalidate
|
8
|
+
connection:
|
9
|
+
- Keep-Alive
|
10
|
+
etag:
|
11
|
+
- "\"fa04cb9a5611a014eb15c2c6c5ca2ff0\""
|
12
|
+
content-type:
|
13
|
+
- text/twitter; charset=utf-8
|
14
|
+
date:
|
15
|
+
- Sun, 16 Aug 2009 19:20:20 GMT
|
16
|
+
x-runtime:
|
17
|
+
- "29"
|
18
|
+
server:
|
19
|
+
- WEBrick/1.3.1 (Ruby/1.8.6/2007-09-24)
|
20
|
+
set-cookie:
|
21
|
+
- _twroute_app_session=BAh7BzoPc2Vzc2lvbl9pZCIlNTNiNmVmNWRkYzc3MjI2YWI5MjkxYmMyZDkzOTEzMzIiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlIiRUd2VldCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQuBjoKQHVzZWR7BjsHRg%3D%3D--e4b177a06966db7f3bbe061f3a5dd89bd43cd358; path=/; HttpOnly
|
22
|
+
content-length:
|
23
|
+
- "14"
|
24
|
+
http_version: "1.1"
|
25
|
+
message: "OK "
|
26
|
+
read: true
|
27
|
+
socket:
|
@@ -0,0 +1,25 @@
|
|
1
|
+
!ruby/object:Net::HTTPClientError
|
2
|
+
body: good job josie
|
3
|
+
body_exist: true
|
4
|
+
code: "422"
|
5
|
+
header:
|
6
|
+
cache-control:
|
7
|
+
- no-cache
|
8
|
+
connection:
|
9
|
+
- Keep-Alive
|
10
|
+
content-type:
|
11
|
+
- text/twitter; charset=utf-8
|
12
|
+
date:
|
13
|
+
- Sun, 16 Aug 2009 20:20:57 GMT
|
14
|
+
x-runtime:
|
15
|
+
- "34"
|
16
|
+
server:
|
17
|
+
- WEBrick/1.3.1 (Ruby/1.8.6/2007-09-24)
|
18
|
+
set-cookie:
|
19
|
+
- _twroute_app_session=BAh7BzoPc2Vzc2lvbl9pZCIlYzAwY2Q5NDM1NDIzNGUyYWI0ZDRkZDNiOTg2ODM4NWYiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlIiRUd2VldCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQuBjoKQHVzZWR7BjsHRg%3D%3D--da5f07b30f227e21bd6131185c7962154b0cc091; path=/; HttpOnly
|
20
|
+
content-length:
|
21
|
+
- "14"
|
22
|
+
http_version: "1.1"
|
23
|
+
message: ""
|
24
|
+
read: true
|
25
|
+
socket:
|
data/twroute.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{twroute}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.7"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["bhauman"]
|
9
|
-
s.date = %q{2009-08-
|
9
|
+
s.date = %q{2009-08-25}
|
10
10
|
s.description = %q{Twroute listens for Twitter updates and redirects them to HTTP post requests}
|
11
11
|
s.email = %q{bhauman@gmail.com}
|
12
12
|
s.executables = ["twroute", "twroute_runner", "twroute_worker"]
|
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
|
|
26
26
|
"app_generators/twroute/templates/twroutes_test.rb",
|
27
27
|
"app_generators/twroute/twroute_generator.rb",
|
28
28
|
"bin/twroute",
|
29
|
-
"bin/twroute_gen",
|
30
29
|
"bin/twroute_runner",
|
31
30
|
"bin/twroute_worker",
|
32
31
|
"example_app/Rakefile",
|
@@ -53,8 +52,12 @@ Gem::Specification.new do |s|
|
|
53
52
|
"lib/twroute/tweet_route.rb",
|
54
53
|
"lib/twroute/tweeter.rb",
|
55
54
|
"test/config_test.rb",
|
55
|
+
"test/delayed_request_test.rb",
|
56
56
|
"test/dispatcher_test.rb",
|
57
57
|
"test/fixtures/config.yml",
|
58
|
+
"test/fixtures/non_twitter_response.yaml",
|
59
|
+
"test/fixtures/twitter_response.yaml",
|
60
|
+
"test/fixtures/twitter_response_bad_status.yaml",
|
58
61
|
"test/reqex_parser_test.rb",
|
59
62
|
"test/routes_test.rb",
|
60
63
|
"test/tags_parser_test.rb",
|
@@ -75,6 +78,7 @@ Gem::Specification.new do |s|
|
|
75
78
|
s.summary = %q{Twroute listens for Twitter updates and redirects them to HTTP post requests}
|
76
79
|
s.test_files = [
|
77
80
|
"test/config_test.rb",
|
81
|
+
"test/delayed_request_test.rb",
|
78
82
|
"test/dispatcher_test.rb",
|
79
83
|
"test/reqex_parser_test.rb",
|
80
84
|
"test/routes_test.rb",
|
@@ -95,33 +99,33 @@ Gem::Specification.new do |s|
|
|
95
99
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
96
100
|
s.add_runtime_dependency(%q<activerecord>, [">= 2.1.0"])
|
97
101
|
s.add_runtime_dependency(%q<tobi-delayed_job>, [">= 1.7.0"])
|
98
|
-
s.add_runtime_dependency(%q<brianmario-yajl-ruby>, ["
|
102
|
+
s.add_runtime_dependency(%q<brianmario-yajl-ruby>, ["= 0.5.12"])
|
99
103
|
s.add_runtime_dependency(%q<daemons>, [">= 1.0.10"])
|
100
104
|
s.add_runtime_dependency(%q<rubigen>, [">= 1.5.2"])
|
101
105
|
s.add_runtime_dependency(%q<thoughtbot-shoulda>, [">= 2.10.1"])
|
102
106
|
s.add_runtime_dependency(%q<mhennemeyer-matchy>, [">= 0.3.3"])
|
103
107
|
s.add_runtime_dependency(%q<jeremymcanally-stump>, [">= 0.0.2"])
|
104
|
-
s.add_runtime_dependency(%q<
|
108
|
+
s.add_runtime_dependency(%q<hayesdavis-grackle>, [">= 0.1.4"])
|
105
109
|
else
|
106
110
|
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
107
111
|
s.add_dependency(%q<tobi-delayed_job>, [">= 1.7.0"])
|
108
|
-
s.add_dependency(%q<brianmario-yajl-ruby>, ["
|
112
|
+
s.add_dependency(%q<brianmario-yajl-ruby>, ["= 0.5.12"])
|
109
113
|
s.add_dependency(%q<daemons>, [">= 1.0.10"])
|
110
114
|
s.add_dependency(%q<rubigen>, [">= 1.5.2"])
|
111
115
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 2.10.1"])
|
112
116
|
s.add_dependency(%q<mhennemeyer-matchy>, [">= 0.3.3"])
|
113
117
|
s.add_dependency(%q<jeremymcanally-stump>, [">= 0.0.2"])
|
114
|
-
s.add_dependency(%q<
|
118
|
+
s.add_dependency(%q<hayesdavis-grackle>, [">= 0.1.4"])
|
115
119
|
end
|
116
120
|
else
|
117
121
|
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
118
122
|
s.add_dependency(%q<tobi-delayed_job>, [">= 1.7.0"])
|
119
|
-
s.add_dependency(%q<brianmario-yajl-ruby>, ["
|
123
|
+
s.add_dependency(%q<brianmario-yajl-ruby>, ["= 0.5.12"])
|
120
124
|
s.add_dependency(%q<daemons>, [">= 1.0.10"])
|
121
125
|
s.add_dependency(%q<rubigen>, [">= 1.5.2"])
|
122
126
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 2.10.1"])
|
123
127
|
s.add_dependency(%q<mhennemeyer-matchy>, [">= 0.3.3"])
|
124
128
|
s.add_dependency(%q<jeremymcanally-stump>, [">= 0.0.2"])
|
125
|
-
s.add_dependency(%q<
|
129
|
+
s.add_dependency(%q<hayesdavis-grackle>, [">= 0.1.4"])
|
126
130
|
end
|
127
131
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bhauman-twroute
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bhauman
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-25 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
version_requirement:
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - "
|
41
|
+
- - "="
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: 0.5.12
|
44
44
|
version:
|
@@ -93,14 +93,14 @@ dependencies:
|
|
93
93
|
version: 0.0.2
|
94
94
|
version:
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
96
|
+
name: hayesdavis-grackle
|
97
97
|
type: :runtime
|
98
98
|
version_requirement:
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.1.4
|
104
104
|
version:
|
105
105
|
description: Twroute listens for Twitter updates and redirects them to HTTP post requests
|
106
106
|
email: bhauman@gmail.com
|
@@ -125,7 +125,6 @@ files:
|
|
125
125
|
- app_generators/twroute/templates/twroutes_test.rb
|
126
126
|
- app_generators/twroute/twroute_generator.rb
|
127
127
|
- bin/twroute
|
128
|
-
- bin/twroute_gen
|
129
128
|
- bin/twroute_runner
|
130
129
|
- bin/twroute_worker
|
131
130
|
- example_app/Rakefile
|
@@ -152,8 +151,12 @@ files:
|
|
152
151
|
- lib/twroute/tweet_route.rb
|
153
152
|
- lib/twroute/tweeter.rb
|
154
153
|
- test/config_test.rb
|
154
|
+
- test/delayed_request_test.rb
|
155
155
|
- test/dispatcher_test.rb
|
156
156
|
- test/fixtures/config.yml
|
157
|
+
- test/fixtures/non_twitter_response.yaml
|
158
|
+
- test/fixtures/twitter_response.yaml
|
159
|
+
- test/fixtures/twitter_response_bad_status.yaml
|
157
160
|
- test/reqex_parser_test.rb
|
158
161
|
- test/routes_test.rb
|
159
162
|
- test/tags_parser_test.rb
|
@@ -194,6 +197,7 @@ specification_version: 2
|
|
194
197
|
summary: Twroute listens for Twitter updates and redirects them to HTTP post requests
|
195
198
|
test_files:
|
196
199
|
- test/config_test.rb
|
200
|
+
- test/delayed_request_test.rb
|
197
201
|
- test/dispatcher_test.rb
|
198
202
|
- test/reqex_parser_test.rb
|
199
203
|
- test/routes_test.rb
|