bhauman-twroute 0.1.3 → 0.1.7
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/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
|